日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

條件表達式

本文介紹條件表達式的基本語法和示例。

日志服務支持如下條件表達式。

重要 在日志服務分析語句中,表示字符串的字符必須使用單引號('')包裹,無符號包裹或被雙引號("")包裹的字符表示字段名或列名。例如:'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_ip、host兩個字段的值是否相同。當不相同時,返回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語法