日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

maxcompute 2.0复杂数据类型之struct

發布時間:2025/6/15 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 maxcompute 2.0复杂数据类型之struct 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 含義

類似于Java中的類的概念。包含很多類的屬性。

2. 場景

什么樣的數據,適合使用struct類型來存儲呢?這里列舉了幾個我在開發中實際用到的場景。

2.1 多個具有相同前綴的字段

其實struct完全可以拆成多個字段。但是對于比較寬的表而言,會有如下特征:
(1)字段數很多,幾百個甚至更多;
(2)相近含義的字段,會放到相鄰的位置或者使用相同的前綴,以便查找;
對于這種字段,可以考慮放到一個struct里,減少表的字段數,更加方便查找。但是數據字典的維護,依然是比較麻煩的問題。

2.2 對象列表

對象有多種固定的屬性,簡單的key-value格式無法滿足,可以使用array嵌套struct的方式定義。減少了維護數據字典的工作量。

3. 玩轉struct

3.1 構造struct

3.1.1 struct

SELECT STRUCT(4,'趙六','男') AS c; c
{"col1":4,"col2":"趙六","col3":"男"}

在沒有指定struct內具體字段名的時候,默認為col1、col2、col3、……。所以取值的時候也是這樣取,如下:

SELECT STRUCT(4,'趙六','男').col3 AS c; c

3.1.2 named_struct

SELECT NAMED_STRUCT('id',3,'name','王五','gender','男') AS c; c
{"id":3,"name":"王五","gender":"男"}

指定了struct內具體字段名,則named_struct的參數數量必須為偶數,分別是key1、value1、key2、value2、key3、value3、……。所以取值的時候也是這樣取,如下:

SELECT NAMED_STRUCT('id',3,'name','王五','gender','男').gender AS c; c

3.2 橫縱雙向展開struct數組

例如現在有這樣一張表:

c
[{id:1, name:張三, gender:男}, {id:3, name:王五, gender:男}, {id:2, name:李四, gender:男}]

現在想橫向、縱向都展開,成多行多列格式,那么就這樣做:

SELECT INLINE(c) FROM `test_table`; idnamegender
1張三
3王五
2李四

但是這種做法自由度太低,所以很少會使用到。

4. 常見用法

  • struct這種類型,更多的是應用在數據存儲上。不像array、map還會出現在復雜SQL的中間過程,用于做行列轉換等操作。
  • struct作為表結構中的字段,可以單獨使用,或者是跟array聯用,來存儲數量不固定的對象數據。在創建表的時候,需要指定好struct內部的字段名、字段類型。
  • struct大概是三個復雜類型之中,出場率最低的一個。絕大部分人都只接觸過array和map,而幾乎沒使用過struct。
  • 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的maxcompute 2.0复杂数据类型之struct的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。