Hive及Spark环境下使用HiveQL实现列转行的操作咨询
HiveQL实现宽表转多行方案
你需要的是将原表中n、Annualised electricity bill - mean两个指标列拆分为独立的行数据,可通过Hive的LATERAL VIEW搭配EXPLODE函数实现,假设你的原表名为original_electricity_data,具体代码如下:
SELECT Electricity_Network, EnergyType, ContractType, FY, exploded_value AS values FROM original_electricity_data LATERAL VIEW EXPLODE( ARRAY( CONCAT('n-', CAST(n AS STRING)), CONCAT('Annualised electricity bill - mean-', CAST(`Annualised electricity bill - mean` AS STRING)) ) ) exploded_view AS exploded_value
注意事项
- 如果需要匹配示例中的小数精度,可在CAST转换时指定DECIMAL类型精度,比如
CAST(Annualised electricity bill - meanAS DECIMAL(18,12))即可输出12位小数 - 如果你提供的目标输出中第二行FY后的空逗号是排版要求,可在SELECT中新增空值列适配,常规场景下上述代码输出的结果已经满足指标拆行的需求
内容的提问来源于stack exchange,提问作者Mahdi
相关产品推荐
相关产品推荐

