使用Amazon RedShift转动表格

 回忆回忆194567 发布于 2023-02-09 15:30

我在Amazon RedShift中有几个表,它们遵循多个维度列的模式和一对度量标准名称/值列.

DimensionA  DimensionB  MetricName  MetricValue
----------  ----------  ----------  -----------
dimA1       dimB1       m1          v11
dimA1       dimB2       m1          v12
dimA1       dimB2       m2          v21
dimA2       dimB2       m1          v13
dimA3       dimB1       m2          v22        

我正在寻找一种好方法来将数据展开/转动为每个唯一维度集合的一行形式,例如:

DimensionA  DimensionB  m1   m2 
----------  ----------  ---  ---
dimA1       dimB1       v11
dimA1       dimB2       v12  v21
dimA2       dimB2       v13
dimA3       dimB1            v22        

生成执行此展开的查询的好模式是什么?

亚马逊红移是基于ParAccel和支持的PostgreSQL 8.0.2,它不具有crosstab,unnest,pivotunpivot.

1 个回答
  • 您只需为每个MetricName创建一个CASE语句,但您也必须使用聚合来使GROUP BY工作.

    SELECT dimension_a
          ,dimension_b
          ,MAX(CASE WHEN metric_name = 'm1' THEN metric_value ELSE NULL END) m1
          ,MAX(CASE WHEN metric_name = 'm2' THEN metric_value ELSE NULL END) m2
      FROM my_table
     GROUP BY dimension_a
             ,dimension_b
    ;
    

    值得注意的是,Redshift对象名称从不区分大小写,但列内容始终是,这与SQL Server默认值相反.

    2023-02-09 15:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有