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

數組函數和運算符

本文介紹數組函數和運算符的基礎語法及示例。

日志服務支持如下數組函數和運算符。

重要 在日志服務分析語句中,表示字符串的字符必須使用單引號('')包裹,無符號包裹或被雙引號("")包裹的字符表示字段名或列名。例如:'status'表示字符串status,status"status"表示日志字段status。

函數名稱

語法

說明

支持SQL

支持SPL

下標運算符

[x]

返回數組中的第x個元素。等同于element_at函數。

×

array_agg函數

array_agg(x)

以數組形式返回x中的所有值。

×

array_distinct函數

array_distinct(x)

刪除數組中重復的元素。

array_except函數

array_except(x, y)

計算兩個數組的差集。

array_intersect函數

array_intersect(x, y)

計算兩個數組的交集。

array_join函數

array_join(x, delimiter)

使用指定的連接符將數組中的元素拼接為一個字符串。如果數組中包含null元素,則null元素將被忽略。

重要

使用array_join函數時,返回結果大小最大為1 KB,超出1 KB的數據會被截斷。

array_join(x, delimiter, null_replacement)

使用指定的連接符將數組中的元素拼接為一個字符串。如果數組中包含null元素,則null元素將被替換為null_replacement

重要

使用array_join函數時,返回結果大小最大為1 KB,超出1 KB的數據會被截斷。

array_max函數

array_max(x)

獲取數組中的最大值。

array_min函數

array_min(x)

獲取數組中的最小值。

array_position函數

array_position(x, element)

獲取指定元素的下標,下標從1開始。如果指定元素不存在,則返回0。

array_remove函數

array_remove(x, element)

刪除數組中指定的元素。

array_sort函數

array_sort(x)

對數組元素進行升序排序。如果有null元素,則null元素排在最后。

array_transpose函數

array_transpose(x)

對矩陣進行轉置,即提取二維數組中索引相同的元素組成一個新的二維數組。

×

array_union函數

array_union(x, y)

計算兩個數組的并集。

×

cardinality函數

cardinality(x)

計算數組中元素的個數。

concat函數

concat(x, y…)

將多個數組拼接為一個數組。

×

contains函數

contains(x, element)

判斷數組中是否包含指定元素。如果包含,則返回true。

×

element_at函數

element_at(x, y)

返回數組中的第y個元素。

×

filter函數

filter(x, lambda_expression)

結合Lambda表達式,用于過濾數組中的元素。只返回滿足Lambda表達式的元素。

flatten函數

flatten(x)

將二維數組轉換為一維數組。

×

reduce函數

reduce(x, lambda_expression)

根據Lambda表達式中的定義,對數組中的各個元素進行相加計算,然后返回計算結果。

reverse函數

reverse(x)

對數組中的元素進行反向排列。

sequence函數

sequence(x, y)

通過指定的起始值返回一個數組,其元素為起始值范圍內一組連續且遞增的值。遞增間隔為默認值1。

sequence(x, y, step)

通過指定的起始值返回一個數組,其元素為起始值范圍內一組連續且遞增的值,并自定義遞增間隔。

shuffle函數

shuffle(x)

對數組元素進行隨機排列。

slice函數

slice(x, start, length)

獲取數組的子集。

transform函數

transform(x, lambda_expression)

將Lambda表達式應用到數組的每個元素中。

zip函數

zip(x, y...)

將多個數組合并為一個二維數組,且各個數組中下標相同的元素組成一個新的數組。

zip_with函數

zip_with(x, y, lambda_expression)

根據Lambda表達式中的定義將兩個數組合并為一個數組。

×

下標運算符

下標運算符用于返回數組中的第x個元素。等同于element_at函數。

語法

[x]

參數說明

參數

說明

x

數組下標,從1開始。參數值為bigint類型。

返回值類型

返回指定元素的數據類型。

示例

返回number字段值中的第1個元素。

  • 字段樣例

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

    * | SELECT cast(json_parse(number) as array(bigint)) [1]
  • 查詢和分析結果下標運算符

array_agg函數

array_agg函數會以數組形式返回x中的所有值。

語法

array_agg (x)

參數說明

參數

說明

x

參數值為任意數據類型。

返回值類型

array類型。

示例

以數組形式返回status字段的值。

  • 查詢和分析語句

    * | SELECT array_agg(status) AS array
  • 查詢和分析結果array_agg

array_distinct函數

array_distinct函數用于刪除數組中重復的元素。

語法

array_distinct(x)

參數說明

參數

說明

x

參數值為array類型。

返回值類型

array類型。

示例

刪除number字段值中重復的元素。

  • 字段樣例

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

    *| SELECT array_distinct(cast(json_parse(number) as array(bigint)))
  • 查詢和分析結果array_distinct

array_except函數

array_except函數用于計算兩個數組的差集。

語法

array_except(x, y)

參數說明

參數

說明

x

參數值為array類型。

y

參數值為array類型。

返回值類型

array類型。

示例

計算數組[1,2,3,4,5]和[1,3,5,7]的差集。

  • 查詢和分析語句

    * | SELECT array_except(array[1,2,3,4,5],array[1,3,5,7])
  • 查詢和分析結果array_except

array_intersect函數

array_intersect函數用于計算兩個數組的交集。

語法

array_intersect(x, y)

參數說明

參數

說明

x

參數值為array類型。

y

參數值為array類型。

返回值類型

array類型。

示例

計算數組[1,2,3,4,5]和[1,3,5,7]的交集。

  • 查詢和分析語句

    * | SELECT array_intersect(array[1,2,3,4,5],array[1,3,5,7])
  • 查詢和分析結果array_intersect

array_join函數

array_join函數使用指定的連接符將數組中的元素拼接為一個字符串。

語法

  • 使用指定的連接符將數組中的元素拼接為一個字符串。如果數組中包含null元素,則null元素將被忽略。

    array_join(x, delimiter)
  • 使用指定的連接符將數組中的元素拼接為一個字符串。如果數組中包含null元素,則null元素將被替換為null_replacement

    array_join(x, delimiter,null_replacement)

參數說明

參數

說明

x

參數值為任意array類型。

delimiter

連接符,可以為字符串。

null_replacement

用于替換null元素的字符串。

返回值類型

varchar類型。

示例

使用空格將數組[null, 'Log','Service']中的元素拼接為一個字符串,其中null元素替換為Alicloud。

  • 查詢和分析語句

    * | SELECT array_join(array[null,'Log','Service'],' ','Alicloud')
  • 查詢和分析結果array_join

array_max函數

array_max函數用于獲取數組中的最大值。

語法

array_max(x) 

參數說明

參數

說明

x

參數值為array類型。

重要

如果數組中包含null,則返回結果為null。

返回值類型

與參數值中元素的數據類型一致。

示例

獲取數組中的最大值。

  • 字段樣例

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

    *| SELECT array_max(try_cast(json_parse(number) as array(bigint))) AS max_number
  • 查詢和分析結果array_max

array_min函數

array_min函數用于獲取數組中的最小值。

語法

array_min(x) 

參數說明

參數

說明

x

參數值為array類型。

重要

如果數組中包含null,則返回結果為null。

返回值類型

與參數值中元素的數據類型一致。

示例

獲取數組中的最小值。

  • 字段樣例

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

    *| SELECT array_min(try_cast(json_parse(number) as array(bigint))) AS min_number
  • 查詢和分析結果array_min

array_position函數

array_position函數用于獲取指定元素的下標,下標從1開始。如果指定元素不存在,則返回0。

語法

array_position(x, element)

參數說明

參數

說明

x

參數值為數組類型。

element

數組中的一個元素。

說明

如果待獲取下標的元素為null ,則返回結果也為null 。

返回值類型

bigint類型。

示例

返回數組[49,45,47]中45的下標。

  • 查詢和分析語句

    * | SELECT array_position(array[49,45,47],45)
  • 查詢和分析結果array_position

array_remove函數

array_remove函數用于刪除數組中指定的元素。

語法

array_remove(x, element)

參數說明

參數

說明

x

參數值為array類型。

element

數組中的一個元素。

說明

如果待刪除的元素為null ,則返回結果也為null。

返回值類型

array類型。

示例

刪除數組[49,45,47]中45。

  • 查詢和分析語句

    * | SELECT array_remove(array[49,45,47],45)
  • 查詢和分析結果array_remove函數

array_sort函數

array_sort函數用于對數組元素進行升序排序。如果有null元素,則null元素排在最后。

語法

array_sort(x)

參數說明

參數

說明

x

參數值為array類型。

返回值類型

array類型。

示例

對數組['b', 'd', null, 'c', 'a']進行升序排序。

  • 查詢和分析語句

    * | SELECT array_sort(array['b','d',null,'c','a'])
  • 查詢和分析結果array_sort

array_transpose函數

array_transpose函數用于對矩陣進行轉置,即提取二維數組中索引相同的元素組成一個新的二維數組。

語法

array_transpose(x)

參數說明

參數

說明

x

參數值為array(double)類型。

返回值類型

array(double)類型。

示例

提取二維數組中索引相同的元素組成一個新的二維數組,例如數組[0,1,2,3]、[10,19,18,17]、[9,8,7]中的0、10、9的索引都為1,則組成數組[0.0,10.0,9.0]。

  • 查詢和分析語句

    * | SELECT array_transpose(array[array[0,1,2,3],array[10,19,18,17],array[9,8,7]])
  • 查詢和分析結果array_transpose

array_union函數

array_union函數用于計算兩個數組的并集。

語法

array_union(x, y)

參數說明

參數

說明

x

參數值為array類型。

y

參數值為array類型。

返回值類型

array類型。

示例

計算數組[1,2,3,4,5]和[1,3,5,7]的并集。

  • 查詢和分析語句

    * | SELECT array_union(array[1,2,3,4,5],array[1,3,5,7])
  • 查詢和分析結果array_union

cardinality函數

cardinality函數用于計算數組中元素的個數。

語法

cardinality(x)

參數說明

參數

說明

x

參數值為array類型。

返回值類型

bigint類型。

示例

計算number字段值中元素的個數。

  • 字段樣例

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

    *| SELECT cardinality(cast(json_parse(number) as array(bigint)))
  • 查詢和分析結果cardinality

concat函數

concat函數用于將多個數組拼接為一個數組。

語法

concat(x, y…)

參數說明

參數

說明

x

參數值為array類型。

y

參數值為array類型。

返回值類型

array類型。

示例

將數組['red','blue']和['yellow','green']拼接為一個數組。

  • 查詢和分析語句

    * | SELECT concat(array['red','blue'],array['yellow','green'])
  • 查詢和分析結果concat-array

contains函數

contains函數用于判斷數組中是否包含指定元素。如果包含,則返回true。

語法

contains(x, element)

參數說明

參數

說明

x

參數值為數組類型。

element

數組中的一個元素。

返回值類型

boolean類型。

示例

判斷region字段值中是否包含cn-beijing。

  • 字段樣例

    region:["cn-hangzhou","cn-shanghai","cn-beijing"]
  • 查詢和分析語句

    *| SELECT contains(cast(json_parse(region) as array(varchar)),'cn-beijing')
  • 查詢和分析結果contains

element_at函數

element_at函數用于返回數組中的第y個元素。

語法

element_at(x, y)

參數說明

參數

說明

x

參數值為array類型。

y

數組下標,從1開始。參數值為bigint類型。

返回值類型

任意數據類型。

示例

返回number字段值中的第2個元素。

  • 字段樣例

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

    * |
    SELECT
      element_at(cast(json_parse(number) AS array(varchar)), 2)
  • 查詢和分析結果 element_at

filter函數

filter函數和Lambda表達式結合,用于過濾數組中的元素。只返回滿足Lambda表達式的元素。

語法

filter(x, lambda_expression)

參數說明

參數

說明

x

參數值為array類型。

lambda_expression

Lambda表達式。更多信息,請參見Lambda表達式

返回值類型

array類型。

示例

返回數組[5,-6,null,7]中大于0的元素,其中x -> x > 0為Lambda表達式。

  • 查詢和分析語句

    * | SELECT filter(array[5,-6,null,7],x -> x > 0)
  • 查詢和分析結果filter

flatten函數

flatten函數用于將二維數組轉換為一維數組。

語法

flatten(x)

參數說明

參數

說明

x

參數值為array類型。

返回值類型

array類型。

示例

將數組array[1,2,3,4]和array[5,2,2,4]轉換為一維數組。

  • 查詢和分析語句

    * | SELECT flatten(array[array[1,2,3,4],array[5,2,2,4]])
  • 查詢和分析結果flatten

reduce函數

reduce函數將根據Lambda表達式中的定義,對數組中的各個元素進行相加計算,然后返回計算結果。

語法

reduce(x, lambda_expression)

參數說明

參數

說明

x

參數值為array類型。

lambda_expression

第一個參數是初始值,第二個參數是Lambda表達式,第三個參數是對Lambda表達式計算結果的處理。

返回值類型

bigint類型。

示例

返回數組[5, 20, 50]中各個元素相加的結果。

  • 查詢和分析語句

    * | SELECT reduce(array[5,20,50],0,(s, x) -> s + x, s -> s)
  • 查詢和分析結果reduce

reverse函數

reverse函數用于對數組中的元素進行反向排列。

語法

reverse(x)

參數說明

參數

說明

x

參數值為array類型。

返回值類型

array類型。

示例

將數組[1,2,3,4,5]中的元素反向排序。

  • 查詢和分析語句

    * | SELECT reverse(array[1,2,3,4,5])
  • 查詢和分析結果reverse

sequence函數

sequence函數通過指定的起始值返回一個數組,其元素為起始值范圍內一組連續且遞增的值。

語法

  • 遞增間隔為默認值1。

    sequence(x, y)
  • 自定義遞增間隔。

    sequence(x, y, step)

參數說明

參數

說明

x

參數值為bigint類型、timestamp類型(Unix時間戳、日期和時間表達式)。

y

參數值為bigint類型、timestamp類型(Unix時間戳、日期和時間表達式)。

step

數值間隔。

當參數值為日期和時間表達式時,step格式如下:

  • interval ' n' year to month,表示間隔為n年。

  • interval 'n' day to second,表示間隔為n天。

返回值類型

array類型。

示例

  • 示例1:返回0~10之間的偶數。

    • 查詢和分析語句

      * | SELECT sequence(0,10,2)
    • 查詢和分析結果sequence

  • 示例2:返回2017-10-23到2021-08-12之間的日期,間隔為1年。

    • 查詢和分析語句

      ww* | SELECT  sequence(from_unixtime(1508737026),from_unixtime(1628734085),interval '1' year to month )
    • 查詢和分析結果sequence

  • 示例3:返回1628733298,1628734085之間的Unix時間戳,間隔為60秒。

    • 查詢和分析語句

      * | SELECT  sequence(1628733298,1628734085,60)
    • 查詢和分析結果sequence

shuffle函數

shuffle函數用于對數組元素進行隨機排列。

語法

shuffle(x)

參數說明

參數

說明

x

參數值為array類型。

返回值類型

array類型。

示例

對數組[1,2,3,4,5]中的元素進行隨機排序。

  • 查詢和分析語句

    *| SELECT shuffle(array[1,2,3,4,5])
  • 查詢和分析結果shuffle

slice函數

slice函數用于返回數組的子集。

語法

slice(x, start, length)

參數說明

參數

說明

x

參數值為array類型。

start

指定索引開始的位置。

  • 如果start為負數,則從末尾開始。

  • 如果start為正數,則從頭部開始。

length

指定子集中元素的個數。

返回值類型

array類型。

示例

返回數組[1,2,4,5,6,7,7]的子集,從第三個元素開始返回,子集元素個數為2。

  • 查詢和分析語句

    * | SELECT slice(array[1,2,4,5,6,7,7],3,2)
  • 查詢和分析結果slice

transform函數

transform函數用于將Lambda表達式應用到數組的每個元素中。

語法

transform(x, lambda_expression)

參數說明

參數

說明

x

參數值為array類型。

lambda_expression

Lambda表達式。更多信息,請參見Lambda表達式

返回值類型

array類型。

示例

將數組[5,6]中的各個元素加1,然后返回。

  • 查詢和分析語句

    * | SELECT transform(array[5,6],x -> x + 1)
  • 查詢和分析結果transform

zip函數

zip函數用于將多個數組合并為一個二維數組,且各個數組中下標相同的元素組成一個新的數組。

語法

zip(x, y...) 

參數說明

參數

說明

x

參數值為array類型。

y

參數值為array類型。

返回值類型

array類型。

示例

將數組[1,2,3]、['1b',null,'3b']和[1,2,3]合并為一個二維數組。

  • 查詢和分析語句

    * | SELECT zip(array[1,2,3], array['1b',null,'3b'],array[1,2,3])
  • 查詢和分析結果zip

zip_with函數

zip_with函數將根據Lambda表達式中的定義將兩個數組合并為一個數組。

語法

zip_with(x, y, lambda_expression)

參數說明

參數

說明

x

參數值為array類型。

y

參數值為array類型。

lambda_expression

Lambda表達式。更多信息,請參見Lambda表達式

返回值類型

array類型。

示例

使用Lambda表達式(x, y) -> x + y使數組[1,2]和[3,4]中的元素分別相加后,以數組類型返回相加的結果。

  • 查詢和分析語句

    SELECT zip_with(array[1,2], array[3,4],(x,y) -> x + y)
  • 查詢和分析結果zip_with