인사이트용 SQL 규칙
Data 360에서 계산 또는 스트리밍 인사이트를 위한 SQL을 작성할 때 각 조항이 해석되는 방식과 적용되는 제약 사항이 규칙으로 지정됩니다. WHERE 또는 JOIN 절에 중첩된 하위 쿼리를 포함하여 외부 쿼리가 반환하는 행을 제한할 수도 있습니다.
필수 Edition
| 지원 제품: Data 360에서 지원하는 모든 Edition. Data 360 Edition 가용성을 참조하십시오. |
조항별 쿼리 규칙
| 조항 | 규칙 |
|---|---|
| 일반 | DMO 이름은 대/소문자를 구분합니다. SQL의 DMO 참조가 데이터 모델 탭의 개체 API 이름 열에 표시된 케이싱과 일치하는지 확인합니다. |
| 쿼리에 측정값을 한 개 이상 포함해야 합니다. 측정값은 집계 함수에 래핑된 모든 필드입니다. | |
| 집계 함수 내에 없는 SELECT 절의 모든 특성은 치수로 취급되며 GROUP BY 절에 표시되어야 합니다. | |
| 집계 내에서 집계할 수 없습니다. | |
| 최상위 쿼리에서는 DISTINCT를 사용할 수 없습니다. | |
다중 행 댓글(/* */)을 사용할 수 있습니다. |
|
SELECT |
치수의 별칭은 필드의 원래 이름과 일치할 수 없습니다. 예를 들어, UnifiedIndividual__dlm.Id__c as customer_id__c가 유효하지만 UnifiedIndividual__dlm.Id__c as Id__c로 인해 오류가 발생합니다. |
인사이트에 통화 필드가 포함된 경우 SELECT 절에서 TRY_CONVERT_CURRENCY을 사용해야 합니다. |
|
WHERE |
WHERE 절은 집계 식을 포함할 수 없습니다. |
| WHERE 절은 치수 또는 측정값 별칭을 참조할 수 없습니다. | |
GROUP BY |
GROUP BY 절은 별칭이 아닌 집계 식이어야 합니다. |
| GROUP BY 절은 치수 별칭을 참조할 수 있지만 별칭은 식의 일부가 될 수 없습니다. | |
| GROUP BY 절은 측정값 별칭 또는 집계 함수를 포함할 수 없습니다. | |
ORDER BY |
최상위 SELECT 문에서는 ORDER BY가 허용되지 않습니다. |
RANK |
RANK 함수 내의 PARTITION BY 및 ORDER BY는 집계 식 또는 집계 식이 될 수 있습니다. |
| 집계 식을 포함하는 RANK 절은 측정값으로 취급됩니다. | |
| RANK에서 생성된 측정값은 집계할 수 없으며, 쿼리할 때 정의된 모든 치수를 제공해야 합니다. | |
CASE |
집계 함수를 포함하는 CASE 식은 측정값으로 취급됩니다. |
CASE(WHEN <aggregate>)에서 생성한 측정값은 집계할 수 없습니다. 쿼리할 때 정의된 모든 치수를 입력해야 합니다. |
|
| 날짜 필드 | 날짜 필드에서 빈 문자열을 필터링할 경우 Null 값을 대신 사용하십시오. |
중첩된 하위 쿼리
하위 쿼리는 일반적으로 WHERE 또는 JOIN 절에 포함된 다른 쿼리 내에 포함된 쿼리입니다. 하위 쿼리를 사용하여 외부 쿼리가 검색하는 행을 제한하는 데이터를 반환합니다.
예를 들어 이 쿼리는 1980년 이후에 생성된 고객의 세일즈 주문 합계 평균을 계산합니다.
SELECT
avg(SalesOrder__dlm.GrandTotalAmount__c) as avg__c,
SubQuery1.Id as customer_id__c
FROM SalesOrder__dlm
JOIN (
SELECT Individual__dlm.Id__c as Id
FROM Individual__dlm
WHERE year(Individual__dlm.BirthDate__c) > 1980
) as SubQuery1
ON SalesOrder__dlm.SoldToCustomerId__c = SubQuery1.Id
GROUP BY customer_id__c;이 기사를 통해 문제를 해결했습니까?
개선을 위한 의견을 보내주세요.
