全部產品
Search
文件中心

Simple Log Service:條件運算式

更新時間:Jun 30, 2024

本文介紹條件運算式的基本文法和樣本。

Log Service支援如下條件運算式。

重要

在Log Service分析語句中,表示字串的字元必須使用單引號('')包裹,無符號包裹或被雙引號("")包裹的字元表示欄位名或列名。例如:'status'表示字串status,status"status"表示日誌欄位status。

運算式

文法

說明

支援SQL

支援SPL

CASE WHEN運算式

CASE WHEN condition1 THEN result1

[WHEN condition2 THEN result2]

[ELSE result3]

END

通過條件判斷,對資料進行歸類。

IF運算式

IF(condition, result1)

如果condition為true,則返回result1,否則返回null。

IF(condition, result1, result2)

如果condition為true,則返回result1,否則返回result2

COALESCE運算式

COALESCE(expression1, expression2, expression3...)

返回多個運算式中第一個非null的值。

NULLIF運算式

NULLIF(expression1, expression2)

比較兩個運算式的值是否相等。如果相等,則返回null,否則返回第一個運算式的值。

×

TRY運算式

TRY(expression)

捕獲異常資訊,使得系統繼續執行查詢和分析操作。

CASE WHEN運算式

CASE WHEN運算式用於對資料進行歸類。

文法

CASE WHEN condition1 THEN result1
     [WHEN condition2 THEN result2]
     [ELSE result3]
END

參數說明

參數

說明

condition

條件運算式。

result1

返回結果。

樣本

  • 樣本1:從http_user_agent欄位值中提取瀏覽器資訊,歸為Chrome、Safari和unknown三種類型並計算三種類型對應的訪問PV。

    • 查詢和分析語句

      * |
      SELECT
        CASE
          WHEN http_user_agent like '%Chrome%' then 'Chrome'
          WHEN http_user_agent like '%Safari%' then 'Safari'
          ELSE 'unknown'
        END AS http_user_agent,
        count(*) AS pv
      GROUP BY
        http_user_agent
    • 查詢和分析結果case when

  • 樣本2:統計不同請求時間的分布情況。

    • 查詢和分析語句

      * |
      SELECT
        CASE
          WHEN request_time < 10 then 't10'
          WHEN request_time < 100 then 't100'
          WHEN request_time < 1000 then 't1000'
          WHEN request_time < 10000 then 't10000'
          ELSE 'large'
        END AS request_time,
        count(*) AS pv
      GROUP BY
        request_time
    • 查詢和分析結果case when

IF運算式

IF運算式用於對資料進行歸類,類似於CASE WHEN運算式。

文法

  • 如果condition為true,則返回result1,否則返回null。

    IF(condition, result1)
  • 如果condition為true,則返回result1,否則返回result2

    IF(condition, result1, result2)

參數說明

參數

說明

condition

條件運算式。

result

返回結果

樣本

計算狀態代碼為200的請求占所有請求的比例。

  • 查詢和分析語句

    * |
    SELECT
      sum(IF(status = 200, 1, 0)) * 1.0 / count(*) AS status_200_percentag
  • 查詢和分析結果IF文法

COALESCE運算式

COALESCE運算式用於返回多個運算式中第一個非null的值。

文法

COALESCE(expression1, expression2, expression3...)

參數說明

參數

說明

expression

任何類型的運算式。

樣本

計算昨天消費金額與上月同一天的比值。

  • 查詢和分析語句

    * |
    SELECT
      compare("昨天消費金額", 604800) AS diff
    FROM  (
        SELECT
          COALESCE(sum(PretaxAmount), 0) AS "昨天消費金額"
        FROM log
      )
  • 查詢和分析結果coalesce文法

    • 6514393413.0表示昨天的消費金額。

    • 19578267596.0表示上月同一天的消費金額。

    • 0.33273594719539659表示昨天與上月同一天的消費金額比值。

NULLIF運算式

NULLIF運算式用於比較兩個運算式的值是否相等。如果相等,則返回null,否則返回第一個運算式的值。

文法

NULLIF(expression1, expression2)

參數說明

參數

說明

expression

任何有效標量運算式。

樣本

判斷client_iphost兩個欄位的值是否相同。當不相同時,返回client_ip欄位的值。

  • 查詢和分析語句

    * | SELECT NULLIF(client_ip,host)
  • 查詢和分析結果nullif文法

TRY運算式

TRY運算式用於捕獲異常資訊,使得系統繼續執行查詢和分析操作。

文法

TRY(expression)

參數說明

參數

說明

expression

任何類型的運算式。

樣本

當執行regexp_extract函數發生異常時,try函數會捕獲異常資訊並繼續查詢和分析操作,返回查詢和分析結果。

  • 查詢和分析語句

    * |
    SELECT
      TRY(regexp_extract(request_uri, '.*\/(file.*)', 1)) AS file,
      count(*) AS count
    GROUP BY
      file
  • 查詢和分析結果try文法