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

UNNEST子句

在復雜的業(yè)務場景下,日志字段的值可能為數(shù)組(array)、對象(map)等類型。對這種特殊類型的日志字段進行查詢和分析時,您可以先使用UNNEST子句將字段值展開。

語法

  • 將array類型的數(shù)據(jù)展開為多行單列形式,列名為column_name

    UNNEST(x) AS table_alias(column_name)
  • 將map類型的數(shù)據(jù)展開為多行多列形式,列名為key_namevalue_name

    UNNEST(y) AS table(key_name,value_name)
重要

UNNEST子句處理的是array或者map類型的數(shù)據(jù)。如果您輸入的數(shù)據(jù)為字符串類型,則需要先轉(zhuǎn)化為JSON類型,然后再轉(zhuǎn)化為array類型或map類型,轉(zhuǎn)化方法為try_cast(json_parse(array_column) as array(bigint))。更多信息,請參見類型轉(zhuǎn)換函數(shù)

參數(shù)說明

參數(shù)

說明

x

數(shù)據(jù)類型為array類型。

column_name

將array類型的數(shù)據(jù)展開后,指定一個列名。該列用于存放array中的元素。

y

數(shù)據(jù)類型為map類型。

key_name

將map類型的數(shù)據(jù)展開后,指定一個列名。該列用于存放map中的鍵。

value_name

將map類型的數(shù)據(jù)展開后,指定一個列名。該列用于存放map中的鍵值。

示例

示例1

number字段的值(array類型)展開為多行單列形式。

  • 字段樣例

    number:[49, 50, 45, 47, 50]
  • 查詢和分析語句

    * |
    SELECT
      a
    FROM  log,
      UNNEST(cast(json_parse(number) AS array(bigint))) AS t(a)
  • 查詢和分析結果unnest

示例2

number字段的值(array類型)展開為多行單列形式,并進行求和計算。

  • 字段樣例

    此處僅提供一條日志樣例,求和計算是針對所有日志,即對所有日志中的number字段的值進行求和。

    number:[49, 50, 45, 47, 50]
  • 查詢和分析語句

    * |
    SELECT
      sum(a) AS sum
    FROM  log,
      UNNEST(cast(json_parse(number) as array(bigint))) AS t(a)
  • 查詢和分析結果unnest

示例3

number字段的值(array類型)展開為多行單列形式,并對各個值進行分組統(tǒng)計。

  • 字段樣例

    number:[49, 50, 45, 47, 50]
  • 查詢和分析語句

    * |
    SELECT
      a, count(*) AS count
    FROM  log,
      UNNEST(cast(json_parse(number) as array(bigint))) AS t(a) GROUP BY a
  • 查詢和分析結果unnest

示例4

number字段的值(map類型)展開為多行多列形式。

  • 字段樣例

    result:{
      anomaly_type:"OverThreshold"
      dim_name:"request_time"
      is_anomaly:true
      score:1
      value:"3.000000"}
  • 查詢和分析語句

    * |
    select
      key,
      value
    FROM  log,
      UNNEST(
        try_cast(json_parse(result) as map(varchar, varchar))
      ) AS t(key, value)
  • 查詢和分析結果unnest

示例5

number字段的值(map類型)展開為多行多列形式,并對各個鍵進行分組統(tǒng)計。

  • 字段樣例

    result:{
      anomaly_type:"OverThreshold"
      dim_name:"request_time"
      is_anomaly:true
      score:1
      value:"3.000000"}
  • 查詢和分析語句

    * |
    select
      key,
      count(*) AS count
    FROM  log,
      UNNEST(
        try_cast(json_parse(result) as map(varchar, varchar))
      ) AS t(key, value)
    GROUP BY
      key
  • 查詢和分析結果unnest

示例6

使用histogram函數(shù)獲取各個請求方法對應的請求數(shù)量,返回結果為map類型。然后通過unnest子句將histogram函數(shù)的返回結果展開為多行多列形式,并通過柱狀圖展示。

  • 查詢和分析語句

    * |
    SELECT
      key,
      value
    FROM(
        SELECT
          histogram(request_method) AS result
        FROM      log
      ),
      UNNEST(result) AS t(key, value)
  • 查詢和分析結果unnest