如何(取消)将多个指标转换为单个列?

Posted

技术标签:

【中文标题】如何(取消)将多个指标转换为单个列?【英文标题】:How to (un)pivot multiple metrics to a single column? 【发布时间】:2021-11-27 17:54:24 【问题描述】:

我有一个宽表,其中包含值为 1 或 null 的各种指标。如何使用 pivot 转换初始表,以便将每个 transaction_id 分解为指标数量并将所有标志存储在单个列中?

当前表

|  transaction_id  |   state |   metric_1   |  metric_2    |    metric_3  |
|  10              |    NY   |      1       |   null       |      1       |
|  20              |    CA   |     null     |     1        |      1       |

预期表

|  transaction_id      |  state  |   metric_name   |   flag   |
|  10                  |    NY   |    metric_1     |    1     |
|  10                  |    NY   |    metric_2     |    null  |
|  10                  |    NY   |    metric_3     |    1     |
|  20                  |    CA   |    metric_1     |    null  |  
|  20                  |    CA   |    metric_2     |    1     | 
|  20                  |    CA   |    metric_3     |    1     | 

【问题讨论】:

【参考方案1】:

使用CROSS APPLY 是一种选择。

Select A.transaction_id
      ,A.state
      ,B.metric_name
      ,B.flag
 From  YourTable A
 Cross Apply ( values ('metric_1',metric_1)
                     ,('metric_2',metric_2)
                     ,('metric_3',metric_3)
             ) B(metric_name,flag)

【讨论】:

以上是关于如何(取消)将多个指标转换为单个列?的主要内容,如果未能解决你的问题,请参考以下文章

使用逗号分隔符将单个 CSV 列批量转换为多个

如何将单个工作表中的多行(在 excel 中)转换为多个 CSV 文件

如何将数据从多个输入字段转换为单个 JSON 对象以进一步将其插入单个 mysql 字段

如何将单个列转换为单行

Python:如何将 Pandas Dataframe 行值转换为单个列?

如何将包含单个列的文本文件转换为矩阵?