注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

配列関数

このトピックでは、Contour の式で使用すると便利な配列関数を紹介します。


Contour の配列について

Contour では、配列は式ボードでのみサポートされています。列の式で配列を操作した後は、ほかの Contour ボードでも使用できるように、array_join を使用して結果の配列を文字列に変換する必要があります。


配列の長さ

array_length 関数を使用すると、配列の長さを取得できます。これは、絞り込みを行うときに役立ちます。 たとえば、配列の列 items_array がある場合、以下に示すように、フィルター式ボードで array_length 関数を使用して配列の長さを取得できます。

array_length(items_array) > 0

値の結合

array_agg 関数を使用すると、列内の値を結合できます。 購入履歴のテーブルがあり、特定の顧客が購入したすべての項目の配列を含む新しい列を作成したいとします。 テーブルが次のようになっている場合を考えます。

customer_iditem
123bread
123eggs
444milk
444bananas
444bread

次の関数を使用すると、結合した値を含む新しい列を作成できます。

array_join( array_agg("item") OVER (PARTITION BY "customer_id"), ', ' )

これを部分ごとに説明します。

  • array_agg は、指定した列のすべての値を配列として返します。ここでは、列の引数としてウィンドウ関数を渡しています。そのため、列内のすべての値を集約する次の式ではなく、
array_agg("item")

次の式を使用しています。

array_agg("item") OVER (PARTITION BY "customer_id")

この式は、customer_id ごとに値を集約します。

  • array_agg_distinct は、指定した列の重複しないすべての値を配列として返します。array_agg とは異なり、この関数では、結果の配列に各値が1回だけ出現することが保証されます。

  • array_join は変換関数で、配列内の項目を区切り文字で区切って文字列に結合します。一般的な形式は次のとおりです。

array_join(<array>, <delimiter>)

したがって、[milk, bananas, bread] は "milk, bananas, bread" になります。

結果の列 items_array は、次のようになります。

customer_iditems_array
123eggs, bread
444milk, bananas, bread

配列の展開

主キーを値の配列に対応付ける列がすでにある場合は、explode 関数を使用して配列を展開できます。この関数は配列内の値ごとに新しい行を作成します。たとえば、次のテーブルがあるとします。

customer_iditems_array
123eggs, bread
444milk, bananas, bread

式エディターを開き、「列を置換」を選択します。コード explode(items_array) を使用すると、次のテーブルになります。

customer_iditems_array
123eggs
123bread
444milk
444bananas
444bread

explode 関数は null を除外します。null を保持するには、explode_outer 関数を使用します。