注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Expression board の使い方に関しては、Expression board の使い方を参照してください。このドキュメントは、Contour の豊富な表現言語を使って、タイプ、操作、および関数のリファレンスとして使えるリソースです。
式で以下のデータ型を使用できます。
文字列はシングルクォートで表現されます。
'これは文字列です'
これは文字列です
文字列内のシングルクォートをエスケープするには、2 つ目のシングルクォートを追加します。
'私は''文字列です'
私は文字列です
||
演算子を使って、文字列として列を連結します。
"性別" || "婚姻状況"
定数と列を連結することもできます。
'$' || ("給与列"/1000.0) || 'k'
整数は浮動小数点数ではない数値です。
5
倍精度浮動小数点数は以下のようになります。
5.7
真偽値は true
または false
のいずれかです。真偽値は大文字と小文字を区別しません。
YYYY-MM または YYYY-MM-DD 形式の文字列を日付としてキャストできます。
CAST('2016-12-06' AS DATE)
文字列をタイムスタンプとしてキャストすることもできます。
CAST('2016-12-06` `01:12:34' AS TIMESTAMP)
タイムスタンプで操作を行う場合、最初にタイムスタンプを long にキャストするか、ミリ秒単位の精度が必要な場合は double にキャストするのが最も簡単です。これにより、UNIX 時間での秒数が得られます。
例えば、「開始」と「終了」の 2 つのタイムスタンプ列がある場合、2 つの時間の間の分数を求めるために、次の式を使用できます。
(CAST("終了" as LONG) - CAST("開始" as LONG)) / 60
.
long をタイムスタンプにキャストすると、long 値が秒単位であると仮定されます。データがミリ秒単位の場合は、キャストする前に 1000 で割ります。
次のセクションでは、式で使用できる操作とその優先順位について概説します。
数値列(整数または倍精度浮動小数点数)を他の数値列または定数で加算、減算、乗算、除算します:+
, -
, *
, /
"チップ額" / "運賃"
"直径" * 3.14
任意の型の列を他の列や定数と比較して、>
(より大きい)、>=
(以上)、<
(未満)、<=
(以下)を使用します。結果はブール値の列になります。
"年齢" > "平均年齢"
"合計距離" < 5
2 つの列が同じ値を持っているかどうかを ==
で確認し、異なる値を持っているかどうかを !=
で確認します。
"出生地" == "居住地"
列の値を定数と比較することもできます。
"性別" == 'M'
2 つの文字列を比較する際には、辞書順が使用されます。これは、数字を含む文字列を比較する場合に直感的でないことがあります。例えば:
'アリゲーター' < 'ボート'
=> TRUE なぜなら 'ア' の符号は 'ボ' よりも小さいから'アライアンス' < 'アリゲーター'
=> TRUE なぜなら 'a' は 'g' よりも小さいから'ズー' < 'アルファ'
=> TRUE なぜなら 'ズ' は 'ア' よりも小さいから'ズー' < 'ズオロジスト'
=> TRUE なぜなら一方の文字列が他方の接頭辞である場合、短い方がより小さいと見なされるから'1' < '2'
=> TRUE なぜなら文字列文字 '1' は文字列文字 '2' よりも小さいから'10' < '2'
=> TRUE なぜなら最初の文字列文字 '1' は文字列文字 '2' よりも小さいから; これは整数 10 と 2 ではなく、文字列 '10' と '2' の比較です'10' < '20'
=> TRUE なぜなら '1' は '2' よりも小さいからContour の表現言語では、NULL
との等価比較は以下のような動作をします。
NULL = 'DATA'
=> FALSENULL != 'DATA'
=> TRUENULL = NULL
=> TRUENULL != NULL
=> FALSEただし、Spark SQL では、これらの式はすべて NULL
を返します。Contour の表現と Spark SQL を翻訳する際には、結果の整合性を保つために、この動作の違いを考慮する必要があります。
ブール論理で 1 つ以上の列を評価して、新しいブール値の列を導出します。
"年齢" >= 70 AND "性別" = 'M'
キャスティングを使って、列や式の型を変更できます。ブール値、整数、倍精度浮動小数点数、日付、タイムスタンプにキャストできます。
CAST("開始日" AS DATE)
CAST("開始時刻" AS TIMESTAMP)
CAST("参加者数" AS INTEGER)
Case 文を使って、1 つの式で複数の可能性を評価できます。それぞれの文は順番に評価され、最初に真になるものの THEN
文が実行されます。
Copied!1 2 3 4 5
CASE WHEN "age" < 13 THEN 'Child' -- "age"が13未満の場合、'Child'と表示 WHEN "age" > 19 THEN 'Adult' -- "age"が19より大きい場合、'Adult'と表示 ELSE 'Teenager' -- 上記のどれにも当てはまらない場合、'Teenager'と表示 END
Copied!1 2 3 4 5
CASE MaritalStatus WHEN 'S' THEN 'Single' -- 'S'の場合、'Single'と表示 WHEN 'M' THEN 'Married' -- 'M'の場合、'Married'と表示 ELSE 'Unknown' -- 上記以外の場合、'Unknown'と表示 END
指定されたパターンを行で検索します。詳細については、SQL LIKEのドキュメントを参照してください。
値が IS NULL
または IS NOT NULL
かどうかをチェックします。ブール値を返します。
式内の操作の優先順位は、以下のリストに詳細に記載されており、最高の優先順位から最低の優先順位までの順序です。同じ行にある操作はすべて同じ優先順位を持ちます。
以下は、行式で使用可能な関数の完全なリストです。
相対日付を導出する方法や例についての詳細は、相対日付の導出に関するリファレンスドキュメントで入手できます。
配列関数に関する詳細や例については、配列関数に関するリファレンスドキュメントで入手できます。
null
の場合、-1 を返します。ROW_NUMBER
、FIRST
、LAST
、ARRAY_AGG
、ARRAY_AGG_DISTINCT
をウィンドウ関数で使用する際は、非決定性に注意してください。列 A をパーティション化し、列 B を並べ替えることを想像してください。列 A の同じ値に対して、列 B の値が同じ複数の行がある場合、これらのウィンドウ関数の結果は非決定的になる可能性があります。つまり、同じ入力データとロジックが与えられた場合に異なる結果を生成する可能性があります。
ウィンドウ関数には OVER 句が必要です。詳細および例については、ウィンドウ関数に関するリファレンスドキュメントを参照してください。
集計関数は、集計式およびウィンドウ関数で使用できます。
$.field
$['field']