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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python3 array为什么不能放不同类型的数据_来自俄罗斯的凶猛彪悍的分析数据库ClickHouse...

發布時間:2023/12/2 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3 array为什么不能放不同类型的数据_来自俄罗斯的凶猛彪悍的分析数据库ClickHouse... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方藍色字體,選擇“設為星標

回復”資源“獲取更多資源

大數據技術與架構點擊右側關注,大數據開發領域最強公眾號!

暴走大數據點擊右側關注,暴走大數據!

ClickHouse相關文章推薦:

戰斗民族開源 | ClickHouse萬億數據雙中心的設計與實踐你需要懂一點ClickHouse的基礎知識趣頭條實戰 | 基于Flink+ClickHouse構建實時數據平臺Prometheus+Clickhouse實現業務告警基于ClickHouse的用戶行為分析實踐

ClickHouse 是一款由俄羅斯Yandex公司開源的OLAP數據庫,擁有者卓越的性能表現,在官方公布的基準測試中,ClickHouse的平均響應速度是Vertica的2.63倍、InfiniDB的17倍、MonetDB的27倍、Hive的126倍、MySQL的429倍以及Greenplum的10倍。

自2016年開源以來,ClickHouse一直保持著飛速的發展,是目前業界公認的OLAP數據庫黑馬,已在頭條、阿里、騰訊、新浪、青云等眾多公司得以應用。

作為一款分析型數據庫,ClickHouse提供了許多數據類型,它們可以劃分為基礎類型、復合類型和特殊類型。其中基礎類型使ClickHouse具備了描述數據的基本能力,而另外兩種類型則使ClickHouse的數據表達能力更加豐富立體。

本文主要來談ClickHouse的復合類型,ClickHouse提供了數組、元組、枚舉和嵌套四類復合類型。這些類型通常是其他數據庫原生不具備的特性。擁有了復合類型之后,ClickHouse的數據模型表達能力更強了。

  • Array

  • 數組有兩種定義形式,常規方式array(T):

    SELECT array(1, 2) as a , toTypeName(a)

    ┌─a───┬─toTypeName(array(1, 2))─┐

    │ [1,2] │ Array(UInt8) ?????????????│

    └─────┴────────────────┘

    或者簡寫方式[T]:

    SELECT [1, 2]

    通過上述的例子可以發現,在查詢時并不需要主動聲明數組的元素類型。因為ClickHouse的數組擁有類型推斷的能力,推斷依據:以最小存儲代價為原則,即使用最小可表達的數據類型。例如在上面的例子中,array(1, 2)會通過自動推斷將UInt8作為數組類型。但是數組元素中如果存在Null值,則元素類型將變為Nullable,例如:


    ?SELECT [1, 2, null] as a , toTypeName(a)

    ┌─a──────┬─toTypeName([1, 2, NULL])─┐

    │ [1,2,NULL] │ Array(Nullable(UInt8)) ???│

    └────────┴─────────────────┘

    細心的讀者可能已經發現,在同一個數組內可以包含多種數據類型,例如數組[1, 2.0]是可行的。但各類型之間必須兼容,例如數組[1, '2']則會報錯。

    在定義表字段時,數組需要指定明確的元素類型,例如:

    CREATE TABLE Array_TEST (

    ????c1 Array(String)

    ) engine = Memory


    2. Tuple

    元組類型由1~n個元素組成,每個元素之間允許設置不同的數據類型,且彼此之間不要求兼容。元組同樣支持類型推斷,其推斷依據仍然以最小存儲代價為原則。與數組類似,元組也可以使用兩種方式定義,常規方式tuple(T):

    SELECT tuple(1,'a',now()) AS x, toTypeName(x)

    ┌─x─────────────────┬─toTypeName(tuple(1, 'a', now()))─┐

    │ (1,'a','2019-08-28 21:36:32') │ Tuple(UInt8, String, DateTime) ???│

    └───────────────────┴─────────────────────┘

    或者簡寫方式(T):

    SELECT (1,2.0,null) AS x, toTypeName(x)

    ┌─x──────┬─toTypeName(tuple(1, 2., NULL))───────┐

    │ (1,2,NULL) │ Tuple(UInt8, Float64, Nullable(Nothing)) │

    └───────┴──────────────────────────┘

    在定義表字段時,元組也需要指定明確的元素類型:

    CREATE TABLE Tuple_TEST (

    ????c1 Tuple(String,Int8)

    ) ENGINE = Memory;


    元素類型和泛型的作用類似,可以進一步保障數據質量。在數據寫入的過程中會進行類型檢查。例如,寫入INSERT INTO Tuple_TEST VALUES( ('abc' , 123) )是可行的,而寫入INSERT INTO Tuple_TEST VALUES( ('abc' , 'efg') )則會報錯。

    3. Enum

    ClickHouse支持枚舉類型,這是一種在定義常量時經常會使用的數據類型。ClickHouse提供了Enum8和Enum16兩種枚舉類型,它們除了取值范圍不同之外,別無二致。枚舉固定使用(String:Int) Key/Value鍵值對的形式定義數據,所以Enum8和Enum16分別會對應(String:Int8)和(String:Int16),例如:

    CREATE TABLE Enum_TEST (

    ????c1 Enum8('ready' = 1, 'start' = 2, 'success' = 3, 'error' = 4)

    ) ENGINE = Memory;

    在定義枚舉集合的時候,有幾點需要注意。首先,Key和Value是不允許重復的,要保證唯一性。其次,Key和Value的值都不能為Null,但Key允許是空字符串。在寫入枚舉數據的時候,只會用到Key字符串部分,例如:

    INSERT INTO Enum_TEST VALUES('ready');

    INSERT INTO Enum_TEST VALUES('start');


    數據在寫入的過程中,會對照枚舉集合項的內容逐一檢查。如果Key字符串不在集合范圍內則會拋出異常,比如執行下面的語句就會出錯:

    INSERT INTO Enum_TEST VALUES('stop');

    可能有人會覺得,完全可以使用String代替枚舉,為什么還需要專門的枚舉類型呢?這是出于性能的考慮。因為雖然枚舉定義中的Key屬于String類型,但是在后續對枚舉的所有操作中(包括排序、分組、去重、過濾等),會使用Int類型的Value值。

    4. Nested

    嵌套類型,顧名思義是一種嵌套表結構。一張數據表,可以定義任意多個嵌套類型字段,但每個字段的嵌套層級只支持一級,即嵌套表內不能繼續使用嵌套類型。對于簡單場景的層級關系或關聯關系,使用嵌套類型也是一種不錯的選擇。例如,下面的nested_test是一張模擬的員工表,它的所屬部門字段就使用了嵌套類型:

    CREATE TABLE nested_test (

    ????name String,

    ????age ?UInt8 ,

    ????dept Nested(

    ????????id UInt8,

    ????????name String

    ????)

    ) ENGINE = Memory;


    ClickHouse的嵌套類型和傳統的嵌套類型不相同,導致在初次接觸它的時候會讓人十分困惑。以上面這張表為例,如果按照它的字面意思來理解,會很容易理解成nested_test與dept 是一對一的包含關系,其實這是錯誤的。不信可以執行下面的語句,看看會是什么結果:

    INSERT INTO nested_test VALUES ('nauu',18, 10000, '研發部');

    Exception on client:

    Code: 53. DB::Exception: Type mismatch in IN or VALUES section. Expected: Array(UInt8). Got: UInt64


    注意上面的異常信息,它提示期望寫入的是一個Array數組類型。

    現在大家應該明白了,嵌套類型本質是一種多維數組的結構。嵌套表中的每個字段都是一個數組,并且行與行之間數組的長度無須對齊。所以需要把剛才的INSERT語句調整成下面的形式:

    INSERT INTO nested_test VALUES ('bruce' , 30 , [10000,10001,10002], ['研發部','技術支持中心','測試部']);

    --行與行之間,數組長度無須對齊

    INSERT INTO nested_test VALUES ('bruce' , 30 , [10000,10001], ['研發部','技術支持中心']);


    需要注意的是,在同一行數據內每個數組字段的長度必須相等。例如,在下面的示例中,由于行內數組字段的長度沒有對齊,所以會拋出異常:

    INSERT INTO nested_test VALUES ('bruce' , 30 , [10000,10001], ['研發部','技術支持中心',

    '測試部']);

    DB::Exception: Elements 'dept.id' and 'dept.name' of Nested data structure 'dept' (Array columns) have different array sizes..

    在訪問嵌套類型的數據時需要使用點符號,例如:


    SELECT name, dept.id, dept.name FROM nested_test

    ┌─name─┬─dept.id──┬─dept.name─────────────┐

    │ bruce │ [16,17,18] │ ['研發部','技術支持中心','測試部'] │

    └────┴───────┴────────────────────┘


    關于作者:

    朱凱,ClickHouse貢獻者之一,ClickHouse布道者,資深架構師,十多年IT從業經驗,對大數據領域主流技術與解決方案有深入研究,擅長分布式系統的架構設計與整合。曾主導過多款大數據平臺級產品的規劃、設計與研發工作,一線實戰經驗豐富。現就職于遠光軟件股份有限公司,任大數據事業部平臺開發部總經理。著有《企業級大數據平臺構建:架構與實現》?《ClickHouse原理解析與應用實踐》等書。

    國內首本全方位講解ClickHouse的技術書,這是一本可幫助讀者深度理解并全面掌握ClickHouse運行原理并進行實踐開發的工具書,涵蓋了ClickHouse的時代背景、發展歷程、核心概念、基礎功能、運行原理、實踐指導等多個維度的內容。一本書幫你駕馭ClickHouse。

    版權聲明:

    本文為大數據技術與架構整理,原作者獨家授權。未經原作者允許轉載追究侵權責任。編輯|冷眼丶微信公眾號|import_bigdata歡迎點贊+收藏+轉發朋友圈素質三連

    文章不錯?點個【在看】吧!??

    總結

    以上是生活随笔為你收集整理的python3 array为什么不能放不同类型的数据_来自俄罗斯的凶猛彪悍的分析数据库ClickHouse...的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 九月婷婷色 | 爽妇网国产精品 | 人人干免费 | 亚洲精品高清无码视频 | www.日韩一区 | 久久一级电影 | 国内偷拍精品视频 | 在线观看亚洲 | 影音先锋黄色资源 | 国产一级淫片a视频免费观看 | jizz国产视频 | ass精品国模裸体欣赏pics | 婷婷开心激情网 | 中国国产bdsm紧缚捆绑 | 美女一级视频 | 黄瓜视频污在线观看 | 欧美熟妇精品久久久久久 | 国产成人精品视频 | 五月婷婷七月丁香 | 成年人看的黄色 | 福利片一区二区 | 少妇激情偷人三级 | 色婷婷欧美 | 久久人人爽人人爽人人片亚洲 | www.香蕉视频在线观看 | 二级毛片在线观看 | 精品无码国产一区二区三区av | 欧美视频a| 超碰神马 | 日韩精品在线一区 | 国产视频精品视频 | 日本成人一区二区三区 | jzzijzzij日本成熟少妇 | 色窝窝综合色窝窝久久 | 特大黑人巨交吊性xx | 又黄又爽无遮挡 | 麻豆美女视频 | 女人喂男人奶水做爰视频 | 欧美日日骚 | xxxx性视频| 亚洲高清一区二区三区 | 成人免费看毛片 | av观看网站| av免费在线观看不卡 | 国产性色视频 | 日韩精品一区二区三区网站 | 亚洲欧美另类在线观看 | 国产免费又粗又猛又爽 | 亚洲精品视频播放 | a级片免费在线观看 | 精品人妻码一区二区三区红楼视频 | 久久六 | 日韩精品第1页 | 国产最新网址 | 中文字幕国产精品 | 黄色录像片子 | 麻豆影视在线观看 | 成人性生交大片免费看vrv66 | 中文字幕在线字幕中文 | 国产一区二区三区影视 | 日本在线播放视频 | 国产精品视频专区 | 成人动漫一区二区三区 | 国产日韩在线观看一区 | 毛片免 | 99久久精品免费看国产交换 | 爱爱91 | 国产午夜三级 | 黄色的网站免费看 | 99久国产| 国产一区二区三区四区五区六区 | 欧美超碰在线 | 青在线视频 | 久久99日| 免费午夜激情 | 欧美黄片一区二区三区 | 在线看h网站 | 亚洲国产精品一区二区三区 | 精品美女一区二区三区 | 国产黑丝一区 | 国产综合一区二区 | 999热视频 | 免费a大片 | 欧美天堂在线视频 | 69堂免费视频 | 久久精品九九 | 欧美大肚乱孕交hd孕妇 | 久久成人精品一区二区 | 色999在线 | 永久免费毛片 | 一级黄色片国产 | 欧美一区二区性久久久 | 麻豆av电影在线观看 | 男女午夜免费视频 | 艳情五月 | 亚洲熟女综合一区二区三区 | 欧美一级色图 | 精品人妻一区二区三区免费看 | 国产91精品高潮白浆喷水 |