DBT セグメントでサポートされる検証
セグメントを作成または更新するときは、Data Cloud Segment Input リクエストボディが SQL 検証の対象になる場合があります。
セグメントを作成するには、Data Cloud Segment Input リクエストボディとともに /ssot/segments リソースを使用します。同様に、セグメントを更新するには、同じリクエストボディとともに /ssot/segments/segmentApiName リソースを使用します。Data Cloud Segment Input リクエストボディ内でネストされている Data Cloud Segment Dbt Model Input リクエストボディは、SQL の検証を提供します。
Data Cloud Segment Dbt Model Input の sql プロパティは、これらの検証の対象です。
- select ステートメントでは、SegmentOn DMO の主キーのみが許可されます。join 句の先頭のテーブルは、プロファイルテーブルでなければなりません。
- 最上位の select では、集計 (min、max、avg、count) は許可されません。
1---FAIL 2select max(Individual_dense_viv__dlm.age__c) from Individual_dense_viv__dlm 3---FAIL 4select count(Individual_dense_viv__dlm.individualid__c) from Individual_dense_viv__dlm 5--- - 最上位の select では、すべて選択 (*) の式は許可されません。
1---FAIL 2select * from Individual_dense_viv__dlm - 選択できるのは、テーブル (sql ステートメント from 句の先頭のテーブル) のセグメントの主キーのみです。
1---PASS 2select Individual_dense_viv__dlm.individualid__c from Individual_dense_viv__dlm - 複数の列の 1 つがテーブルの主キーであっても、複数の列を選択することはできません。
1---FAIL 2select Individual_dense_viv__dlm.individualid__c, 3Individual_dense_viv__dlm.age__c from Individual_dense_viv__dlm - 主 select では、case ステートメントは許可されません。
1---FAIL 2select 3 case 4 when Individual_dense_viv__dlm.individualid__c > 10 then Individual_dense_viv__dlm.individualid__c 5 else null 6 end 7from 8 Individual_dense_viv__dlm - segmentOn エンティティの主キーにキー修飾子がある場合、主 select 内でキー修飾子も射影する必要があります。まず主キーを射影してから修飾子を射影します。グループ化単位にもキー修飾子を含める必要があります。
1---PASS 2select Individual__dlm.id__c, Individual__dlm.fq__id__c from Individual__dlm - segmentOn エンティティの主キーにキー修飾子がある場合、結合条件に追加条件を指定できます。
1---PASS 2select Individual__dlm.id__c from Individual__dlm left join Sales__dlm on Individual__dlm.id__c = Sales__dlm.soldToCustomerId__c and Individual__dlm.kq__id__c is not distinct from Sales__dlm.kq__soldToCustomerId__c
- 最上位の select では、集計 (min、max、avg、count) は許可されません。
- クエリおよび後続のクエリでは、すべての列をテーブル名で完全に修飾する必要があります。
1---FAIL 2select individualid__c from Individual_dense_viv__dlm - サブクエリは where 句でのみサポートされ、1 つの列のみを発行する必要があります。
1---FAIL 2select Individual_dense_viv__dlm.individualid__c from (select * from Individual_dense_viv__dlm) - 同じデータ型の列を比較します。異なるデータ型の列を比較するには、同じ型になるように片方または両方のオペランドをキャストします。
1---PASS 2select t.id__c from Individual__dlm as t where cast(t.id__c as varchar(100)) = t1.name - limit と offset がサポートされます。
1---FAIL 2select Individual_dense_viv__dlm.individualid__c from Individual_dense_viv__dlm limit 10 - select ステートメント以外の sql ステートメントは許可されません。
1---FAIL 2update Individual_dense_viv__dlm set Individual_dense_viv__dlm.individualid__c = 'aa' - 別名はクエリの from ブロック内の DMO でのみサポートされます。列には別名を使用できません。
1---PASS 2select t.id__c from Individual__dlm as t - 2 つの DMO を結合するには、DMO 間にリレーションがある必要があり、結合条件で関連結合キーのいずれかを使用する必要があります。結合条件に含めることができるのは、結合キー間の等価比較と、FQK 項目を比較するための追加条件 (省略可能) のみです。
1---PASS 2select Individual__dlm.id__c from Individual__dlm left join Sales__dlm on Individual__dlm.id__c = Sales__dlm.soldToCustomerId__c1--PASS 2Individual__dlm left join Sales__dlm on Individual__dlm.id__c = Sales__dlm.soldToCustomerId__c and Individual__dlm.kq__id__c is not distinct from Sales__dlm.kq__soldToCustomerId__c