このトピックでは、条件式の構文について説明し、条件式の使用方法の例を示します。
表現 | 構文 | 説明 |
---|---|---|
CASE WHENステートメント | condition1がresult1の場合 [条件2がresult2のとき] [ELSE result3] END | 指定された条件に基づいてデータを分類します。 |
IF関数 | IF( 状態、result1) | conditionがtrueに評価された場合、result1が返されます。 それ以外の場合は、nullが返されます。 |
IF( condition, result1, result2) | conditionがtrueに評価された場合、result1が返されます。 それ以外の場合、result2が返されます。 | |
COALESCE関数 | COALESCE( expression1, expression2, expression3 ...) | 複数の式で最初のnull以外の値を返します。 |
NULLIF関数 | NULLIF( expression1, expression2) | 2つの式の値が同じかどうかを評価します。 値が同じ場合は、nullが返されます。 それ以外の場合、最初の式の値が返されます。 |
TRY関数 | TRY(expression) | エラーをキャプチャして、Log Serviceがデータのクエリと分析を継続できるようにします。 |
CASE WHENステートメント
CASE WHENステートメントは、データの分類に使用されます。
構文
condition1がresult1の場合
[条件2がresult2のとき]
[ELSE result3]
終了
パラメーター
項目 | 説明 |
---|---|
条件 | 条件式。 |
result1 | あなたが返したい結果。 |
例
- 例1: http_user_agentフィールドの値からブラウザ情報を抽出します。 次に、情報をChrome、Safari、および不明なタイプに分類し、3つのタイプのページビュー (PV) の数を計算します。
- クエリ文
* | 選択 CASE http_user_agentが「 % Chrome % 」のような場合、「Chrome」 http_user_agentが「 % Safari % 」のような場合、「Safari' 」 ELSE 'unknown' END AS http_user_agent、 カウント (*) AS pv グループ化 http_user_agent
- クエリと分析結果
- クエリ文
- 例2: 異なる時点で送信されたリクエストの分布を照会します。
- クエリ文
* | 選択 CASE request_time < 10の場合、't10' request_time < 100の場合、't100' request_time < 1000の場合、't1000' request_time < 10000の場合、't10000' ELSE「大きい」 END AS request_time, カウント (*) AS pv グループ化 request_time
- クエリと分析結果
- クエリ文
IF関数
IF関数は、データを分類するために使用される。 この関数は、CASE WHENステートメントと同様に機能します。
構文
- conditionがtrueに評価された場合、result1が返されます。 それ以外の場合は、nullが返されます。
IF( condition, result1)
- conditionがtrueに評価された場合、result1が返されます。 それ以外の場合、result2が返されます。
IF( condition, result1, result2)
パラメーター
項目 | 説明 |
---|---|
条件 | 条件式。 |
結果 | あなたが返したい結果。 |
例
すべてのリクエストに対するステータスコードが200リクエストの割合を計算します。
- クエリ文
* | 選択 sum(IF(status = 200、1、0)) * 1.0 / count(*) AS status_200_percentag
- クエリと分析結果
COALESCE関数
COALESCE関数は、複数の式で最初のnull以外の値を返すために使用されます。
構文
COALESCE( expression1, expression2, expression3 ...)
パラメーター
項目 | 説明 |
---|---|
式 | このパラメーターの値は、任意のデータ型の式にすることができます。 |
例
前日の費用と前月の同じ日の費用の比率を計算します。
- クエリ文
* | 選択 比較 (「前日の費用」、604800) AS diff から ( SELECT COALESCE (合計 (PretaxAmount) 、0) AS「前日の費用」 ログから )
- クエリと分析結果
- 値6514393413.0は、前日の費用を示します。
- 値19578267596.0は、前月の同じ日の費用を示します。
- 値0.33273594719539659は、前月の同じ日の費用に対する前日の費用の比率を示します。
NULLIF関数
NULLIF関数は、2つの列の値が同じかどうかを確認するために使用されます。 値が同じ場合は、nullが返されます。 それ以外の場合、最初の式の値が返されます。
構文
NULLIF( expression1, expression2)
パラメーター
項目 | 説明 |
---|---|
式 | 有効なスカラー式。 |
例
client_ipフィールドとhostフィールドの値が同じかどうかを確認します。 値が同じでない場合、client_ipフィールドの値が返されます。
- クエリ文
* | SELECT NULLIF(client_ip,host)
- クエリと分析結果
TRY関数
TRY機能を使用してエラーをキャプチャし、Log Serviceがデータのクエリと分析を継続できるようにします。
構文
TRY(expression)
パラメーター
項目 | 説明 |
---|---|
式 | このパラメーターの値は、任意のデータ型の式にすることができます。 |
例
regexp_extract関数が呼び出されたときにエラーが発生した場合、TRY関数はエラーをキャプチャします。 これにより、Log Serviceはデータのクエリと分析を継続できます。 クエリと分析の結果が返されます。
- クエリ文
* | 選択 TRY(regexp_extract(request_uri, '.*\/(file.*)', 1)) ASファイル、 カウント (*) ASカウント グループ化 file
- クエリと分析結果