バインド操作
value()
1q = filter q by 'Owner Name' in {{ value(selection(step_StageName_3))}}single_quote()
single_quote() 操作は通常、クエリの "group" および "foreach generate" 行が正しい形式になるように SAQL ステップの選択バインドで使用されます。single_quote() 操作は、値の配列を取得し、二重引用符を単一引用符、角括弧を丸括弧に変換します。たとえば、"Owner-Name" は 'Owner-Name' に変換され、["Owner-Name", "Owner-Region"] は ('Owner-Name', 'Owner-Region') に変換されます。
配列値 ["Account-Name"] および ["Product"] を使用する次の静的セレクタがあるとします。
1{
2 "step_StageName_3": {
3 "isFacet": false,
4 "values": [
5 {
6 "value": [
7 "Account-Name"
8 ],
9 "display": "Account"
10 },
11 {
12 "value": [
13 "Product"
14 ],
15 "display": "Product"
16 }
17 ],
18 "useGlobal": true,
19 "datasets": "opp",
20 "type": "static",
21 "selectMode": "singlerequired",
22 "isGlobal": false
23 }
24}次の例は、"group by" 値と "foreach generate" 値で単一引用符を使用する必要がある SAQL クエリに配列値をバインドしています。したがって、single_quote() によって ["Account-Name"] が 'Account-Name' に変換されます。
1{
2 "step_Account_Name_1": {
3 "isFacet": false,
4 "query": {
5 "pigql": "q = load \"opp\";\nq = group q by
6 {{ single_quote(value(selection(step_StageName_3))) }};\nq =
7 foreach q generate {{ single_quote(value(selection(step_StageName_3)))
8 }} as {{ single_quote(value(selection(step_StageName_3)) }},
9 sum('Amount') as 'sum_Amount', count() as 'count'",
10 "groups": "{{ selection(step_StageName_3) }}",
11 "measures": [
12 [
13 "sum",
14 "Amount"
15 ]
16 ]
17 },
18 "visualizationParameters": {
19 "visualizationType": "hbar"
20 },
21 "selectMode": "none",
22 "useGlobal": true,
23 "datasets": "opp",
24 "type": "aggregate",
25 "isGlobal": false
26 }
27}結果のクエリは次のとおりです。
1q = load "opp";\nq = group q by 'Account-Name';\nq =
2 foreach q generate 'Account-Name' as 'Account-Name', sum('Amount') as
3 'sum_Amount', count() as 'count'no_quote()
no_quote() 操作は通常、クエリの "order" 行が正しい形式になるように SAQL ステップの選択バインドで使用されます。no_quote() 操作は、値の配列を取得し、二重引用符と角括弧を引用符なしに変換します。たとえば、["desc"] は desc に変換されます。
["desc"] 配列値と ["asc"] 配列値が指定された次の静的ステップがあるとします。
1{
2 "step_order": {
3 "type": "static",
4 "values": [
5 {
6 "display": "desc",
7 "value": [
8 "desc"
9 ]
10 },
11 {
12 "display": "asc",
13 "value": [
14 "asc"
15 ]
16 }
17 ],
18 "selectMode": "singlerequired"
19 }
20}次の例は、配列値を SAQL ステップにバインドしています。
1q = order q by 'Amount' {{ no_quote(value(selection(step_order))) }}引用符のない desc 値または asc 値が挿入されます。
1q = order q by 'Amount' descfield()
field() 操作は、配列内の各オブジェクトに対して項目を作成します。
次の静的ステップ (step_measure) では、"$" オプションと "#" オプションに "compact"、"alias"、および "proj" の 3 つの項目値が割り当てられています。
1{
2 "step_measure": {
3 "type": "static",
4 "values": [
5 {
6 "display": "$",
7 "value": [
8 {
9 "compact": [["sum", "Amount"]],
10 "alias": "sum_Amount",
11 "proj": "sum('Amount')"
12 }
13 ],
14 "display": "#",
15 "value": [
16 {
17 "compact": [["count", "*"]],
18 "alias": "count",
19 "proj": "count()"
20 }
21 ]
22 }
23 ],
24 "selectMode": "singlerequired"
25 }
26}割り当て後、field() 操作を使用して他のステップ選択バインドで各項目値を参照できます。
たとえば、step_measure を使用する切り替えセレクタでダッシュボードユーザが # をクリックすると、この集計ステップ (step_top_10) の SAQL クエリは、"proj" 項目を参照して count() 関数を挿入し、"alias" 項目を参照して "count" を文字列として挿入し、"compact" 項目を参照して [["count", "*"]] を挿入します。
1{
2 "step_top_10": {
3 "type": "aggregate",
4 "datasets": "opp",
5 "query": {
6 "pigql":
7 "q = load 'edgemarts/Opportunity/OpportunityEM';
8 q = group q by 'Account_Name';
9 q = foreach q generate
10 'Account_Name' as 'Account_Name',
11 {{ no_quote(value(field(selection(step_measure),'proj'))) }}
12 as {{ single_quote(value(field(selection(step_measure), 'alias'))) }};
13 q = order q by {{ single_quote(value(field(selection(step_measure), 'alias'))) }}
14 {{ no_quote(value(field(selection(step_order), 'pigql'))) }};
15 q = limit q {{ value(selection(step_limit)) }};",
16 "groups": ["Account_Name"],
17 "measures": "{{ value(field(selection(step_measure), 'compact')) }}",
18 "order":
19 [[ -1, { "ascending": "{{ value(field(selection(step_order), 'compact')) }}" } ]]
20 },
21 "isFacet": true
22 }
23}