順序変換式
順序変換式は、順序を別の順序に変換します。構文的には、seq_transform
という名前の関数のように見えます。最初の引数は、変換する順序(入力順序)を生成する式であり、2番目の引数は入力順序の各項目に対して計算されるマッパー式です。seq_transform
式の結果は、マッパー式の各評価によって生成される順序の連結となります。マッパー式は、$変数を介して現在の入力項目にアクセスできます。
例:
ticketNo
ごとに、そのticketNo
の手荷物に対して実行されたすべてのアクションを含むフラット配列をフェッチします。SELECT seq_transform(l.bagInfo[],
seq_transform(
$sq1.flightLegs[],
seq_transform(
$sq2.actions[],
{
"at" : $sq3.actionAt,
"action" : $sq3.actionCode,
"flightNo" : $sq2.flightNo,
"tagNum" : $sq1.tagNum
}
)
)
) AS actions
FROM baggageInfo l WHERE ticketNo=1762340683564
説明: 表の行に格納されたJSONドキュメントを変換するために、順序変換式を使用できます。このような場合、相互にネストされている複数の順序変換式を使用することがよくあります。ここで、内部の順序変換マッパー式は、外部の順序変換の現在の項目にアクセスすることが必要な場合があります。これを可能にするために、各順序変換式Sは$sqN
という名前の変数を宣言します。ここで、Nは、外部順序変換式内の式S
のネストのレベルです。$sqN
は基本的に$
のシノニムであり、入力式S
によって返される項目にバインドされます。ただし、$sqN
は、式S
内でネストできる他の順序変換式によりアクセスできます。
出力:
{
"actions":[
{"action":"ONLOAD to HKG","at":"YYZ","flightNo":"BM267","tagNum":"17657806299833"},
{"action":"BagTag Scan at YYZ","at":"YYZ","flightNo":"BM267","tagNum":"17657806299833"},
{"action":"Checkin at YYZ","at":"YYZ","flightNo":"BM267","tagNum":"17657806299833"},
{"action":"Offload to Carousel at BLR","at":"BLR","flightNo":"BM115","tagNum":"17657806299833"},
{"action":"ONLOAD to BLR","at":"HKG","flightNo":"BM115","tagNum":"17657806299833"},
{"action":"OFFLOAD from HKG","at":"HKG","flightNo":"BM115","tagNum":"17657806299833"}
]
}