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

溫馨提示×

溫馨提示×

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

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

Hive行轉列的實現方式

發布時間:2021-09-04 16:00:32 來源:億速云 閱讀:324 作者:chen 欄目:大數據

本篇內容主要講解“Hive行轉列的實現方式”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Hive行轉列的實現方式”吧!

前言

傳統關系型數據庫中,無論是Oracle(11g之后)還是SQLserver(2005之后),都自帶了Pivot函數實現行轉列功能,本文主要講述在Hive中實現行轉列的兩種方式。

傳統數據庫方式

這種方式是借鑒在Oracle或者SQLserver在支持Pivot函數之前實現行轉列的方式,實際上語法沒有什么變化,只是換成了Hive。

with testtable(
select 1 id,'k1' key,123 value
 union all
select 1,'k2' key,124 value
 union all
select 2,'k1',234 value
 )
select id,
      max(case when key='k1' then value else null end) k1,
      max(case when key='k2' then value else null end) k2
 from testtable
group by id

Map方式

這種方式的思路是把需要轉列的字段及其值字段拼接成一個Hive上的key-value的map數據,具體Sql如下:

with testtable(
select 1 id,'k1' key,123 value
 union all
select 1,'k2' key,124 value
 union all
select 2,'k1',234 value
 )
select id,kv['k1'],kv['k2']
 from (
select id,str_to_map(concat_ws(',', collect_set(concat(key, '-', value))),',','-') kv
 from testtable
group by id)t

總結

兩種方式都可以實現行轉列的功能,傳統的方式易于理解,但在key的取值比較多的時候,寫起來會相當繁瑣,map的方式相對要簡便一些。但map的方式所有的數據都collect到一起了,對內存的要求會高一些,而傳統的方式通過聚合函數直接reduce,可以邊運行邊求值。

到此,相信大家對“Hive行轉列的實現方式”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

历史| 开江县| 虞城县| 玛多县| 磴口县| 靖宇县| 寿阳县| 延安市| 高要市| 鄂尔多斯市| 滦平县| 榆社县| 永福县| 开鲁县| 东明县| 九寨沟县| 黑山县| 南召县| 新宁县| 丰宁| 扬州市| 饶平县| 中山市| 上饶县| 邵阳县| 涿鹿县| 绿春县| 天峨县| 哈尔滨市| 泾源县| 于田县| 年辖:市辖区| 冷水江市| 铜陵市| 景宁| 景泰县| 五华县| 股票| 麻城市| 台湾省| 莱芜市|