91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在SQL中使用UDF和lambda函數使用示例分析

發布時間:2022-01-05 11:00:51 來源:億速云 閱讀:148 作者:柒染 欄目:云計算

在SQL中使用UDF和lambda函數使用示例分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

摘要: 場景 日志服務內置了20+類SQL函數。面對用戶復雜的業務場景,例如使用json來沉淀業務數據,普通的SQL函數可能就無法滿足需求,需要一些用戶自定義處理邏輯。為了處理json類的業務數據,我們可以采用把json展開成多行的形式進行統計分析,今天我們介紹使用UDF(lambda)的方式來編寫自定義邏輯,處理json、array、map類型的數據。

場景

日志服務內置了20+類SQL函數。面對用戶復雜的業務場景,例如使用json來沉淀業務數據,普通的SQL函數可能就無法滿足需求,需要一些用戶自定義處理邏輯。為了處理json類的業務數據,我們可以采用把json展開成多行的形式進行統計分析,今天我們介紹使用UDF(lambda)的方式來編寫自定義邏輯,處理json、array、map類型的數據。

數據樣例:

__source__:  11.164.232.105
__tag__:__hostname__:  vm-req-170103232316569850-tianchi111932.tc
__topic__:  TestTopic_4
array_column:  [1,2,3]
double_column:  1.23
map_column:  {"a":1,"b":2}
text_column:  商品

lambda函數對array類型的數據進行求均值

為了遍歷每一個array元素,并且把計算所有元素的均值,我們通過reduce函數進行計算。

* | select  array_column,  reduce( cast(  json_parse(array_column) as  array(bigint))  , CAST(ROW(0.0, 0) AS ROW(sum DOUBLE, count INTEGER))  ,  (s,x) -> cast(row( x+ s.sum,  s.count+1) as ROW(sum double, count INTEGER)), s -> IF(s.count = 0, NULL, s.sum / s.count))

在SQL中使用UDF和lambda函數使用示例分析

reduce 函數的具體語義參考語法文檔。參數分為四部分

  1. cast( json_parse(array_column) as array(bigint)) 表示輸入的數組數據

  2. CAST(ROW(0.0, 0) AS ROW(sum DOUBLE, count INTEGER)) 定義起始狀態為一個復雜的row類型,分別記錄sum和count

  3. 對每一個元素,計算累加值,(s,x) -> cast(row( x+ s.sum, s.count+1) as ROW(sum double, count INTEGER)) s代表已經有的狀態,x代表新輸入的元素,計算結果通過cast強制定義為row類型

  4. 最后對最終狀態,計算avg值,s -> IF(s.count = 0, NULL, s.sum / s.count)。s代表最終狀態。

對所有行的array元素求avg:

* |  select  sum(rows.sum ) / sum(rows.count)  from(
           select  array_column,  reduce( cast(  json_parse(array_column) as  array(bigint))  , CAST(ROW(0.0, 0) AS ROW(sum DOUBLE, count INTEGER))  ,  (s,x) -> cast(row( x+ s.sum,  s.count+1) as ROW(sum double, count INTEGER)), s -> s)  as rows from log 
           )

通過子查詢的方式,先reduce每一行的array的sum 和count。之后在嵌套查詢中,求所有行的sum和count,最后相除求avg:

在SQL中使用UDF和lambda函數使用示例分析

關于在SQL中使用UDF和lambda函數使用示例分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

北京市| 保靖县| 巨野县| 拉孜县| 辽宁省| 大田县| 祥云县| 独山县| 赤壁市| 中卫市| 汉中市| 土默特右旗| 永胜县| 内江市| 怀安县| 上蔡县| 西吉县| 凌海市| 砀山县| 区。| 满城县| 惠安县| 蚌埠市| 华阴市| 贺兰县| 工布江达县| 公主岭市| 丁青县| 新河县| 景东| 淮阳县| 太和县| 如东县| 昂仁县| 万载县| 大宁县| 岳阳县| 东乌珠穆沁旗| 阳东县| 巫溪县| 龙泉市|