CQL(Clinical Query Language) 참조
CQL(Clinical Query Language)을 사용하여 Veeva 임상 데이터베이스(CDB)의 임상 데이터에 액세스하고 이를 검색하며 이와 상호 작용할 수 있습니다. 이 가이드에서는 CQL을 가장 잘 활용하는 방법에 대한 세부 정보를 제공하고 구문, 구조, 절 및 연산자를 간략하게 설명합니다. CQL 쿼리는 SQL(Structured Query Language)과 많은 구문 요소를 공유하지만, CQL 문을 사용하면 간소화된 임상 중심 구문을 사용하여 특히 EDC 데이터에 대한 쿼리를 수행할 수 있습니다.
가용성: 임상 데이터베이스(CDB)는 CDB 라이선스 보유자만 사용할 수 있습니다. 자세한 내용은 Veeva 서비스 담당자에게 문의하십시오.
CDB 워크벤치에서 데이터를 쿼리하면 FROM 절에서 쿼리할 개체, SELECT 절에서 검색할 필드 및 (WHERE 절에서) 적용할 선택적 필터를 지정하는 CQL 문을 전달합니다.
다음 예시 쿼리는 Cholecap 2019 Phase 1 스터디의 인구 통계 및 포함 기준 폼에서 모든 데이터 항목을 반환합니다.
SELECT * FROM F.Demographics, F.Inclusion_Criteria
CQL의 임상적 컨텍스트
CQL은 일반적인 임상 데이터 패턴과 관계를 알고 있습니다. 이 "컨텍스트"는 SQL과 같은 범용 쿼리 언어보다 간단한 언어 구문을 제공합니다. CQL은 다음과 같은 사전 정의된 개체 및 관계를 알고 있습니다.
컨텍스트 요소 | 선택 | 예시 |
---|---|---|
스터디 | 모든 임상 데이터는 사전 정의된 시점 및 데이터 구조와 해당 데이터를 수집, 검토, 정리 및 잠그기 위한 사전 정의된 워크플로가 있는 스터디의 컨텍스트 내에서 수집됩니다. |
IMG-0314-A, TEL2019-1 |
사이트(Site) | 임상 데이터가 수집되는 사이트 |
101 |
국가 | 사이트가 위치한 국가(Vault EDC의 스터디 국가 개체로 표시됨) |
미국, 영국 |
대상자 | 임상 시험 내의 모든 임상 데이터는 해당 스터디에 등록된 대상자에 대해 수집됩니다. |
1001, 1002 |
이벤트 | 모든 데이터는 특정 수집 지점의 컨텍스트 내에서 수집됩니다. 이 수집 지점은 "이벤트"입니다. "방문"에 해당하는 경우가 많습니다. |
등록 방문, 방문 1, 방문 2 |
헤더 | 지정된 수집 지점(이벤트)에서 지정된 대상자에 대해 수집된 모든 폼은 동일한 컨텍스트를 공유합니다. 헤더를 사용하여 이 컨텍스트를 쿼리할 수 있습니다. 헤더는 워크벤치의 개체 계층 구조에서 폼 위에 있는 모든 컨텍스트 개체를 빠르게 반환할 수 있습니다. |
@HDR |
폼(Form) | 폼에 수집된 데이터 항목의 컬렉션 |
활력징후, 병력 |
데이터 항목 | 스터디의 특정 수집 지점에서 대상자에 대해 수집된 특정 데이터 요소(항목) |
생년월일, 최대혈압, 눈 색깔 |
속성 | 위에 나열된 모든 컨텍스트 요소에는 요소의 다양한 측면을 설명하는 추가 속성이 있습니다. 이러한 속성은 개체 상태나 항목 이름 또는 마지막 수정 날짜와 같은 기본 정보를 나타낼 수 있습니다. 요소의 대부분의 속성은 function()에 의해 반환되지만 이름, ID 등과 같은 일부 기본 속성은 점 표기법을 사용하여 반환할 수 있습니다. |
잠김(이벤트 1), Item1.ID |
쿼리 가능한 데이터
CQL에서 쿼리를 생성하려면 쿼리 가능한 데이터와 해당 데이터의 구조를 이해하는 것이 중요합니다. DESCRIBE
및 SHOW
키워드를 사용하여 CQL로 쿼리 가능한 데이터 목록을 반환할 수 있습니다.
Describe
DESCRIBE
키워드로 쿼리를 생성하여 스키마에 대한 세부 정보를 반환할 수 있습니다.
CQL은 다음 데이터 요소에 대해 DESCRIBE
를 지원합니다.
HEADER
FORM
ITEMGROUP
ITEM
REFERENCE_OBJECT
DESCRIBE
를 호출하면 CQL은 해당 테이블 또는 개체 내의 모든 필드를 반환합니다.
DESCRIBE Form
폼에 대해 DESCRIBE를 호출하면 폼에 포함된 모든 항목(Name 및 DataType 포함) 목록이 반환됩니다.
DESCRIBE Form VITALS
이 쿼리는 Cholecap 2019 - Phase 1 스터디에 대한 Vitals 폼의 모든 항목 목록을 반환합니다.
이름 | Data Type | |
---|---|---|
폼 | Form.Name | 텍스트(100) |
Form.SeqNbr | 정수 | |
항목 그룹(Item Group) | ItemGroup.Name | 텍스트(100) |
ItemGroup.SeqNbr | 정수 | |
항목 | Pulse | 정수 |
항목 | Systolic_Blood_Pressure | 텍스트(255) |
항목 | Diastolic_Blood_Pressure | 텍스트(255) |
항목 | Temperature | 정수 |
표시
SHOW
키워드로 쿼리를 생성하여 가능한 값 목록을 반환할 수도 있습니다. SHOW
를 이벤트 그룹, 이벤트, 폼 및 코드 목록 항목에 적용할 수 있습니다. SHOW
를 사용하여 현재 Vault 내의 스터디 목록을 반환할 수도 있습니다.
SHOW Studies
SHOW
를 사용하여 현재 Vault 내의 스터디 목록을 반환할 수 있습니다.
SHOW STUDIES
SHOW EVENTGROUPS
SHOW
를 사용하여 현재 스터디 내의 이벤트 그룹 목록을 반환할 수 있습니다.
SHOW EVENTGROUPS
SHOW EVENTS
SHOW
를 사용하여 현재 스터디 내의 이벤트 목록을 반환할 수 있습니다.
SHOW EVENTS
SHOW FORMS
SHOW
를 사용하여 현재 스터디 내의 폼 목록을 반환할 수 있습니다.
SHOW FORMS
SHOW CODELIST ITEMS
SHOW
를 사용하여 지정된 코드 목록 내의 코드 목록 항목 목록을 반환할 수 있습니다. 코드 목록 유형 데이터 항목의 이름을 제공해야 합니다.
SHOW CODELIST <DATAITEM>
SHOW VIEWS
SHOW
를 사용하여 스터디 내의 보기 목록을 반환할 수 있습니다.
SHOW Views
SHOW Reference
SHOW
를 사용하여 스터디 내의 참조 개체 목록을 반환할 수 있습니다.
SHOW Reference
시스템 리스팅
CALL
을 사용하여 CQL을 통해 시스템 목록에 액세스할 수 있습니다. 시스템 목록은 스터디 및 수집된 데이터에 대한 컨텍스트 정보가 포함된 원시 유형 내보내기에 대해 생성된 목록입니다.
- Sys_Sites:
CALL Sys_Sites
- Sys_Subjects:
CALL Sys_Subjects
- Sys_Events:
CALL Sys_Events
- Sys_Forms:
CALL Sys_Forms
- Sys_ILB:
CALL Sys_ILB
- Sys_Links:
CALL Sys_Links
보기
SHOW VIEWS
를 사용하여 CQL을 통해 보기에 액세스할수 있습니다. 그러면 현재 스터디에 대한 모든 기존 보기 목록이 반환됩니다. 보기는 특수 목록입니다. 다른 보기와 함께 사용하기 위해 CQL을 작성할 때 선택 항목에서 보기를 참조할 수도 있습니다. 이렇게 하려면 보기 이름(제목)을 원본으로 사용합니다.
보기를 정의할 때의 CQL 제한 사항
다음 CQL 기능은 보기를 정의할 때 지원되지 않습니다.
select *
UnPivot()
- 중복 열 별칭
- 프로젝션에서
@Form.SeqNbr
이외의@Form
특성 - 프로젝션에서
@ItemGroup.SeqNbr
이외의@ItemGroup
특성
보기를 참조할 때의 CQL 제한 사항
다음은 사용자 정의 목록에서 보기를 참조할 때 적용되는 제한 사항입니다.
- 다른 보기 내에서 보기를 참조하는 것은 지원되지 않습니다.
- 프로젝션 또는 필터(
WHERE
절)에 보기의@Form
및@ItemGroup
특성을 포함하는 것은 지원되지 않습니다. On Subject ALIGN
을 사용하는 경우 보기는UNALIGN
을 사용해서는 안 됩니다.On Subject
를 사용하여 다른 폼 또는 보기와 보기를 조인할 때 보기는On Subject
를 사용해야 합니다.
보기의 On Subject 조인
보기는 보기를 다른 폼 또는 보기와 조인할 때 On Subject ALIGN
및 On Subject UNALIGN
을 지원합니다.
보기와 폼 간에 On Subject 조인을 수행하려면 보기의 보기 정의에 On Subject
가 포함되어야 합니다. 그렇지 않은 경우 CQL은 다음 오류를 반환합니다.
"보기는 정의와 동일한 방식으로만 조인할 수 있습니다. On Subject 정렬이 보기 정의와 보기 참조 간에 동일한지 확인하십시오."
On Subject ALIGN을 사용한 보기 정의
아래 보기 정의는 이상 사례에 대해 대상자가 복용하고 있는 약물을 검색합니다. 이 보기를 "View_AE_CM\OnSubjectALIGN"이라고 합니다.
select @HDR.Site.Name, @HDR.Subject.Name, @Form.SeqNbr, @ItemGroup.SeqNbr, ae.AETERM, ae.AESTDAT, ae.AEONGO, ae.AEENDAT, ae.AESEV, cm.CMTRT, cm.CMSTDAT, cm.CMONGO, cm.CMENDDAT from AdverseEvent as ae, ConcomitantMedication as cm On Subject ALIGN where (@Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v')) and AETERM is not null order by @HDR.Subject.Name, @Form.SeqNbr
이제 이 보기를 다른 폼인 VitalSigns와 조인하여 해당 대상자의 키, 체중 또는 BMI와 같은 활력징후를 얻을 수 있습니다. 이 조인은 On Subject ALIGN
과 On Subject UNALIGN
을 모두 사용하여 수행할 수 있습니다.
select @HDR.Site.Name, @HDR.Subject.Name, @Form.SeqNbr, @ItemGroup.SeqNbr, algn.AETERM, algn.AESTDAT, algn.AEONGO, algn.AEENDAT, algn.AESEV, algn.CMTRT, algn.CMSTDAT, algn.CMONGO, algn.CMENDDAT, vtls.HEIGHT, vtls.WEIGHT, vtls.BMI, vtls.SYSBP from View_AE_CM_OnSubjectALIGN as algn, VitalSigns as vtls On Subject ALIGN where (@Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v'))
select @HDR.Site.Name, @HDR.Subject.Name, @Form.SeqNbr, @ItemGroup.SeqNbr, algn.AETERM, algn.AESTDAT, algn.AEONGO, algn.AEENDAT, algn.AESEV, algn.CMTRT, algn.CMSTDAT, algn.CMONGO, algn.CMENDDAT, vtls.HEIGHT, vtls.WEIGHT, vtls.BMI, vtls.SYSBP from View_AE_CM_OnSubjectALIGN as algn, VitalSigns as vtls On Subject UNALIGN where (@Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v'))
On Subject UNALIGN을 사용한 보기 정의
아래 보기 정의는 이상 사례에 대해 대상자가 복용하고 있는 약물을 검색합니다. 이 보기를 "View_AE_CM\OnSubjectUNALIGN"이라고 합니다.
select @HDR.Site.Name, @HDR.Subject.Name, @Form.SeqNbr, @ItemGroup.SeqNbr, ae.AETERM, ae.AESTDAT, ae.AEONGO, ae.AEENDAT, ae.AESEV, cm.CMTRT, cm.CMSTDAT, cm.CMONGO, cm.CMENDDAT from AdverseEvent as ae, ConcomitantMedication as cm On Subject UNALIGN where (@Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v')) and AETERM is not null order by @HDR.Subject.Name, @Form.SeqNbr
정의에 On Subject UNALIGN
이 포함된 보기는 아래와 같이 On Subject UNALIGN
을 사용하여 다른 폼에만 조인할 수 있습니다.
select @HDR.Site.Name, @HDR.Subject.Name, @Form.SeqNbr, @ItemGroup.SeqNbr, unalgn.AETERM, unalgn.AESTDAT, unalgn.AEONGO, unalgn.AEENDAT, unalgn.AESEV, unalgn.CMTRT, unalgn.CMSTDAT, unalgn.CMONGO, unalgn.CMENDDAT, vtls.HEIGHT, vtls.WEIGHT, vtls.BMI, vtls.SYSBP from View_AE_CM_OnSubjectALIGN as unalgn, VitalSigns as vtls On Subject UNALIGN where (@Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v'))
참조 개체
스터디에 대한 모든 참조 개체 목록을 검색하려면 SHOW
키워드를 사용합니다.
SHOW Reference
그런 다음, DESCRIBE
키워드를 사용하여 지정된 참조 개체에서 항목 목록을 검색할 수 있습니다.
DESCRIBE Reference <Reference_Object_Name>
ReferenceRelations
키워드를 사용하여 reference_object_name
, related_form
, related_item
및 related_key
속성에 대한 키 값 쌍 테이블을 검색합니다.
ReferenceRelations <Reference_Object_Name>
텍스트 유형 참조 개체 항목의 경우 CQL은 다음 함수를 지원합니다.
CONCAT
LENGTH
TRIM
LTRIM
RTRIM
UPPER
LOWER
LEFT
RIGHT
날짜 유형 참조 개체 항목의 경우 CQL은 다음 함수를 지원합니다.
ADDDATE
SUBDATE
DATEDIFF
DATE_FORMAT
SITENORMALIZEDDATE
RAWDATE
SDTMDATEFORMAT
STR_TO_DATE
CURDATE
NOW
YEAR
MONTH
WEEK
DAY
HOUR
MINUTE
SECOND
LAST_DAY
참조 개체에 대한 CQL 제한 사항
CQL 제한 사항은 참조 개체로 작업할 때 적용됩니다.
다음 함수는 참조 데이터에 사용할 수 없습니다.
FROZEN
ILB
LABEL
LASTCODED
LASTMODIFIEDDATE
LOCKED
SIGNED
STATUS
쿼리 구문 및 구조&
CQL 쿼리는 정의된 열 순서가 있는 데이터 테이블인 튜플을 반환합니다. 튜플을 반환하려면 CQL 쿼리에서 다음을 지정해야 합니다.
- PROJECTION: 검색하려는 특정 데이터 요소
- SELECTION: 프로젝션의 데이터 요소가 있는 특정 데이터 테이블
- FILTER(선택 사항): 반환할 데이터 요소에 대한 일치 기준(튜플에 포함할 필요가 없으며 스터디의 암시적 관계를 통해 참조할 수 있음)
- ORDER(선택 사항): 튜플에서 행이 반환되는 순서
프로젝션
CQL 쿼리의 PROJECTION은 검색하는 데이터 요소와 결과 세트에서 해당 요소의 순서를 지정합니다. DATAITEM
이름을 사용하여 필드 목록을 명시적으로 지정하거나 와일드카드 바로 가기를 사용할 수 있습니다.
SELECT
문을 사용하여 프로젝션을 설명합니다.
와일드카드
SELECT
문에 와일드카드 별표를 사용하여 FROM 절에 지정된 FORM 컨텍스트 내에서 연결된 DATAITEMS
에 대한 모든 열을 레이아웃 순서로 반환할 수 있습니다.
SELECT * FROM Demographics
컨텍스트 한정 별표
와일드카드 별표 대신 컨텍스트 한정 별표를 사용하여 한정자의 컨텍스트 내에 있는 모든 DATAITEMS
를 반환할 수 있습니다.
현재 릴리스에서는 FORM
및 ITEMGROUP
한정자만 지원됩니다.
SELECT <Qualifier>.* FROM <Form_Name> SELECT Creation_Criteria.* FROM Demographics
이 예시 쿼리는 Cholecap 2019 Phase 1 스터디의 인구 통계 폼에 있는 생성 기준 항목 그룹의 모든 DATAITEMS
를 반환합니다.
데이터 항목
또는 검색할 특정 DATAITEMS를 지정할 수 있습니다. 지정된 FORM에 있는 모든 DATAITEM을 프로젝션에서 선택할 수 있습니다. FORM을 하나만 지정하는 경우 해당 열을 직접 참조할 수 있습니다. 여러 FORM을 지정한 경우 각 DATAITEM을 FORM 이름 또는 별칭으로 한정해야 합니다.
SELECT <Qualifier>.<DataItem> FROM <Form_Name> SELECT Demographics.Subject_Date_of_Birth, Enrollment.Randomization_Number FROM Demographics, Enrollment
이 예시 쿼리는 인구 통계 폼의 생년월일 항목과 등록 폼의 무작위 배정 번호 항목에 대한 모든 값을 반환합니다.
데이터 함수
결과 세트의 특정 열로 반환될 수 있는 함수를 지정할 수도 있습니다. 함수는 DATAITEMS
를 인수로 사용할 수 있을 뿐만 아니라 위에 나열된 많은 컨텍스트를 사용할 수 있습니다.
이름 및 ID를 제외한 DATAITEM
의 모든 속성에 함수를 사용하여 액세스할 수 있습니다.
함수에서는 항목 그룹을 사용할 수 없습니다.
함수, 허용되는 인수 및 정의의 전체 목록은 아래를 참조하십시오.
SELECT STATUS(Demographics.Subject_Date_of_Birth) FROM Demographics
이 예시 쿼리는 Cholecap 2019 Phase 1 스터디의 인구 통계 폼에 있는 생년월일 항목의 상태를 반환합니다.
Distinct
DISTINCT를 사용하여 지정된 열 또는 열 세트에서 값의 고유한 인스턴스만 반환할 수 있습니다.
SELECT DISTINCT <Qualifier>.<DataItem> FROM <Form_Name> SELECT DISTINCT Dosing.Dosage_Amount FROM Dosing
이 쿼리는 Cholecap 2019 Phase 1 스터디의 투여 폼에 있는 투여량 항목에 대한 모든 고유한 값을 반환합니다.
현재 릴리스에서는 CDB가 CQL 문이 DISTINCT
를 사용하는 목록에 대해 셀 강조 표시를 표시하지 않습니다.
별칭(AS)
AS
를 사용하여 쿼리의 폼 및 데이터 항목에 대한 별칭을 정의할 수 있습니다. 별칭은 폼이나 데이터 항목의 이름이 더 길고 이를 여러 번 참조하려는 경우에 유용할 수 있습니다.
프로젝션의 특정 열에 대한 별칭을 제공할 수 있습니다. 데이터 항목에 대한 별칭을 제공하는 경우 워크벤치는 항목의 열 이름을 목록의 별칭으로 바꿉니다. 데이터 항목에 대한 별칭은 아래 예시와 같이 데이터 항목의 이름이 더 긴 경우에 특히 유용합니다. 데이터 항목에 더 짧은 별칭을 사용하면 코어 목록에서 결과를 보는 동안 가로 스크롤의 필요성을 제한하는 데 도움이 될 수 있습니다.
폼에 대한 별칭을 제공할 수도 있습니다. 이 별칭은 단일 쿼리에서 폼을 여러 번 참조하려는 경우에 유용합니다. 별칭을 설정한 후에는 폼 이름이 아닌 별칭만 사용하여 폼을 참조해야 합니다.
SELECT <Qualifier>.<DataItem> AS <Item_Alias> FROM <Form_Name> as <Form_Alias> SELECT Demographics.Subject_Date_of_Birth as DOB, Enrollment.Randomization_Number_from_IRT as ID FROM Demographics, Enrollment
이 예시 쿼리는 인구 통계 폼의 생년월일 항목과 등록 폼의 무작위 배정 번호 항목에 대한 모든 값을 반환합니다.
운영 프로젝션 요소
DATAITEMS
외에도 쿼리 결과와 함께 유용할 수 있는 운영 데이터를 쿼리할 수 있습니다. 이러한 운영 요소 중 가장 강력한 것은 헤더입니다. 헤더는 요청하는 폼 및 데이터 항목과 관련된 가장 중요한 스터디 메타데이터의 요약입니다. 스터디, 사이트, 대상자, 이벤트 그룹 및 이벤트에 대한 정보를 요청할 수도 있습니다.
@HDR
변수 표기법을 사용하여 모든 프로젝션에서 헤더 정보를 반환할 수 있습니다. 와일드카드로 @HDR
정보를 쿼리하여 쿼리 가능한 모든 메타데이터를 검색하거나 폼과 관련된 특정 헤더 정보를 쿼리할 수 있습니다.
SELECT @HDR, <Qualifier>.<DataItem> FROM <Form_Name> SELECT @HDR.SITE, * FROM Dosing
위 쿼리는 사이트에 대한 요약 정보를 반환합니다.
헤더 요약
사전 정의된 요소 세트와 열 순서를 사용하여 지정된 컨텍스트 내에서 특정 요약을 생성할 수 있습니다. 다음과 같은 헤더 컨텍스트를 사용할 수 있습니다.
@HDR.Study
@HDR.Site
@HDR.Subject
@HDR.Event
현재 릴리스에서는 @HDR. EventGroup
에 요약이 포함되지 않습니다. 이벤트 그룹 컨텍스트를 사용하려면 속성을 지정해야 합니다.
@HDR.Study
와 같이 @HDR
변수와 컨텍스트만 사용하는 경우 CQL은 사용 가능한 속성 중 제한된 세트만 반환합니다.
헤더 컨텍스트 | 반환된 속성 |
---|---|
@HDR.Study |
Study.Name |
@HDR.Site |
Site.Name, Site.PI |
@HDR.Subject |
Subject.Name, Subject.Status |
@HDR.Event |
Event.Name, Event.Date, Event.Status |
헤더 세부 정보 속성
헤더의 특정 요소를 대상으로 지정하여 선택 항목에서 반환하거나 필터 절에서 사용할 수도 있습니다. 해당 속성을 검색하려면 점 표기법을 사용하여 @HDR
컨텍스트에 속성 이름을 추가합니다. 예를 들어 @HDR.Study.Phase
를 사용하여 스터디 단계를 반환하거나 @HDR.Event.Date
를 사용하여 이벤트의 이벤트 날짜를 반환합니다.
점 표기법을 사용하여 각 @HDR
컨텍스트 요소에 대해 다음 속성을 사용할 수 있습니다.
헤더 컨텍스트 | 사용 가능한 속성 |
---|---|
@HDR.Study |
|
@HDR.Site |
|
@HDR.Subject |
|
@HDR.EventGroup |
|
@HDR.Event |
|
폼 및 항목 그룹 속성&
선택 항목 또는 필터 절에서 폼 및 항목 그룹 속성을 대상으로 지정할 수 있습니다. 해당 속성을 검색하려면 점 표기법을 사용하여 @Form
또는 @ItemGroup
에 속성 이름을 추가합니다. 예를 들어 @Form.CreatedDate
를 사용하여 폼의 생성 날짜를 반환합니다.
컨텍스트 | 사용 가능한 속성 |
---|---|
@Form |
|
@ItemGroup |
|
폼 링크 항목
@FormLink
표기법을 사용하여 항목과 폼 간 연결에 사용된 항목을 대상으로 지정할 수 있습니다. FormLink 항목이 포함된 폼은 연결 폼입니다. FormLink 항목은 연결된 폼에 연결되어 있습니다. @FormLink
표기법을 사용하려면 연결 폼에 있는 FormLink 항목과 연결된 폼에서 대상으로 지정할 항목의 이름을 제공해야 합니다.
@FormLink.<FormLink-Name>.<Item-Name>
연결된 폼의 항목이 둘 이상의 항목 그룹에서 사용되는 경우 항목 그룹의 이름도 제공해야 합니다.
@FormLink.<FormLink-Name>.<ItemGroup-Name>.<Item-Name>
연결 폼이 여러 항목 그룹에서 동일한 FormLink 항목을 사용하는 경우 항목 그룹 FormLink의 이름을 지정해야 합니다.
@FormLink.<ItemGroup-Name-FormLink>.<FormLink-Name>.<ItemGroup-Name>.<Item-Name>
다음 예시에서는 AE 폼에 ae_to_cm 및 ae_to_mh라는 2개의 FormLink가 있다고 가정합니다. 다음 CQL을 사용하여 연결된 폼의 항목에 액세스할 수 있습니다.
select @HDR.Subject.Name, AETERM, AESTDAT, AEONGO,@FormLink.ae_to_cm.CMTRT, @FormLink.ae_to_cm.CMSTDAT, @FormLink.ae_to_cm.CMONGO, @FormLink.ae_to_cm.CMENDAT,@FormLink.ae_to_mh.MHTERM, @FormLink.ae_to_mh.MHSTDAT, @FormLink.ae_to_mh.MHONGO, @FormLink.ae_to_mh.MHENDAT from `EDC`.`AE` where @For.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v')
FormLink ae_to_cm은 ae_to_cm 항목과 CM 폼 사이에 있습니다. @FormLink.ae_to_cm.CMONGO
를 사용하여 연결된 폼 CM의 CMONGO 항목에 액세스할 수 있습니다.
FormLink ae_to_mh는 ae_to_mh 항목과 MH 폼 사이에 있습니다. @FormLink.ae_to_mh.MHSTDAT
를 사용하여 연결된 폼 MH의 MHSTDAT 항목에 액세스할 수 있습니다.
WHERE
절, Order By
절 및 Group By
절에서 @FormLink
표기법으로 표시된 항목을 사용할 수 있습니다.
FormLink 항목에서 지원되는 CQL 기능은 다음과 같습니다.
- UNION 및 UNION ALL
- On Subject ALIGN 및 UNALIGN
- 하위 쿼리
- UNPIVOT
쿼리 속성
선택 항목 또는 필터 절에서 쿼리 속성을 대상으로 지정할 수 있습니다. 해당 속성을 검색하려면 점 표기법을 사용하여 @QRY
또는 @QRYMSG
에 속성 이름을 추가합니다. 예를 들어 @QRY.ID
를 사용하여 쿼리 ID를 검색합니다.
@QRY
@QRY
를 사용하여 쿼리 개체에 대해 다음 속성을 쿼리할 수 있습니다.
속성 | 선택 |
---|---|
ID | 쿼리에 대해 자동 생성된 |
이름 | EDC(VV#####)에 정의된 쿼리 이름. 타사 데이터의 경우 이 번호는 여전히 고유 식별자입니다. |
상태(Status) | 쿼리의 현재 상태(미결, 답변됨, 종결됨) |
범주(Category) | 쿼리 출처(수동 또는 시스템 생성) |
FirstMessage | 쿼리에서 생성된 첫 번째 쿼리 메시지(쿼리를 열 때 입력된 주석). 이는 쿼리에 대한 모든 쿼리 메시지(주석) 목록이 아닙니다. |
LatestMessage | 쿼리에서 생성된 최신(가장 최근) 쿼리 메시지(쿼리에 응답할 때 입력된 주석). 이는 쿼리에 대한 모든 쿼리 메시지(주석) 목록이 아닙니다. |
CreatedDate | 쿼리가 생성된(열린) 날짜 및 시간 |
CreatedBy | 쿼리를 생성한(연) 사용자의 사용자 이름 |
LastModifiedDate | 쿼리가 마지막으로 수정된 날짜 및 시간 |
LastModifiedBy | 쿼리를 마지막으로 수정한 사용자의 사용자 이름 |
ItemName | 쿼리가 열린 항목의 이름. 쿼리가 이벤트 날짜에 있는 경우 |
EventName | 쿼리와 연결된 이벤트의 이름 |
EventDate | 쿼리와 연결된 이벤트의 이벤트 날짜 |
SubjectName | 쿼리와 연결된 대상자의 이름 |
SubjectStatus | 쿼리와 연결된 대상자의 대상자 상태 |
사이트(Site) | 쿼리와 연결된 대상자에 할당된 사이트 |
SiteCountry | 쿼리와 연결된 대상자에 할당된 사이트의 스터디 국가 |
폼(Form) | 쿼리와 연결된 폼의 이름. 쿼리가 이벤트 날짜에 있는 경우 |
FormSeqNbr | 쿼리와 연결된 폼의 시퀀스 번호. 쿼리가 이벤트 날짜에 있는 경우 |
FormSource | 쿼리의 데이터 포인트가 시작된 원본(예: "실험실", "EDC", "eCOA") |
ItemGroupSeqNbr | 쿼리와 연결된 항목 그룹의 시퀀스 번호. 쿼리가 이벤트 날짜에 있는 경우 |
OriginSystem | 쿼리가 시작된 원본 시스템의 이름(EDC, CDB 등). 현재 릴리스에서는 CQL이 CDB의 검사를 통해 미결 쿼리에 대해서만 이 속성의 "CDB" 값을 반환합니다. |
OriginName | 쿼리가 열린 목록의 이름. 쿼리가 CDB에서 열리지 않은 경우 |
OriginID | 쿼리가 열린 목록의 ID. 쿼리가 CDB에서 열리지 않은 경우 |
OpenToReply | 쿼리의 생성 날짜와 첫 응답 날짜 간의 날짜 차이 |
RuleID | 쿼리를 생성한 규칙의 ID(시스템 생성 쿼리의 경우) |
TriggerID | 쿼리를 생성한 사용자 정의 트리거의 ID |
CausedDataChange | 쿼리 생성 후 데이터가 변경되었는지 여부 |
RowExternalID | 데이터를 가져오는 동안 행에 할당된 행 외부 ID |
@QRYMSG
QRYMSG
를 사용하여 쿼리 메시지 개체에 대해 다음 속성을 쿼리할 수 있습니다.
속성 | 선택 |
---|---|
상태(Status) | 쿼리 메시지의 상태(미결, 답변됨, 종결됨) |
텍스트 | 메시지의 텍스트 |
CreatedDate | 쿼리 메시지가 생성된 날짜 및 시간 |
CreatedBy | 쿼리 메시지를 생성한 사용자의 사용자 이름 |
선택
선택(FROM
)은 프로젝션이 작동하는 폼의 이름을 지정하는 메커니즘입니다. 와일드카드 별표에서 선택은 프로젝션의 폼 순서도 지정합니다.
CQL에서 FROM
은 항상 데이터가 선택되는 폼 컨텍스트를 나타냅니다. FROM
절에는 다른 컨텍스트를 사용할 수 없습니다.
헤더는 @HDR
변수에서 액세스할 수 있기 때문에 FORM 및 DATAITEMS가 필요하지 않은 경우 헤더 요소를 직접 선택할 수도 있습니다. 이러한 유형의 선택 항목을 사용하여 대상자별 운영 데이터만 나열하는 결과를 생성할 수 있습니다. 프로젝션에 @HDR
만 포함된 경우 FROM을 제공하지 않고 이 선택 항목을 필터링할 수 있습니다. 그러나 별칭 및 하위 쿼리를 사용하려면 FROM
절을 포함해야 합니다.
대상자 기준 조인
기본적으로 CQL은 대상자와 이벤트 모두를 기준으로 조인합니다. 이 때문에 서로 다른 이벤트에 있는 두 개의 폼 중에서 선택하는 경우 CQL은 대상자당 단일 행 대신 각 폼에 대한 행을 반환합니다. 이 경우 대상자 기준만 조인하여 두 폼의 데이터를 포함하는 각 대상자에 대해 단일 행을 반환할 수 있습니다.
대상자를 기준으로 조인하려면 선택 항목의 폼 식별자 목록에 on subject
를 추가합니다. 사용할 수 있는 식별자 수에는 제한이 없지만 on subject
는 지정된 모든 폼에 적용됩니다.
CQL은 on subject
와 함께 사용될 때 @HDR.EventGroup
또는 @HDR.Event
속성에 대해 null을 반환합니다. on subject
는 여러 이벤트 그룹 또는 이벤트에서 데이터를 반환할 수 있기 때문입니다. 해당 속성을 검색해야 하는 경우 각 폼에 대한 폼 별칭으로 선택하여 검색할 수 있습니다.
알려진 문제: 현재 릴리스에서는 대상자 기준 조인 시 COMPACT
사용을 지원하지 않습니다.
아래 예시 쿼리는 각 대상자에 대해 @HDR.Subject 속성, 대상자 이니셜, 대상자 DOB, 키, 체중, 맥박, 최대혈압, 최저혈압, 체온을 포함한 단일 행을 반환합니다. 예시 쿼리에서 대상자별 조인을 사용하지 않은 경우 CQL은 인구 통계 폼의 항목에 대한 행과 활력징후 폼의 항목에 대한 두 번째 행을 반환합니다.
SELECT @HDR.Subject, creation_criteria.subject_initials, creation_criteria.subject_dob, vitals.height, vitals.weight, vitals.pulse__bpm_, vitals.systolic_bp__hhMg, vitals.diastolic_bp__hhMg, vitals.temperature FROM demographics, vitals ON subject
Align 및 Unalign 수정자&
반복되는 폼 또는 항목 그룹과 함께 on subject
를 사용할 때 조인된 시퀀스(정렬됨)에 대한 데이터를 반환하거나 시퀀스가 정렬되지 않은 경우(정렬되지 않음)에도 데이터를 반환하도록 선택할 수 있습니다. 예를 들어 인구 통계 폼과 반복 이상 사례 폼의 정보를 표시할 때 CQL은 대상자의 모든 이상 사례 폼 인스턴스에 대해 반환된 행에 인구 통계 폼의 데이터를 반환합니다. 이 동작은 시퀀스가 정렬되지 않은 경우에도 데이터를 반환하기 때문에 "정렬되지 않음" 동작입니다. UNALIGN
은 기본 동작이므로 CQL 문에 이 수정자를 명시적으로 포함하는 것은 선택 사항입니다. 이 예시에서 "정렬됨" 동작은 대상자의 모든 이상 사례 폼 인스턴스에 대해 반환된 첫 번째 행에 대해서만 인구 통계 폼의 데이터를 반환합니다. 정렬됨 동작을 사용하려면 ALIGN
수정자를 포함합니다.
고급 조인
CQL은 고급 (방향) 조인도 지원합니다. 고급 조인을 사용하면 먼저 @HDR에 조인하지 않고도 폼을 조인할 수 있습니다.
LEFT JOIN
: 첫 번째 (왼쪽) 테이블의 모든 레코드와 두 번째 (오른쪽) 테이블의 일치하는 데이터 RIGHT JOIN
: 두 번째 (오른쪽) 테이블의 모든 레코드와 첫 번째 (왼쪽) 테이블의 일치하는 데이터 INNER JOIN
: 일치하는 항목이 있는 두 테이블의 레코드만
현재 릴리스에서는 CQL이 외부 조인을 지원하지 않습니다.
고급 조인을 사용하여 참조 데이터를 다른 데이터에 조인할 수 없습니다.
예시: 폼 간 왼쪽 조인
아래 CQL 문에서는 폼 정의 특성 @Form.Subject
를 기준으로 AE 폼과 CM 폼 간에 LEFT JOIN
이 있습니다. Subject.Name은 폼 정의의 일부이며 @HDR에서 가져온 것이 아닙니다.
select @Form.Subject.Name, @Form.Event.Name, AETERM, AESTDAT, CMTRT, CMSTDAT from AE as ae LEFT JOIN CM as cm ON ae.@Form.Subject.Name = cm.@Form.Subject.Name where @Form.Status = 'submitted__v'
이는 조인 조건이 @Form 특성(@Form.Subject.Name
)을 기준으로 하고 프로젝션에 @HDR 특성이 포함되어 있지 않으므로 @HDR에 조인하지 않고도 작동합니다.
예시: 폼 및 @HDR 간 왼쪽 조인&
아래 CQL 쿼리에는 프로젝션에 @HDR 특성이 있으므로 @HDR과의 조인이 필요합니다. 아래 쿼리는 Event.ID를 기준으로 한 @HDR과 AE 간의 LEFT JOIN입니다. 그런 다음, 이 LEFT JOIN의 출력은 Event.ID 및 Subject.ID를 기준으로 CM과 다시 LEFT JOIN됩니다.
아래 CQL 문에서는 프로젝션에 @HDR 특성이 포함되어 있으므로 @HDR과의 조인이 필요합니다. 이는 @Form.Event.ID
를 기준으로 한 @HDR과 AE 폼 간의 LEFT JOIN
입니다. 그런 다음, 해당 조인의 출력은 @Form.Event.ID
및 @Form.Subject.ID
를 기준으로 CM 폼과 다시 LEFT JOIN
으로 조인됩니다.
select @HDR.Subject.Name, @HDR.Site.Name, AETERM, AESTDAT, CMTRT, CMTERM from @HDR LEFT JOIN AE as ae ON @HDR.Event.ID = ae.@Form.Event.ID LEFT JOIN CM as cm ON @HDR.Event.ID = cm.@Form.Event.ID and ae.@Form.Subject.ID = cm.@Form.Subject.ID
하위 쿼리
CQL은 하위 쿼리를 지원합니다.
IN을 사용한 하위 쿼리
필터의 IN
연산자 내에서 참조할 수 있는 값 목록을 반환하는 하위 쿼리를 정의할 수 있습니다.
SELECT * FROM Randomization WHERE @HDR.Subject.ID IN ( SELECT @HDR.Subject.ID FROM Demographics WHERE Creation_Criteria.Sex = 'Female' )
이 쿼리는 모든 여성 대상자에 대해 무작위 배정 폼의 모든 DATAITEMS를 반환합니다.
하위 쿼리 조인
두 개의 SELECT
문을 정의하고 일반적인 JOIN
구문 대신 하위 쿼리를 사용하여 함께 조인할 수도 있습니다. 쉼표(,
)를 사용하여 조인을 나타내며, 두 번째 하위 쿼리는 첫 번째 하위 쿼리에 왼쪽 외부 조인됩니다. 하위 select는 별칭을 지정할 수 있지만 필수는 아닙니다. 해당 조인에는 EventId 및 SubjectId가 암시적으로 포함됩니다. 하위 쿼리 뒤에 필터(WHERE
) 절을 사용하여 추가 필터링을 수행할 수 있습니다.
SELECT * FROM ( SELECT @HDR.Subject, Creation_Criteria.Subject_Initials, Creation_Criteria.Age_at_Screening as Screening_Age FROM Demographics WHERE Creation_Criteria.Sex = 'Female' ) AS Female_Subjects, ( SELECT @HDR.Subject, Creation_Criteria.Subject_Initials, Creation_Criteria.Age_at_Screening as Screening_Age FROM Demographics WHERE Creation_Crtieria.Sex = 'Male' ) AS Male_Subjects WHERE Female_Subjects.Screening_Age = Male_Subjects.Screening_Age
함수의 하위 쿼리
함수 내에서 @HDR
, @Form
헤더 및 DATAITEMS를 포함한 하위 쿼리를 사용할 수 있습니다.
SELECT @HDR.Subject, Body_Temperature, IF (IFNULL(Body_Temperatore,0) < (SELECT AVG(Body_Temperature) FROM Vitals), 'Below Avg', 'Acceptable') AS CompTemp FROM Vitals
상관 관계가 있는 하위 쿼리
CQL을 사용하면 결과를 필터링하기 위해 상관 관계가 있는 하위 쿼리를 사용할 수 있습니다.
SELECT * FROM Demographics WHERE Age_at_Screening > ( SELECT AVG(Age_at_Screening) FROM Demographics )
필터
필터를 사용하여 프로젝션 및 선택에서 제공하는 초기 CQL 결과 값을 줄일 수 있습니다. 이는 선택 사항입니다. CQL의 기본 필터링 메커니즘은 WHERE
절입니다.
WHERE Status(Form) = 'Complete' AND GENDER = 'Male'
팁: 코어 목록은 제출됨 상태의 모든 폼을 반환합니다. WHERE
절을 편집하여 제출됨 및 제출 후 진행 중 상태 모두의 폼을 반환할 수 있습니다. Use the following CQL: WHERE @Form.Status in ('submitted__v', 'in_progress_post_submit__v')
.
비교 함수 및 연산자&
WHERE
절에서 사용할 수 있는 함수와 연산자는 다음과 같습니다.
연산자 | 정의 |
---|---|
AND |
논리적 AND |
OR |
논리적 OR |
= |
같음 |
!= |
같지 않음 |
> |
Greater than |
< |
Less than |
>= |
Greater than or equal to |
<= |
Less than or equal to |
IS |
불린 조건에 대해 값을 테스트합니다. |
IS NOT |
불린 조건에 대해 값을 테스트합니다. |
IS NULL |
NULL에 대해 값을 테스트합니다. |
IS NOT NULL |
NULL에 대해 값을 테스트합니다. |
IN() |
값이 정의된 값 세트 내에 있는지 확인합니다. |
NOT IN() |
값이 정의된 값 세트 내에 있지 않은지 확인합니다. |
BETWEEN...AND... |
값이 값 범위 내에 있는지 확인합니다. |
CONTAINS |
값이 값 내에 포함되어 있는지 확인합니다. |
DOES NOT CONTAIN |
값이 값 내에 포함되어 있지 않은지 확인합니다. |
주문
ORDER BY
절을 사용하여 결과 순서를 사용자 정의할 수 있습니다.
예를 들면 다음과 같습니다.
SELECT @HDR * ORDER BY @HDR.Subject.Name ASC, ETHNICITY
알려진 문제: 현재 릴리스에서는 워크벤치가 반복 항목 그룹 내의 데이터 항목에 대해 ORDER BY
사용을 지원하지 않습니다.
주석
필요한 경우 CQL 문에 주석을 포함할 수도 있습니다. 주석을 포함하려면 두 개의 대시와 공백(--
)을 입력한 후 주석을 입력합니다.
SELECT @HDR, * from EDC.adverse_events WHERE @Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v') -- comment text
데이터 집계
CQL은 쿼리 결과에 대해 기본 데이터 집계를 수행할 수 있습니다. 집계 함수에서 헤더의 모든 요소 또는 DATAITEM을 참조할 수 있습니다. 집계 함수는 와일드카드, @ 변수 및 특정 DATAITEMS를 인수로 허용합니다.
집계 함수
연산자 | 정의 |
---|---|
AVG() |
인수의 평균 값을 반환합니다. |
COUNT() |
반환된 행 수의 개수를 반환합니다. |
MAX() |
최대(가장 높은) 값을 반환합니다. |
MIN() |
최소(가장 낮은) 값을 반환합니다. |
SUM() |
합계를 반환합니다. |
STDDEV_POP() |
모집단 표준 편차 |
STDDEV_SAMP() |
표본 표준 편차 |
VAR_POP() |
모집단 표준 분산을 반환합니다. |
VAR_SAMP() |
표본 분산을 반환합니다. |
계산할 특성을 지정하지 않으면 CQL은 요청을 해당 개체 내의 모든 열에 대한 개수로 처리합니다. 이는 해당 특정 테이블의 COUNT(*)
와 동일합니다.
WHERE
는 집계 함수와 함께 사용할 수 없으므로 대신 HAVING
키워드를 사용할 수 있습니다. HAVING
을 사용하려면 CQL 프로젝션에 집계 함수가 하나 이상 있어야 합니다.
SELECT COUNT(@HDR.Subject.Name), @HDR.Site.Number FROM EDC.demographics GROUP BY @HDR.Site.Number HAVING COUNT(@HDR.Subject.Name) > 100
결과 그룹화
CQL은 프로젝션에 하나 이상의 집계 함수가 포함되어 있는 한 GROUP BY
구문을 지원합니다.
SELECT COUNT(@HDR.Event), @HDR.Subject GROUP BY @HDR.Subject SELECT @HDR, AVG(SYSTOLIC) FROM Vitals GROUP BY @HDR.Subject
결과 구조
CQL 결과는 프로젝션에 제공하는 요소에 따라 특정 시퀀스로 반환됩니다. CQL에는 프로젝션에 포함되어야 하는 항목을 빠르게 식별하기 위한 세 가지 방법인 헤더, 와일드카드 및 정규화된 와일드카드가 포함되어 있습니다. 쿼리 내의 결과에 반환되어야 하는 추가 열을 지정할 수 있습니다.
프로젝션에 포함하는 DATAITEMS에 따라 실행 데이터가 정렬되는 특정 순서도 있습니다.
폼 및 데이터 항목 결과&
SELECT @HDR
표기법과 마찬가지로 나머지 FORM 및 DATAITEMS는 SELECT *
또는 SELECT ItemGroup.*
을 사용하여 반환할 수 있습니다. 해당 표기법을 사용하는 경우 결과 세트에는 기본 열 순서가 있으며 이 섹션의 행은 헤더(프로젝션에 포함된 경우)에 적용된 정렬 순서를 따른 후 특정 정렬 순서로 반환됩니다.
쿼리에서 와일드카드 표기법을 사용하지 않는 경우 프로젝션 내에서 반환할 데이터 열을 지정해야 합니다. 결과 순서는 프로젝션에 포함시킨 요소를 기준으로 아래 나열된 정렬 옵션의 계층과 일치합니다.
정렬 계층에 포함된 개체는 모두 존재하며 특정 열이 없더라도 정렬 계층 규칙은 계속 적용됩니다.
SELECT * 기본 열 순서
열은 아래 나열된 FORM 특성으로 시작하여 폼의 레이아웃 순서에 따라 배치됩니다.
- Form Name
- Form SeqNum(폼이 반복되는 경우에만)
- 항목 그룹(Item Group)
- SeqNbr(항목 그룹이 반복되는 경우에만)
- Item1
- Item2
- ItemN
SELECT ItemGroup.* 기본 열 순서
열은 아래 나열된 FORM 및 항목 그룹 특성으로 시작하여 항목 그룹의 레이아웃 순서에 따라 배치됩니다.
- Form Name
- Form SeqNum(폼이 반복되는 경우에만)
- 항목 그룹(Item Group)
- SeqNbr(항목 그룹이 반복되는 경우에만)
- Item1
- Item2
- ItemN
열 제목
CQL은 특정 패턴을 사용하여 각 열의 제목을 지정합니다.
@HDR
열: Object.Property(예:@HDR.Site.Name
의 "Site.Name")- 데이터 항목: 항목 정의의 이름
- 별칭: 별칭이 지정된 데이터의 경우 CQL은 별칭을 열 제목으로 사용합니다.
폼 및 항목 그룹은 반복될 수 있으므로 Form.Name
, ItemGroup.SeqNbr
등의 헤더 결과와 동일한 Object.Property
표기법을 따릅니다.
와이드 및 컴팩트 결과&
CQL은 항상 결과 세트 앞에 @Form
및 @ItemGroup
정보가 추가된 데이터 항목을 반환합니다. 이는 폼 헤더입니다. 이 정보는 지정된 데이터 항목이 수집된 폼 및 항목 그룹을 이해하는 데 유용합니다. 폼 헤더 외에도 데이터 항목을 와이드하거나 컴팩트한 형식으로 정렬할 수 있습니다. 기본적으로 CQL은 와이드 형식을 사용하여 결과를 반환합니다.
와이드 형식은 모든 데이터 항목이 (쿼리 컨텍스트에서) 수집된 모든 폼 또는 항목 그룹에 대한 자체 열에 반환됨을 의미합니다.
컴팩트 형식은 데이터 항목의 결과가 수집된 폼 또는 항목 그룹에 관계없이 단일 열에 표시됨을 의미합니다. 이는 항목 값을 비교하는 데 유용할 수 있습니다.
결과를 컴팩트 형식으로 반환하려면 SELECT
문에 COMPACT
를 지정합니다.
SELECT COMPACT @HDR, Creation_Criteria.* FROM Demographics
이 쿼리는 인구 통계 폼의 생성 기준 항목 그룹에 있는 @HDR
요약 및 DATAITEMS
를 컴팩트 형식으로 반환합니다.
예시: 항목을 재사용하는 여러 폼
이 예시에서 스터디에는 인구 통계와 동의서라는 두 가지 폼이 있으며, 둘 다 생년월일 항목을 사용합니다.
와이드
Form.Name | Form.SeqNbr | ItemGroup.Name | ItemGroup.SeqNbr | Initials | Age_at_Screening | DOB | DOB |
---|---|---|---|---|---|---|---|
Demographics | 1 | Creation_Criteria | 1 | CMA | 27 | 02-22-1992 | -- |
Informed_Consent | 1 | Informed_Consent | 1 | -- | -- | -- | 02-22-1992 |
컴팩트
Form.Name | Form.SeqNbr | ItemGroup.Name | ItemGroup.SeqNbr | Initials | Age_at_Screening | DOB |
---|---|---|---|---|---|---|
Demographics | 1 | Creation_Criteria | 1 | CMA | 27 | 02-22-1992 |
Informed_Consent | 1 | Informed_Consent | 1 | -- | -- | 02-22-1992 |
예시: 반복 폼
이 예시에서 스터디에는 반복 이상 사례 폼이 있습니다.
와이드
Form.Name | Form.SeqNbr | ItemGroup.Name | ItemGroup.SeqNbr | Start_Date | End_Date | Start_Date | End_Date |
---|---|---|---|---|---|---|---|
Adverse_Event | 1 | AE_Duration | 1 | 05-18-2019 | 05-23-2019 | -- | -- |
Adverse_Event | 2 | AE_Duration | 1 | -- | -- | 11-27-2019 | 11-29-2019 |
컴팩트
Form.Name | Form.SeqNbr | ItemGroup.Name | ItemGroup.SeqNbr | Start_Date | End_Date |
---|---|---|---|---|---|
Adverse_Event | 1 | AE_Duration | 1 | 05-18-2019 | 05-23-2019 |
Adverse_Event | 2 | AE_Duration | 1 | 11-27-2019 | 11-29-2019 |
예시: 반복 항목 그룹
이 예시에서 스터디에는 신체 부위별 검사에 대한 반복 항목 그룹이 있는 신체 검사 폼이 있습니다.
와이드
Form.Name | Form.SeqNbr | ItemGroup.Name | ItemGroup.SeqNbr | body_area | date_of_exam | body_area | date_of_exam |
---|---|---|---|---|---|---|---|
physical_exam | 1 | exam_by_body_area | 1 | 머리 | 12-11-2019 | --- | --- |
physical_exam | 1 | exam_by_body_area | 2 | --- | --- | 가슴 | 12-11-2019 |
컴팩트
Form.Name | Form.SeqNbr | ItemGroup.Name | ItemGroup.SeqNbr | body_area | date_of_exam |
---|---|---|---|---|---|
physical_exam | 1 | exam_by_body_area | 1 | 머리 | 12-11-2019 |
physical_exam | 1 | exam_by_body_area | 2 | 가슴 | 12-11-2019 |
로그 폼 이벤트
EDC 내의 일부 이벤트는 이벤트 날짜가 연결되어 있지 않습니다. 이러한 이벤트는 "로그" 이벤트이며 해당 이벤트 내의 FORMS는 "로그 폼"입니다. 로그 폼의 일반적인 예로는 이상 사례 및 병용약물 폼이 있습니다. 이러한 로그 폼 내의 정보는 예약된 이벤트와 관계없이 수집됩니다.
로그 폼이 프로젝션에 포함되면 CQL은 해당 폼을 로그 이벤트 아래에 그룹화합니다. 로그 이벤트는 항상 결과 세트의 다른 모든 이벤트 그룹 뒤에 나열됩니다.
함수
CQL은 지정된 DATAITEM 또는 FORM에 대한 추가 정보를 제공하는 다양한 함수를 지원합니다. CQL 프로젝션, 필터 및 Order By 절에 해당 함수를 포함할 수 있습니다. CQL에는 임상 데이터 쿼리와 관련된 함수 세트도 포함되어 있습니다.
임상
다음과 같은 임상 함수를 사용할 수 있습니다.
DESCRIPTION
지정된 데이터 항목의 항목 정의에 대해 제공된 설명을 반환합니다.
구문
DESCRIPTION(DATAITEM)
예시
SELECT DESCRIPTION(Randomization.Randomization_Number) FROM Enrollment
이 쿼리는 등록 폼의 무작위 배정 번호 항목에 대한 설명 값을 반환합니다.
DMR
DATAITEM이 데이터 관리 검토됨(DMR)인 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다.
구문
DMR(DATAITEM)
예시
SELECT @HDR.Subject.Name, @HDR.Site.Name, @HDR.Event.Name, @HDR.Event.Date, AESTDAT, DMR(AESTDAT) as `Is AE Start Date DMR` FROM AE where @Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v')
FROZEN
지정된 데이터 항목이 현재 프리즈되어 있는지 여부에 따라 true 또는 false를 반환합니다. 이 값이 NULL이면 상위 항목(항목 그룹 및 폼)에서 상속됩니다.
구문
FROZEN(DATAITEM)
예시
SELECT FROZEN(Creation_Criteria.Initials) FROM Demographics
이 쿼리는 인구 통계 폼의 이니셜 항목이 프리즈되어 있는 경우 true
를 반환합니다. 이니셜 항목이 잠금 해제된 경우 이 쿼리는 false
를 반환합니다.
HELPTEXT
지정된 데이터 항목의 항목 정의에 대해 제공된 도움말 텍스트를 반환합니다.
구문
HELPTEXT(DATAITEM)
예시
SELECT HELPTEXT(Randomization.Randomization_Number) FROM Enrollment
이 쿼리는 등록 폼의 무작위 배정 번호 항목에 대한 도움말 텍스트(Vault EDC에서 생성된 항목의 도움말 콘텐츠 속성) 값을 반환합니다.
HINTLABEL
지정된 데이터 항목의 항목 정의에 대해 제공된 힌트 레이블을 반환합니다.
구문
SELECT HINTLABEL(Randomization.Randomization_Number) FROM Enrollment
이 쿼리는 등록 폼의 무작위 배정 번호 항목에 대한 힌트 레이블(Vault EDC에서 생성된 항목의 힌트 레이블 속성) 값을 반환합니다.
ILB
지정된 DATAITEM이 의도적으로 공백으로 남김으로 표시되어 있는지 여부에 따라 true 또는 false를 반환합니다. 이 값이 NULL이면 상위 폼에서 상속됩니다.
구문
ILB(DATAITEM)
예시
SELECT @HDR, * FROM Dosing WHERE ILB(Dosage_Amount) = FALSE
이 쿼리는 투여량 항목이 의도적으로 공백으로 남김으로 표시되지 않은 모든 대상자에 대해 투여 폼의 헤더 요약(@HDR) 및 모든 데이터 항목(*)을 반환합니다.
ILBREASON
의도적으로 공백으로 남김으로 표시된 DATAITEM 또는 FORM과 연결된 변경 이유를 반환합니다.
구문
ILBREASON(DATAITEM)
예시
SELECT ILBREASON(Dosage_Amount) FROM Dosing WHERE ILB(Dosage_Amount) = TRUE
이 쿼리는 의도적으로 공백으로 남김으로 표시된 투여 폼의 투여량 항목에 대한 변경 이유를 반환합니다. 이 쿼리는 CQL이 의도적으로 공백으로 남김으로 표시되지 않은 투여량 항목에 대한 행을 반환하지 않도록 결과를 필터링합니다.
LABEL
지정된 DATAITEM의 항목 정의에 대해 제공된 레이블을 반환합니다. 현지화된 레이블을 반환하기 위해 대체 로캘을 지정하도록 선택할 수 있습니다. 기본적으로 LABEL()은 현재 사용자의 로캘로 레이블을 반환합니다. Vault CMDS 로캘 값 목록은 여기를 참조하십시오.
구문
LABEL(DATAITEM,['locale'])
예시
SELECT LABEL(Randomization.Randomization_Number, 'es_PR') FROM Enrollment
이 쿼리는 등록 폼의 무작위 배정 번호 항목에 대해 현지화된(es_PR 또는 푸에르토리코의 경우) 항목 레이블을 반환합니다.
CODELABEL
코드 목록 유형 데이터 항목에 대해 선택한 코드 목록 항목의 레이블을 반환합니다.
구문
CODELABEL(DATAITEM)
예시
SELECT CODELABEL(adverse_event.AEACTN) FROM Adverse_Event
이 쿼리는 AEACTN(스터디 약물에 대한 조치 행동) 코드 목록 항목에 대해 선택된 코드 목록 항목의 레이블을 반환합니다.
LASTMODIFIEDDATE
DATAITEM이 마지막으로 수정된 날짜를 반환합니다(Vault EDC에 포함된 데이터의 경우 항목 개체의 마지막 수정 날짜 필드를 기준으로 함).
구문
LASTMODIFIEDDATE(DATAITEM)
예시
SELECT LASTMODIFIEDDATE(Randomization.Randomization_Number) FROM Enrollment
등록 폼의 무작위 배정 번호 항목을 마지막 수정 날짜를 반환합니다.
LOCKED
지정된 DATAITEM이 현재 잠겨 있는지 여부에 따라 true 또는 false를 반환합니다. 이 값이 NULL이면 상위 항목(항목 그룹 및 폼)에서 상속됩니다.
구문
LOCKED(DATAITEM)
예시
SELECT LOCKED(Creation_Criteria.Initials) FROM Demographics
이 쿼리는 인구 통계 폼의 이니셜 항목이 잠겨 있는 경우 true
를 반환합니다. 이니셜 항목이 잠금 해제된 경우 이 쿼리는 false
를 반환합니다.
SDV
DATAITEM이 원본 데이터 확인됨(SDV)인 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다.
구문
SDV(DATAITEM)
예시
SELECT @HDR.Subject.Name, @HDR.Site.Name, @HDR.Event.Name, @HDR.Event.Date, AETERM, SDV(AETERM) as `Is AE Term SDV` FROM AE where @Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v')
SIGNED
지정된 DATAITEM이 서명되었는지 여부에 따라 true 또는 false를 반환합니다. 이 값이 NULL이면 상위 항목(항목 그룹 및 폼)에서 상속됩니다.
구문
SIGNED(DATAITEM)
예시
SELECT SIGNED(Creation_Criteria.Initials) FROM Demographics
이 쿼리는 인구 통계 폼의 이니셜 항목이 서명된 경우 true
를 반환합니다. 이니셜 항목이 서명되지 않은 경우 이 쿼리는 false
를 반환합니다.
STATUS
DATAITEM의 상태를 반환합니다. 이 함수를 사용하면 STATUS()
대신 점 표기법과 @Form 변수를 사용하여 폼의 상태를 반환할 수도 있습니다. 두 번째 예시를 참조하십시오.
구문
STATUS(DATAITEM)
예시
SELECT STATUS(Randomization.Randomization_Number) FROM Enrollment
이 쿼리는 등록 폼에 있는 무작위 배정 번호 항목의 상태를 반환합니다.
SELECT @Form.Status FROM Enrollment
이 쿼리는 등록 폼의 상태를 반환합니다.
UOM
DATAITEM에 대한 측정 단위(UOM)를 반환합니다.
구문
UOM(DATAITEM)
예시
SELECT UOM(Vitals.Weight) FROM Vitals
이 쿼리는 활력징후 폼의 체중 항목에 대한 UOM을 반환합니다.
UOMTRANSLATED
사용자가 입력한 단위 대신 기본 단위의 측정 단위(UOM)를 반환합니다(예: 섭씨 대신 화씨).
구문
UOMTRANSLATED(Vitals.Temperature)
예시
SELECT TRANSLATED(Vitals.Temperature) FROM Vitals
이 쿼리는 체온 항목의 기본 단위인 "화씨"를 반환합니다.
TRANSLATED
사용자가 입력한 단위에서 기본 단위로 변환된 기본 단위의 값을 반환합니다.
구문
TRANSLATED(DATAITEM)
예시
SELECT TRANSLATED(Vitals.Temperature) FROM Vitals
이 쿼리는 사이트 사용자가 섭씨로 체온을 입력한 경우에도 활력징후 폼의 체온 항목에서 화씨(기본 단위) 값을 반환합니다.
FILL
CQL NULL
을 반환하는 셀에 대해 반복되지 않는 항목 그룹의 항목에서 지정된 채우기 값을 반환합니다. 이 함수는 프로젝션에서만 사용할 수 있습니다.
구문
FILL(DATAITEM)
예시
select @HDR.Subject.Name, @HDR.Site.Name, @Form.SeqNbr, @ItemGroup.SeqNbr, CMTRT, fill(CMTRT) as fill_CMTRT, CMSTDAT, CMONGO from CM where (@Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v'))
이 예시에서 CM
폼에는 반복 항목 그룹과 반복되지 않는 항목 그룹이 포함되어 있습니다. CMTRT 항목은 반복되지 않는 그룹에 있으므로 반복 항목 그룹 인스턴스의 행에서 --
(NULL
의 경우)를 반환합니다. 이 예시에서는 fill_CMTRT
열에 있는 해당 열의 null 셀에 대한 CMTRT
항목의 값을 반환합니다.
FormName, FormSeqNbr, ItemGroupName, ItemGroupSeqNbr
데이터 항목에 대한 폼 및 항목 그룹의 이름과 시퀀스 번호를 반환합니다.
구문
FormName(Item), FormSeqNbr(Item), ItemGroupName(Item), ItemGroupSeqNbr(Item)
예시
SELECT FormName(ae_term), FormSeqNbr(ae_term), ItemGroupName(ae_term), ItemGroupSeqNbr(ae_term) FROM adverse_event
실험실
EDC의 실험실 모듈에 포함된 데이터와 함께 사용할 수 있는 함수는 다음과 같습니다.
SPECIMENTYPE
LBTEST 열에 지정된 검사항목의 검체 유형을 반환합니다. 이 함수와 함께 LBTEST 항목을 사용합니다.
구문
SpecimenType(LBTEST)
예시
SELECT LBTEST, SpecimenType(LBTEST) FROM edc.baseline_labs
위 예시에서는 테스트에 대한 LBTEST 항목과 검체 유형을 반환합니다.
TESTINGMETHOD
LBTEST 열에 지정된 검사항목의 테스트 방법을 반환합니다. 이 함수와 함께 LBTEST 항목을 사용합니다.
구문
TestingMethod(LBTEST)
예시
SELECT LBTEST, TestingMethod(LBTEST) FROM edc.baseline_labs
위 예시에서는 테스트에 대한 LBTEST 항목과 테스트 방법을 반환합니다.
LOINCCODE
LBTEST 열에 지정된 검사항목의 LOINC 코드를 반환합니다. 이 함수와 함께 LBTEST 항목을 사용합니다.
구문
LOINCCode(LBTEST)
예시
SELECT LBTEST, LOINCCode(LBTEST) FROM edc.baseline_labs
위 예시에서는 테스트에 대한 LBTEST 항목과 LOINC 코드를 반환합니다.
ANALYTECODE
LBTEST 열에 지정된 검사항목의 검사항목 코드를 반환합니다. 이 함수와 함께 LBTEST 항목을 사용합니다.
구문
AnalyteCode(LBTEST)
예시
SELECT LBTEST, AnalyteCode(LBTEST) FROM edc.baseline_labs
위 예시에서는 테스트에 대한 LBTEST 항목과 검사항목 코드를 반환합니다.
LABLOCTITLE
실험실 위치에 대한 실험실 제목을 반환합니다. LBLOC는 실험실 ID만 반환합니다. 이 함수와 함께 LBLOC 항목을 사용합니다.
구문
LabLocTitle(LBLOC)
예시
SELECT LBLOC, LabLocTitle(LBLOC) FROM edc.baseline_labs
위 예시에서는 기준 실험실 폼에서 선택한 실험실 위치에 대한 실험실 ID(LBLOC) 및 실험실 위치 제목을 반환합니다.
OVERRIDEREASON
사이트 사용자가 표준 재정의를 입력할 때 제공한 재정의 이유를 반환합니다. 이 함수와 함께 LBOVRDNRLO 및 LBOVRDNRHI 항목을 사용합니다.
구문
OverrideReason(LBOVRDNRLO), OverrideReason(LBOVRDNHRI)
예시
SELECT OverrideReason (LBOVRDNRLO), OverrideReason(LBOVRDNRHI) FROM edc.baseline_labs
코딩
다음 함수를 사용하면 할당된 코딩된 용어 및 코딩 폼 상태에 대한 정보를 검색할 수 있습니다. Vault 코더는 MedDRA 및 WHODrug(B3 및 C3) 사전을 사용한 코딩을 지원합니다.
Vault 코더를 사용하도록 구성되지 않은 폼에서 해당 함수를 사용하는 경우 CQL에서 오류를 반환합니다.
CODEDTERM
코딩된 용어가 있는 경우(폼의 코드 요청이 코딩됨 또는 자동 코딩됨 상태인 경우) 데이터 항목에 대한 코딩된 용어를 반환합니다. 기본적으로 CQL은 MedDRA 사전의 기본 용어와 WHODrug 사전의 기본 이름을 반환합니다. 용어 레벨을 지정하여 HLT 또는 LLT와 같은 다른 레벨을 반환할 수 있습니다.
구문
CODEDTERM(Item, 'TermLevel')
예시
SELECT CODEDTERM(ae_term.ae, 'Primary Path') as `Primary Path`, CODEDTERM(ae_term.ae, 'LLT') as LLT, CODEDTERM(ae_term.ae, 'PT') as PT, CODEDTERM(ae_term.ae, 'HLT') as HLT, CODEDTERM(ae_term.ae, 'HLGT') as HLGT, CODEDTERM(ae_term.ae, 'SOC') as SOC FROM adverse_event
용어 레벨
MedDRA | WHODrug |
---|---|
기본 경로 | 약물 이름 |
LLT | 기본 이름 |
PT | ATC4 |
HLT | ATC3 |
HLGT | ATC2 |
SOC | ATC1 |
CODEDCODE
코딩된 코드가 있는 경우(폼의 코드 요청이 코딩됨 또는 자동 코딩됨 상태인 경우) 데이터 항목에 대한 코딩된 코드를 반환합니다. 기본적으로 CQL은 MedDRA 사전의 기본 용어 코드와 WHODrug 사전의 기본 코드를 반환합니다. 코드 레벨을 지정하여 다른 레벨을 반환할 수 있습니다.
구문
CODEDCODE(Item, 'CodeLevel')
예시
SELECT CODEDCODE(medication_therapy.conmed, 'DrugCD'), CODEDCODE(medication_therapy.conmed, 'PreferredCD'), CODEDCODE(medication_therapy.conmed, 'LLTCD'), CODEDCODE(medication_therapy.conmed, 'PTCD'), CODEDCODE(medication_therapy.conmed, 'HLTCD'), CODEDCODE(medication_therapy.conmed, 'HLGTCD'), CODEDCODE(medication_therapy.conmed, 'SOCCD') FROM concomitant_medication
코드 레벨
MedDRA | WHODrug |
---|---|
– | DrugCD |
LLTCD | PreferredCD |
PTCD | ATC4CD |
HLTCD | ATC3CD |
HLGTCD | ATC2CD |
SOCCD | ATC1CD |
CODEDDICTREL
폼에 할당된 코딩된 사전 릴리스 버전을 반환합니다.
구문
CODEDDICTREL(Item)
예시
SELECT CODEDDICTREL(ae_term.ae) FROM adverse_event SELECT CODEDDICTREL(medication_therapy.conmed) FROM concomitant_medication
CODEDSTATUS
항목(코드 요청)의 코딩 상태를 반환합니다.
구문
CODEDSTATUS(item)
예시
SELECT CODEDSTATUS(ae_term.ae) FROM adverse_event
CODEDBY
항목에 대한 Coded By(코드 요청을 코딩한 사용자의 사용자 ID)를 반환합니다.
구문
CODEDBY(item)
예시
SELECT CODEDBY(ae_term.ae) FROM adverse_event
LASTCODED
항목에 대한 마지막 코딩 날짜(코드 요청이 마지막으로 코딩됨 또는 자동 코딩됨 상태로 이동한 날짜)를 반환합니다.
구문
LASTCODED(item)
예시
SELECT LASTCODED(ae_term.ae) FROM adverse_event
참조 개체
다음과 같은 참조 개체 함수를 사용할 수 있습니다.
KEYMATCH
related_item
과 related_key
사이에 일치하는 항목이 있는 경우 true
를 반환합니다.
KEYMATCH
는 일치시킬 항목에 대한 매니페스트 파일의 related_item
및 related_key
를 활용합니다. 폼의 related_item이 참조 데이터의 related_key
와 일치하는 경우 keymatch 열의 값은 true
입니다. 그렇지 않으면 값은 false
입니다.
KEYMATCH
함수의 첫 번째 인수(SourceName.FormName
) 에서 폼의 원본을 지정하면 첫 번째 인수에 지정된 SourceName.FormName
은 FROM
절의 SourceName.FormName
과 정확히 일치해야 합니다.
구문
KEYMATCH(form_name, reference_object_name)
흐름 제어
다음과 같은 흐름 제어 함수를 사용할 수 있습니다.
IF
논리식을 평가하고 true 또는 false인 경우 값을 반환합니다. 이 함수는 두 값을 비교할 때 유용합니다.
구문
IF(<Expression>, <Return_Value_True>,<Return_Value_False>)
예시
SELECT IF(Item1=Item2,1,0) as comp FROM Form1
이 쿼리는 항목 1이 항목 2와 같은 경우 "1"을 반환합니다. 항목 1이 항목 2와 같지 않으면 이 쿼리는 "0"을 반환합니다.
CASE
논리식을 평가하고 true 또는 false인 경우 값을 반환합니다. 이 함수는 여러 값을 비교할 때 유용합니다.
구문
CASE WHEN(<Expression>) THEN '<Return_Value>' ELSE '<Return_Value>' END
예시
SELECT CASE WHEN(Item1=Item2) THEN 'a' WHEN Item1 > Item2 THEN 'b' ELSE 'c' END FROM Form1
이 쿼리는 항목 1이 항목 2와 같으면 'a'를 반환하고, 항목 1이 항목 2보다 크면 'b'를 반환하고, 두 조건 중 어느 것도 true가 아니면 'c'를 반환합니다.
IFNULL
DATAITEM을 평가하고 DATAITEM이 NULL인 경우 값을 반환합니다.
구문
IFNULL(DATAITEM,<Return_Value>)`
예시
SELECT IF(IFNULL(Item1,0)=Item2,1,0) as comp FROM Form1
이 쿼리는 Item1과 Item2가 같거나 Item1이 NULL이고 Item2가 0인 경우 "1"을 반환합니다. 그렇지 않으면 이 쿼리는 "0"을 반환합니다.
문자열
다음과 같은 문자열 함수를 사용할 수 있습니다.
CONCAT
인수를 연결한 후 결과 문자열을 반환합니다.
구문
CONCAT(DATAITEM, 'string')
예시
SELECT CONCAT(@HDR.Subject.ID,'_',Creation_Criteria.Initials) FROM Demographics
이 쿼리는 대상자 ID, 밑줄 및 이니셜 항목 값의 연결된 문자열(예: 101-1001_CRJ)을 반환합니다.
CONCAT_WS
구분 기호와 함께 인수를 반환합니다.
구문
CONCAT_WS ( separator, DATAITEM1, DATAITEM2)
예시
select @HDR.Subject.Name, @HDR.Event.Name, AETERM, concat_ws ( ' ', 'AE ID ', @Form.SeqNbr, ' . ', @ItemGroup.SeqNbr ) from AE
GROUP_CONCAT
그룹에서 NULL이 아닌 값의 연결된 문자열을 반환합니다.
구문
GROUP_CONCAT ( DATAITEM)
예시
select @HDR.Subject.Name, @HDR.Event.Name, @Form.SeqNbr, group_concat(@ItemGroup.SeqNbr) from `EDC`.`AE` where @Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v') group by @HDR.Subject.Name, @Form.SeqNbr
COALESCE
NULL이 아닌 첫 번째 인수를 반환합니다.
구문
COALESCE (DATAITEM1, DATAITEM2, ...)
예시
select @HDR.Subject.Name, MHTERM, MHSTDAT, MHONGO, coalesce(MHTRT_1, MHTRT_2) from MHTERM
LENGTH
인수에 전달된 값 또는 DATAITEM의 길이를 반환합니다.
구문
LENGTH(DATAITEM)
예시
SELECT LENGTH(Item1) FROM Form1
이 쿼리는 폼 1에서 항목 1 값의 길이를 반환합니다.
TRIM
DATAITEM에서 선행 및 후행 공백을 제거합니다.
구문
TRIM(DATAITEM)
예시
SELECT TRIM(Baseline_X-ray.Interpretation) FROM Baseline_Exam
이 쿼리는 선행 또는 후행 공백이 제거된 기준 검사 폼에서 해석 항목의 값을 반환합니다.
LTRIM
DATAITEM에서 선행 공백을 제거합니다.
구문
LTRIM(DATAITEM)
예시
SELECT LTRIM(Baseline_X-ray.Interpretation) FROM Baseline_Exam
이 쿼리는 선행 공백이 제거된 기준 검사 폼에서 해석 항목의 값을 반환합니다.
RTRIM
DATAITEM에서 후행 공백을 제거합니다.
구문
RTRIM(DATAITEM)
예시
SELECT RTRIM(Baseline_X-ray.Interpretation) FROM Baseline_Exam
이 쿼리는 후행 공백이 제거된 기준 검사 폼에서 해석 항목의 값을 반환합니다.
UPPER
DATAITEM을 대문자로 변환합니다.
구문
UPPER(DATAITEM)
예시
SELECT UPPER(Item1) FROM Form1
이 쿼리는 이니셜 항목의 값을 대문자로 반환합니다(예: "cfa"에서 "CFA"로).
LOWER
DATAITEM을 소문자로 변환합니다.
구문
LOWER(DATAITEM)
예시
SELECT LOWER(Item1) FROM Form1
이 쿼리는 항목 1의 값을 소문자로 반환합니다.
LEFT
가장 왼쪽에 있는 len(문자 수) 문자를 반환합니다.
구문
LEFT(DATAITEM,len)
예시
SELECT LEFT(Creation_Criteria.Initials,1) FROM Demographics
이 쿼리는 이니셜 항목에서 가장 오른쪽 문자(대상자의 마지막 이니셜)를 반환합니다.
RIGHT
가장 오른쪽에 있는 len(문자 수) 문자를 반환합니다.
구문
RIGHT(DATAITEM,len)
예시
SELECT RIGHT(@HDR.Subject.ID,4) FROM Demographics
이 쿼리는 대상자 ID에서 가장 오른쪽에 있는 4개의 문자를 반환합니다. Cholecap2019_Phase1 스터디에서는 대상자의 4자리 식별자(예: 1001)로, 사이트 번호에 추가되어 대상자 ID(예: 104-1001)를 구성합니다.
MID
지정된 위치에서 시작하는 하위 문자열을 반환합니다.
구문
MID ( DATAITEM, start index, length )
예시
select @HDR.Subject.Name, AETOXGR, MID(AETOXGR, 7, 1) as `Grade Number` from `EDC`.`AE`
REGEXP
문자열이 정규식과 일치하는지 여부
구문
REGEXP 'regular expression pattern'
예시
select @HDR.Subject.Name, SAE_TERM from `EDC`.`AE` where SAE_TERM regexp ',|\\[|\\]|{|}|\\(|\\)'
REPLACE
지정된 문자열의 발생을 바꿉니다.
구문
REPLACE ( DATAITEM , 'substring' , 'new_string')
예시
select @HDR.Subject.Name, AETOXGR, replace(AETOXGR, 'GRADE', 'G') from `EDC`.`AE`
SUBSTR
지정된 대로 하위 문자열을 반환합니다.
구문
SUBSTR (DATAITEM, start index, length)
예시
select @HDR.Subject.Name, AETOXGR, SUBSTR(AETOXGR, 7, 1) as `Grade Number` from `EDC`.`AE`
날짜 및 시간&
CDB는 EDC를 통해 캡처된 날짜 및 날짜/시간을 보는 세 가지 방법(대치, 원시 및 사이트 정규화)을 지원합니다. 대치 날짜는 날짜 또는 날짜/시간에서 누락된 부분(알 수 없음)을 대치하기 위해 논리가 적용되는 날짜입니다. EDC에서 스터디는 날짜 및 날짜/시간의 알 수 없는 일, 월 또는 시간 부분을 수집할 수 있습니다. CDB에서는 날짜에 알 수 없는 부분이 포함된 경우 해당 부분에 첫 번째 논리를 적용합니다. 월을 알 수 없는 경우 CDB는 연도의 첫 번째 월을 대치합니다. 일을 알 수 없는 경우 CDB는 하루의 첫 번째 시간을 입력합니다. 기본적으로 모든 날짜 및 날짜/시간은 알 수 없는 부분이 대치되는 전체 날짜 및 날짜/시간으로 반환됩니다. 이 작업은 날짜 및 날짜/시간 비교를 쉽게 검토하고 정리할 수 있도록 하기 위해 수행됩니다.
CDB는 RawDate()
함수로 입력한 날짜 및 날짜/시간의 정확한 표현을 반환할 수도 있습니다. 이 함수는 항상 문자열로 입력된 값을 정확히 반환하며 알 수 없는 부분을 대체하지 않습니다. 또한 CDB는 SiteNormalizedDate()
함수를 사용하여 날짜 또는 날짜/시간을 사이트 정규화 값으로 반환할 수 있습니다. 이 함수는 캡처된 사이트의 시간대와 일치하도록 조정된 날짜 및 날짜/시간을 반환합니다.
날짜 및 시간에 사용할 수 있는 함수는 다음과 같습니다.
ADDDATE
지정된 날짜 또는 날짜 유형 DATAITEM에서 날짜/시간 간격을 추가하고(이후 날짜가 발생) 날짜/시간을 반환합니다.
INTERVAL
을 사용하여 일수 또는 숫자 값과 단위를 제공할 수 있습니다.
구문
ADDDATE ('date', days)
또는
ADDDATE('date', INTERVAL value unit)
CQL은 다음과 같은 간격 단위를 지원합니다.
- MICROSECOND
- SECOND
- MINUTE
- HOUR
- DAY
- WEEK
- MONTH
- QUARTER
- YEAR
- SECOND_MICROSECOND
- MINUTE_MICROSECOND
- MINUTE_SECOND
- HOUR_MICROSECOND
- HOUR_SECOND
- HOUR_MINUTE
- DAY_MICROSECOND
- DAY_SECOND
- DAY_MINUTE
- DAY_HOUR
- YEAR_MONTH
예시
SELECT ADDDATE(Randomization.Date_of_Randomization, INTERVAL 5 DAY) FROM Enrollment
이 쿼리는 무작위 배정 날짜 날짜 값으로부터 5일 후의 날짜를 반환합니다.
SUBDATE
지정된 날짜 또는 날짜 유형 DATAITEM에서 날짜/시간 간격을 빼고(이전 날짜가 발생) 날짜/시간을 반환합니다.
INTERVAL
을 사용하여 일수 또는 숫자 값과 단위를 제공할 수 있습니다.
구문
SUBDATE ('date', days)
또는
SUBDATE('date', INTERVAL value unit)
CQL은 다음과 같은 간격 단위를 지원합니다.
- MICROSECOND
- SECOND
- MINUTE
- HOUR
- DAY
- WEEK
- MONTH
- QUARTER
- YEAR
- SECOND_MICROSECOND
- MINUTE_MICROSECOND
- MINUTE_SECOND
- HOUR_MICROSECOND
- HOUR_SECOND
- HOUR_MINUTE
- DAY_MICROSECOND
- DAY_SECOND
- DAY_MINUTE
- DAY_HOUR
- YEAR_MONTH
예시
SELECT SUBDATE(Randomization.Date_of_Randomization, INTERVAL 5 DAY) FROM Enrollment
이 쿼리는 무작위 배정 날짜 날짜 값으로부터 5일 전의 날짜를 반환합니다.
TIMESTAMPDIFF
날짜/시간 식에서 간격을 뺍니다.
구문
TIMESTAMPDIFF(month, date, date)
예시
select @HDR.Subject.Name, AESTDT, AEENDDT, timestampdiff(day, AESTDT, AEENDDT) from `EDC`.`AE`
DATEDIFF
두 날짜의 차이를 일 단위로 반환합니다.
구문
DATEDIFF('date', 'date')
예시
SELECT DATEDIFF(Randomization.Date_of_Randomization, '2019-12-31') FROM Enrollment
이 쿼리는 무작위 배정 날짜 항목의 날짜 값과 12-12-2019 간의 차이(일)를 반환합니다.
DATE_FORMAT
지정된 날짜를 지정된 형식으로 반환합니다. 아래에서 날짜 지정자 목록을 참조하십시오.
구문
DATE_FORMAT(<date>,'<format>')
예시
SELECT DATE_FORMAT(@HDR.Event.Date, '%Y-%m-%d')
이 쿼리는 이벤트 날짜를 %Y-%m-%d 형식(예: 2019-12)으로 반환합니다.
SITENORMALIZEDDATE
기본적으로 CDB는 EDC에 입력된 날짜/시간 값을 반환합니다. SiteNormalizedDate 함수는 UTC 시간으로 정규화된 날짜/시간을 반환합니다.
구문
SiteNormalizedDate(date)
예시
select @HDR.Site.Name, @HDR.Site.Number, @HDR.Site.Timezone, @HDR.Site.Country, @HDR.Site.CountryName, @HDR.Subject.Name, AESTDT, SiteNormalizedDate(AESTDT) as 'Site Normalized Start Date' from `EDC`.`AE` where @Form.Status = 'submitted__v'or @HDR.Event.Status in ('did_not_occur__v')
이 예시에서 대상자는 3개의 시간대에서 동일한 AE 시작 날짜를 갖습니다. AESTDAT는 EDC에 입력된 날짜/시간 값을 반환하고 SiteNormalizedDate
함수는 UTC 시간으로 정규화된 날짜/시간 값을 반환합니다.
RAWDATE
지정된 날짜 또는 날짜/시간을 원시 형식으로 반환합니다. 원시 형식에서는 부분 날짜 및 시간이 수정 없이 표시됩니다.
사이트의 현지 시간대로 날짜를 입력하면 RawDate
는 사이트의 현지 시간대를 반환합니다.
아래에서 원시 형식의 부분 날짜 목록을 참조하십시오.
구문
RawDate(<date>)
예시
select @HDR.Site.Name, @HDR.Site.Number, @HDR.Site.Timezone, @HDR.Site.Country, @HDR.Site.CountryName, @HDR.Subject.Name, AESTDT, SiteNormalizedDate(AESTDT) as 'Site Normalized Start Date', RawDate(AESTDT) as 'Raw Start Date' from `EDC`.`AE` where @Form.Status = 'submitted__v'or @HDR.Event.Status in ('did_not_occur__v')
이 예시에서 CQL은 AESTDT를 원시 형식의 '원시 시작 날짜'로 반환합니다.
이 쿼리는 대상자 DOB 항목의 날짜 값을 원시 형식으로 반환합니다.
SDTMDATEFORMAT
지정된 날짜 또는 날짜/시간을 SDTM(ISO 8061) 형식으로 반환하여 날짜의 알 수 없는 부분이 있는 경우 이를 자동으로 처리합니다. 값은 문자열로 반환됩니다. 아래에서 SDTM 형식의 부분 날짜 목록을 참조하십시오.
구문
SDTMDateFormat(<date>)
예시
SELECT SDTMDateFormat(mh.condition_start_date) from EDC.medical_history
이 쿼리는 조건 시작 날짜 항목의 날짜 값을 SDTM 형식으로 반환하여 알 수 없는 부분을 처리합니다.
STR_TO_DATE
문자열과 문자열의 날짜 형식이 지정되면 날짜를 반환합니다. 아래에서 날짜 지정자 목록을 참조하십시오.
구문
SELECT STR_TO_DATE('<string>', '<format>')
예시
SELECT STR_TO_DATE('January 01, 2021', '%M %d, %Y')
이 쿼리는 Jan 1, 2021을 날짜로 반환합니다.
CURDATE
현재 날짜를 YYYY-MM-DD로 반환합니다.
예시
SELECT CURDATE() FROM Demographics
이 쿼리는 현재 날짜를 반환합니다.
NOW
현재 날짜 및 시간을 'YYYY-MM-DD hh:mm:ss'의 값으로 반환합니다.
예시
SELECT NOW() FROM Demographics
이 쿼리는 현재 날짜 및 시간을 반환합니다.
YEAR
지정된 날짜에서 연도를 반환합니다.
구문
YEAR('date')
예시
SELECT YEAR('2019-12-12') FROM Demographics
이 함수는 2019-12-12에서 연도에 해당하는 "2019"를 반환합니다.
MONTH
지정된 날짜에서 월을 반환합니다.
구문
MONTH('date')
예시
SELECT MONTH('2019-12-12') FROM Demographics
이 함수는 2019-12-12에서 월에 해당하는 "12"를 반환합니다.
WEEK
지정된 날짜에서 연도의 주를 반환합니다.
구문
WEEK('date')
예시
SELECT WEEK('2019-12-12') FROM Demographics
이 함수는 2019-12-12에서 연도의 주에 해당하는 "50"을 반환합니다.
DAY
지정된 날짜에서 일을 반환합니다.
구문
DAY('date')
예시
SELECT DAY('2019-12-12') FROM Demographics
이 함수는 2019-12-12에서 일에 해당하는 "12"를 반환합니다.
HOUR
시간이 지정되면 시간을 반환합니다.
구문
HOUR('time')
예시
SELECT HOUR('10:05:03') FROM Demographics
이 함수는 10:05:03에서 시간에 해당하는 "10"을 반환합니다.
MINUTE
시간이 지정되면 분을 반환합니다.
구문
MINUTE('time')
예시
SELECT MINUTE('10:05:03') FROM Demographics
이 함수는 10:05:03에서 분에 해당하는 "05"를 반환합니다.
SECOND
시간이 지정되면 초를 반환합니다.
구문
SECOND('time')
예시
SELECT SECOND('10:05:03') FROM Demographics
이 함수는 10:05:03에서 초에 해당하는 "03"을 반환합니다.
LAST_DAY
날짜가 지정되면 월의 마지막 날을 반환합니다.
구문
LAST_DAY('date'), LAST_DAY(DATAITEM)
예시
SELECT LAST_DAY(@HDR.Event.Date)
이 쿼리는 이벤트 날짜의 월에서 월의 마지막 날을 반환합니다. 예를 들어 이벤트 날짜가 2019-11-15인 경우 이 쿼리는 "30" 또는 11월의 마지막 날을 반환합니다.
알 수 없는 날짜
워크벤치는 CQL 쿼리에서 Vault EDC 또는 타사 데이터의 알 수 없는 날짜 및 날짜/시간 참조를 지원합니다. 워크벤치에서는 다음과 같은 알 수 없는 날짜 및 시간 옵션을 사용할 수 있습니다.
- 월, 일, 시간
- 일 및 시간
- Time
기본적으로 워크벤치는 알 수 없는 날짜 부분을 월의 첫 번째 날 또는 연도의 첫 번째 월로 변환하고 알 수 없는 시간을 00:00:00으로 변환합니다. 이렇게 하면 알 수 없는 날짜 및 시간에 대한 걱정 없이 날짜를 보편적으로 처리할 수 있습니다.
Unknown
날짜에 알 수 없는 부분(M
, D
, T
)이 포함되어 있으면 날짜의 알 수 없는 부분을 반환하고, 그렇지 않으면 COMPLETE
문자열을 반환합니다.
구문
Unknown(Date)
예시
Unknown(edc.mh_condition_start_date)
이 예시에서 병력 폼의 조건 시작 날짜 항목은 알 수 없는 월, 일 및 시간을 허용합니다. EDC 사용자가 "07-17-2021 5:15"를 입력하면 입력한 날짜에 알 수 없는 부분이 없으므로 함수는 COMPLETE
를 반환합니다. EDC 사용자가 "06-?-2005 ?"를 입력하면 날짜에 알 수 없는 일 및 시간이 있으므로 함수는 D,T
를 반환합니다.
UnknownImpute
이 함수를 사용하면 사용자가 알 수 없는 부분을 나타내는 방법을 지정할 수 있습니다. 항목이 지정된 함수는 원시 날짜 값을 사용하여 날짜에 알 수 없는 부분이 포함되어 있는지 확인한 다음, 알 수 없는 부분을 처리하는 방법에 대해 제공된 논리를 적용합니다. 결과는 날짜 데이터 형식의 값입니다. 값에 알 수 없는 부분이 포함되어 있지 않으면 함수는 기본 날짜를 반환합니다.
구문
UnknownImpute(Item, 'day impute type', 'month impute type', 'time impute type')
대치 유형:
날짜 또는 날짜/시간에 이러한 알 수 없는 부분이 허용되지 않는 경우에도 각 대치 유형을 입력해야 합니다. 입력 유형은 작은따옴표(')로 묶어야 합니다.
- 일:
FIRST DAY:
월의 첫 번째 날LAST DAY
: 월의 마지막 날MID DAY
: 월의 15일
- 월:
FIRST MONTH
: 1월(1)LAST MONTH
: 12월(12)MID MONTH
: 6월(6)
- 시간:
FIRST HOUR
: 00:00 24시간LAST HOUR
: 23:59 24시간MID HOUR
: 12:00 24시간
예시
UnknownImpute(edc.ae_start_datetime, 'FIRST DAY', 'FIRST MONTH', 'FIRST HOUR')
이 예시에서 AE 시작 날짜/시간 항목은 시간에 대한 알 수 없는 부분을 허용합니다. 이 쿼리는 알 수 없는 시간이 12:00 AM으로 설정된 AE 시작 날짜/시간을 반환합니다. 예를 들어 EDC에 입력한 날짜/시간이 "Jul 22, 2021 ?"인 경우 CQL은 "Jul 22, 2021 12:00 AM"을 반환합니다.
날짜 및 시간 지정자&
CQL에서 사용할 수 있는 날짜 및 시간 지정자는 다음과 같습니다.
지정자 | 정의 |
---|---|
%r |
시간, 12시간제(hh:mm:ss, 뒤에 AM 또는 PM 표시) |
%T |
시간, 24시간제(hh:mm:ss) |
%I |
시간, 12시간제, 앞에 0 표시(01..12) |
%l |
시간, 12시간제, 앞에 0 표시 안 함(1..12) |
%k |
시간, 24시간제, 앞에 0 표시(01..24) |
%i |
분, 숫자(00..59) |
%S |
초(00..59) |
%s |
초(00..59), %S와 동일 |
%f |
마이크로초(000000..999999) |
%p |
AM 또는 PM |
%d |
일, 숫자(00..31) |
%e |
일, 숫자, 앞에 0 표시 안 함(0..31) |
%D |
영어 접미사가 포함된 일(0th, 1st, 2nd, 3rd...) |
%j |
연도의 일(001..366) |
%w |
요일(0은 일요일..6은 토요일) |
%W |
요일 이름(일요일..토요일) |
%a |
요일 이름, 축약형(일..토) |
%M |
월 이름(1월..12월) |
%b |
월 이름, 축약형(1월..12월) |
%m |
월, 숫자(00..12) |
%Y |
연도, 숫자, 4자리 |
%y |
연도, 숫자, 2자리 |
%U |
주(00..53), 여기서 일요일은 주의 첫 번째 날, WEEK() 모드 0 |
%u |
주(00..53), 여기서 월요일은 주의 첫 번째 날, WEEK() 모드 1 |
%V |
주(00..53), 여기서 일요일은 주의 첫 번째 날, WEEK() 모드 2, %X와 함께 사용됨 |
%v |
주(01..53), 여기서 월요일은 주의 첫 번째 날, WEEK() 모드 3, %x와 함께 사용됨 |
%X |
주의 연도, 숫자, 여기서 일요일은 주의 첫 번째 날, %V와 함께 사용됨 |
%x |
주의 연도, 숫자, 여기서 월요일은 주의 첫 번째 날, %v와 함께 사용됨 |
%% |
리터럴 % 문자 |
% x |
x, 위에 나열되지 않은 "x"의 경우 |
원시 형식 날짜
기록된 날짜 또는 날짜 시간 | 무가공 형식 | |
---|---|---|
1 | 27-Oct-2020 | 27-Oct-2020 |
2 | ?-Oct-2020 | UN-Oct-2020 |
3 | ?-?-2020 | UN-UNK-2020 |
4 | 27-Oct-2020 10:40 | 27-Oct-2020 10:40 |
5 | 27-Oct-2020 ? | 27-Oct-2020 UN:UN |
6 | ?-Oct-2020 ? | UN-Oct-2020 UN:UN |
7 | ?-?-2020 ? | UN-UNK-2020 UN:UN |
SDTM 형식 날짜
기록된 날짜 또는 날짜 시간 | 불확실성 구간 | 명목 날짜/시간(--DTC) | |
---|---|---|---|
1 | March 15, 2020 13:14:17 | 완료 날짜 | 2020-03-14T13:14:17 |
2 | March 15, 2020 13:14 | 알 수 없는 시간(초) | 2020-03-15T13:14 |
3 | March 15, 2020 13 | 알 수 없는 시간(분) | 2020-03-15T13 |
4 | March 15, 2020 | 알 수 없는 시간 | 2020-03-15 |
5 | March, 2020 | 알 수 없는 날 | 2020-03 |
6 | 2020 | 알 수 없는 달 | 2020 |
Other
CQL 쿼리에는 다음 함수도 사용할 수 있습니다.
CAST
Cast는 데이터 항목 또는 식 인수를 사용하여 지정된 데이터 형식으로 결과를 반환합니다.
구문
CAST(item AS data_type) CAST (expression AS data_type
CAST 함수에서 사용할 수 있는 데이터 형식은 다음과 같습니다.
- Binary
- CHAR
- DATE
- DATETIME
- TIME
- DECIMAL
- SIGNED
- UNSIGNED
예시
SELECT CAST(Exclusion_Criteria.Hypersensitivity_Constituents as CHAR) FROM Demographics
이 쿼리는 과민성 성분 코드 목록 유형 항목의 코드 목록 항목 값(Y 또는 N) 을 텍스트(char)로 반환합니다.
FIELD
문자열 목록 내에서 항목 값의 인덱스 또는 위치를 반환합니다. 이 함수는 결과 세트 내에서 가능한 값 목록의 순서를 사용자 정의하는 데 유용합니다.
구문
FIELD(DATAITEM, '<string1>', '<string2>','<stringN>')
예시
SELECT @HDR.Subject, Route, Dosage_Amount FROM Dosing ORDER BY FIELD(Route, 'Oral', 'Nasal', 'Topical')
이 쿼리는 경구에서 비강, 국소로의 경로에 따라 정렬된 대상자 레벨 헤더 정보와 경로 및 투여량 항목 값을 반환합니다.
UNION
Union은 여러 SELECT
문의 결과를 단일 결과 세트로 결합합니다. CQL은 첫 번째 SELECT
문에 나열된 열 이름을 열 이름으로 사용합니다. 첫 번째 SELECT
문에 있는 열의 경우 후속 SELECT
문에 있는 해당 열은 동일한 데이터 형식이어야 합니다. 예를 들어 첫 번째 문의 두 번째 열이 정수인 경우 두 번째 SELECT
문의 두 번째 열도 정수여야 합니다.
UNION
은 UNION ALL
과 마찬가지로 Union 쿼리에서 가능한 모든 결과 행을 반환합니다. UNION DISTINCT
를 사용하여 Union 쿼리에서 고유한 결과 행만 검색할 수 있습니다. UNION DISTINCT
는 중복이 100% 일치하는 중복 행만 제거합니다.
Union 제한: CQL은 UNION 연산을 4,000개로 제한합니다.
구문
SELECT ItemGroup.Item, ItemGroup.Item FROM Form1 UNION SELECT ItemGroup.Item, ItemGroup.Item FROM Form2
예시
SELECT test.date_collected, test.rbc, test.wbc FROM LocalLabs.Hematology UNION SELECT chem.date_collected, chem.total_protein, chem.urea_nitrogen FROM CentralLabs.Chemistry
UNPIVOT
UnPivot은 테이블의 열을 열 값으로 변환하는 데 사용할 수 있는 관계 연산자입니다. UnPivot에 @HDR 값을 포함하거나 WHERE, GROUP BY 또는 ORDER BY 절에서 피벗 해제되지 않은 항목을 참조할 수 없습니다.
현재 릴리스에서는 CDB가 CQL 문이 UnPivot
을 사용하는 목록에 대해 셀 강조 표시를 표시하지 않습니다.
구문
SELECT up.@HDR.Subject.Name, up_items FROM ( SELECT @HDR.Subject.Name, itemA, itemB, itemC, itemD) up UNPIVOT ( up_items FOR items in (itemA, itemB, itemC, itemD) ) as unpivot_table
예시: UnPivot
SELECT up.@HDR.Subject.Name up_items FROM ( SELECT @HDR.Subject.Name, body_temperature, height, weight, systolic_blood_pressure__mmhg_, diastolic_blood_pressure__mmhg_, pulse__bpm_ FROM Vitals) up UNPIVOT ( up_items FOR items in (body_temperature, height, weight, systolic_blood_pressure__mmhg_, diastolic_blood_pressure__mmhg_, pulse__bpm_) ) as unpivot_table
예시: 여러 UnPivot 섹션
SELECT @HDR.Subject.Name, @HDR.Event, Body_Temperature, vsResult, vsTest, VSSTAT, HIDe FROM ( SELECT @HDR.Subject.Name, Body_Temperature, Height, Weight, ILB(Body_Temperature), ILB(Height), ILB(Weight) From EDC.Vitals) main UNPIVOT (vsResult FOR vsTest in (Body_Temperature, Height, Weight)) as result UNPIVOT (VSSTAT FOR HIDe in (ILB(Body_Temperature), ILB(Height), ILB(Weight))) as ilb
예시: 여러 폼에서 UnPivot
SELECT @HDR.Subject.Name, d.MHTERM, b.Please_specify_abnormality AS term, up_item.vs_result, up_item.vs_test FROM (SELECT body_temperature, height, weight, systolic_blood_pressure__mmHg_, diastolic_blood_pressure__mmHg_, pulse__bpm_ FROM vitals) AS main UNPIVOT (vs_result FOR vs_test IN (body_temperature, systolic_blood_pressure__mmHg_, diastolic_blood_pressure__mmHg_, pulse__bpm_)) AS up_item, baseline_chest_x-ray_evaluation b, demographics d WHERE main.@HDR.Subject.ID = b.@HDR.Subject.ID AND main.@HDR.Subject.ID = d.@HDR.Subject.ID
지원되지 않는 사용 사례:
다음 사용 사례는 현재 릴리스에서 지원되지 않습니다.
- 하위 쿼리 내에서 UnPivot
- Union 내에서 UnPivot
- UnPivot 내에서 @Form 또는 @ItemGroup 속성 참조
하위 쿼리 내에서 UnPivot:
SELECT @HDR.Subject.Name, creation_criteria.subject_initials, creation_criteria.subject_dob, up.* FROM demographics.creation_criteria (SELECT @HDR.Subject.Name, up_item.vs_test, up_item.vs_result FROM (SELECT body_temperature, height, weight, systolic_blood_pressure__mmhg_, diastolic_blood_pressure__mmhg_, pulse__bpm_ FROM Vitals) as main UNPIVOT (vs_result FOR vs_test IN (body_temperature, height, weight, systolic_blood_pressure__mmhg_, diastolic_blood_pressure__mmhg_, pulse__bpm_)) AS up_item) AS up WHERE d.@HDR.Subject.Name = up.@HDR.Subject.Name
Union 내에서 UnPivot:
SELECT @HDR.Subject.Name, @HDR.Event.Name, up_item.* FROM (SELECT body_temperature, height, weight, systolic_blood_pressure__mmHg_, diastolic_blood_pressure__mmHg_, pulse__bpm_ FROM vitals) AS main UNPIVOT (vs_result FOR vs_test IN (vody_temperature, systolic_blood_pressure__mmHg_, diastolic_blood_pressure__mmHg_, pulse__bpm_)) AS up_item UNION ALL SELECT @HDR.Subject.Name, @HDR.Event.Name, up_item.* FROM (SELECT WBC, RBC, HEMOGLOBIN, HEMATOCRIT, PLATELET, NEUTROPHILS FROM hematology) AS main UNPIVOT (vs_result FOR vs_test IN (WBC, RBC, HEMOGLOBIN, HEMATOCRIT, PLATELET, NEUTROPHILS)) AS up_item;
사용 가능한 다른 함수
CQL 내에서는 다음 SQL 함수도 사용할 수 있습니다.
함수 | 선택 |
---|---|
ABS() | 절대값을 반환합니다. |
ACOS() | 아크 코사인을 반환합니다. |
ADDTIME() | 시간을 추가합니다. |
ASCII() | 가장 왼쪽 문자의 숫자 값을 반환합니다. |
ASIN() | 아크 사인을 반환합니다. |
ATAN() | 아크 탄젠트를 반환합니다. |
ATAN2(), ATAN() | 두 인수의 아크 탄젠트를 반환합니다. |
BIN() | 숫자의 이진 표현을 포함하는 문자열을 반환합니다. |
BINARY | 문자열을 이진 문자열로 변환합니다. |
BIT_AND() | 비트 단위 AND를 반환합니다. |
BIT_COUNT() | 설정된 비트 수를 반환합니다. |
BIT_LENGTH() | 인수 길이를 비트 단위로 반환합니다. |
BIT_OR() | 비트 단위 OR를 반환합니다. |
BIT_XOR() | 비트 단위 XOR을 반환합니다. |
CEIL() | 인수보다 작지 않은 가장 작은 정수 값을 반환합니다. |
CEILING() | 인수보다 작지 않은 가장 작은 정수 값을 반환합니다. |
CHAR() | 전달된 각 정수의 문자를 반환합니다. |
CHAR_LENGTH() | 인수의 문자 수를 반환합니다. |
CHARACTER_LENGTH() | CHAR_LENGTH()의 동의어 |
CHARSET() | 인수의 문자 세트를 반환합니다. |
COERCIBILITY() | 문자열 인수의 데이터 정렬 변환성 값을 반환합니다. |
COLLATION() | 문자열 인수의 데이터 정렬을 반환합니다. |
CONV() | 서로 다른 기수 간의 숫자를 변환합니다. |
CONVERT_TZ() | 한 시간대에서 다른 시간대로 변환합니다. |
COS() | 코사인을 반환합니다. |
COT() | 코탄젠트를 반환합니다. |
COUNT(DISTINCT) | 다양한 값의 개수를 반환합니다. |
CURRENT_DATE(), CURRENT_DATE | CURDATE()의 동의어 |
CURRENT_TIME(), CURRENT_TIME | CURTIME()의 동의어 |
CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP | NOW()의 동의어 |
CURTIME() | 현재 시간을 반환합니다. |
DATE_ADD() | 날짜에 값(간격)을 추가합니다. |
DATE_FORMAT() | 지정된 대로 날짜 형식을 지정합니다. |
DATE_SUB() | 날짜에서 값(간격)을 뺍니다. |
DAY() | DAYOFMONTH()의 동의어 |
DAYNAME() | 요일 이름을 반환합니다. |
DAYOFMONTH() | 일(0-31)을 반환합니다. |
DAYOFWEEK() | 인수의 요일 인덱스를 반환합니다. |
DAYOFYEAR() | 연도의 일(1-366)을 반환합니다. |
DEGREES() | 라디안을 도로 변환합니다. |
ELT() | 인덱스 번호에 있는 문자열을 반환합니다. |
EXP() | 의 거듭제곱으로 올립니다. |
EXPORT_SET() | 값 비트에 설정된 모든 비트에 대해 on 문자열을 얻고 설정되지 않은 모든 비트에 대해 off 문자열을 얻는 문자열을 반환합니다 |
EXTRACT() | 날짜의 일부를 추출합니다. |
FIND_IN_SET() | 두 번째 인수 내에 있는 첫 번째 인수의 인덱스(위치) |
FLOOR() | 인수보다 크지 않은 가장 큰 정수 값을 반환합니다. |
FORMAT() | 지정된 소수 자릿수로 형식이 지정된 숫자를 반환합니다. |
FOUND_ROWS() | LIMIT 절이 있는 SELECT의 경우 LIMIT 절이 없으면 반환되는 행의 수 |
FROM_BASE64() | base64로 인코딩된 문자열을 디코딩하고 결과를 반환합니다. |
FROM_DAYS() | 일수를 날짜로 변환합니다. |
FROM_UNIXTIME() | Unix 타임스탬프를 날짜 형식으로 지정합니다. |
GET_FORMAT() | 날짜 형식 문자열을 반환합니다. |
GREATEST() | 가장 큰 인수를 반환합니다. |
HEX() | 소수점 또는 문자열 값의 16진수 표현 |
INSERT() | 지정된 위치에 지정된 문자 수까지 하위 문자열을 삽입합니다. |
INSTR() | 하위 문자열의 첫 번째 발생에 대한 인덱스를 반환합니다. |
INTERVAL() | 첫 번째 인수보다 작은 인수의 인덱스를 반환합니다. |
ISNULL() | 인수가 NULL인지 테스트합니다. |
LCASE() | LOWER()의 동의어 |
LEAST() | 가장 작은 인수를 반환합니다. |
LN() | 인수의 자연 로그를 반환합니다. |
LOCALTIME(), LOCALTIME | NOW()의 동의어 |
LOCALTIMESTAMP, LOCALTIMESTAMP() | NOW()의 동의어 |
LOCATE() | 하위 문자열의 첫 번째 발생에 대한 위치를 반환합니다. |
LOG() | 첫 번째 인수의 자연 로그를 반환합니다. |
LOG10() | 인수의 base-10 로그를 반환합니다. |
LOG2() | 인수의 base-2 로그를 반환합니다. |
LPAD() | 지정된 문자열로 왼쪽에 채워진 문자열 인수를 반환합니다. |
MAKE_SET() | 해당 비트가 설정된 쉼표로 구분된 문자열 세트를 반환합니다. |
MAKEDATE() | 연도와 연도의 일로 날짜를 생성합니다. |
MAKETIME() | 시, 분, 초로 시간을 생성합니다. |
MICROSECOND() | 인수에서 마이크로초를 반환합니다. |
MOD() | 나머지를 반환합니다. |
MONTHNAME() | 월 이름을 반환합니다. |
NAME_CONST() | 열이 지정된 이름을 갖도록 합니다. |
NULLIF() | expr1 = expr2인 경우 NULL을 반환합니다. |
OCT() | 숫자의 8진수 표현을 포함하는 문자열을 반환합니다. |
OCTET_LENGTH() | LENGTH()의 동의어 |
ORD() | 인수의 가장 왼쪽 문자에 대한 문자 코드를 반환합니다. |
PERIOD_ADD() | 연도-월에 마침표를 추가합니다. |
PERIOD_DIFF() | 기간 사이의 개월 수를 반환합니다. |
PI() | 파이 값을 반환합니다. |
POSITION() | LOCATE()의 동의어 |
POW() | 지정된 거듭제곱으로 올린 인수를 반환합니다. |
POWER() | 지정된 거듭제곱으로 올린 인수를 반환합니다. |
QUARTER() | 날짜 인수에서 분기를 반환합니다. |
QUOTE() | SQL 문에서 사용하기 위한 인수를 이스케이프합니다. |
RADIANS() | 라디안으로 변환된 인수를 반환합니다. |
RAND() | 임의의 부동 소수점 값을 반환합니다. |
RANDOM_BYTES() | 임의의 바이트 벡터를 반환합니다. |
REPEAT() | 문자열을 지정된 횟수만큼 반복합니다. |
REVERSE() | 문자열의 문자를 뒤집습니다. |
ROUND() | 인수를 반올림합니다. |
ROW_COUNT() | 업데이트된 행 수 |
RPAD() | 문자열을 지정된 횟수만큼 추가합니다. |
SEC_TO_TIME() | 초를 'hh:mm:ss' 형식으로 변환합니다. |
SIGN() | 인수의 부호를 반환합니다. |
SIN() | 인수의 사인을 반환합니다. |
SPACE() | 지정된 공백 수의 문자열을 반환합니다. |
SQRT() | 인수의 제곱근을 반환합니다. |
STD() | 모집단 표준 편차를 반환합니다. |
STDDEV() | 모집단 표준 편차를 반환합니다. |
STDDEV_POP() | 모집단 표준 편차를 반환합니다. |
STDDEV_SAMP() | 표본 표준 편차를 반환합니다. |
STRCMP() | 두 문자열을 비교합니다. |
SUBSTRING() | 지정된 대로 하위 문자열을 반환합니다. |
SUBSTRING_INDEX() | 지정된 구분 기호 발생 횟수 이전의 문자열에서 하위 문자열을 반환합니다 |
SUBTIME() | 시간을 뺍니다. |
SYSDATE() | 함수가 실행되는 시간을 반환합니다. |
TAN() | 인수의 탄젠트를 반환합니다. |
TIME() | 전달된 식의 시간 부분을 추출합니다. |
TIME_FORMAT() | 시간으로 형식을 지정합니다. |
TIME_TO_SEC() | 초로 변환된 인수를 반환합니다. |
TIMEDIFF() | 시간을 뺍니다. |
TIMESTAMP() | 이 함수는 단일 인수인 경우 날짜 또는 날짜/시간 식을 반환하고 두 개의 인수가 있는 경우 인수의 합계를 반환합니다. |
TIMESTAMPADD() | 날짜/시간 식에 간격을 추가합니다. |
TO_BASE64() | base-64 문자열로 변환된 인수를 반환합니다. |
TO_DAYS() | 일수로 변환된 날짜 인수를 반환합니다. |
TO_SECONDS() | Year 0 이후의 초로 변환된 날짜 또는 날짜/시간 인수를 반환합니다. |
TRUNCATE() | 지정된 소수 자릿수로 자릅니다. |
UCASE() | UPPER()의 동의어 |
UNHEX() | 숫자의 16진수 표현을 포함하는 문자열을 반환합니다. |
UNIX_TIMESTAMP() | Unix 타임스탬프를 반환합니다. |
UTC_DATE() | 현재 UTC 날짜를 반환합니다. |
UTC_TIME() | 현재 UTC 시간을 반환합니다. |
UTC_TIMESTAMP() | 현재 UTC 날짜 및 시간을 반환합니다. |
UUID() | UUID(Universal Unique Identifier)를 반환합니다. |
UUID_SHORT() | 정수 값의 범용 식별자를 반환합니다. |
VALUES() | INSERT 중에 사용할 값을 정의합니다. |
VAR_POP() | 모집단 표준 분산을 반환합니다. |
VAR_SAMP() | 표본 분산을 반환합니다. |
VARIANCE() | 모집단 표준 분산을 반환합니다. |
WEEK() | 주 번호를 반환합니다. |
WEEKDAY() | 요일 인덱스를 반환합니다. |
WEEKOFYEAR() | 날짜의 달력 주(1-53)를 반환합니다. |
WEIGHT_STRING() | 문자열의 가중치 문자열을 반환합니다. |
YEARWEEK() | 연도와 주를 반환합니다. |
CQL 오류
만일 일반 CQL 런타임 오류(오류 코드 0001~0010)가 발생하는 경우 Veeva 지원팀에 문의하십시오.