map lookup のある Sigma クエリの動作が止まる現象について

エラーメッセージ: 「INVALID_FUNCTION_ARGUMENT: Key not present in map」

解決策: map lookup に [] でなく ELEMENT_AT() を用いる

たとえば、次のようなクエリがあるとします。

SELECT charge_id, metadata[‘customer’] FROM (
  SELECT charge_id, map_agg(key, value) AS metadata FROM charges_metadata
)

この場合は、次のように変更します。

SELECT charge_id, ELEMENT_AT(metadata, 'customer') FROM (
  SELECT charge_id, map_agg(key, value) AS metadata FROM charges_metadata
)

追加情報

2020 年 9 月 3 日の時点で、Sigma は Prestosql v334 SQL シンタックスを使用するクエリに対応しています。そのため、[] による map lookup は map にキーがないと失敗します。ELEMENT_AT() を使用すれば、キーがない場合に NULL を返すという以前の動作を再現できます。

スケジュール済みのクエリと保存済みのクエリは、これに合わせて更新済みです。