You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Power BI中使用DAX实现宽表转长表的技术问询

Power BI 宽格式转长格式(含过滤)解决方案

一、DAX 计算表方案(优先推荐)

通过DAX创建计算表直接生成目标长格式数据,步骤如下:

  1. 在Power BI中点击建模选项卡 → 新建表,输入以下DAX表达式:
长格式表 = 
VAR TypeA = 
    SELECTCOLUMNS(
        FILTER('原始表', '原始表'[type_a] = 1 && '原始表'[critical_level] <> 0),
        "critical_level", '原始表'[critical_level],
        "id_trans", '原始表'[id_trans],
        "agent", '原始表'[agent],
        "period", '原始表'[period],
        "type_col", "type_a"
    )
VAR TypeB = 
    SELECTCOLUMNS(
        FILTER('原始表', '原始表'[type_b] = 1 && '原始表'[critical_level] <> 0),
        "critical_level", '原始表'[critical_level],
        "id_trans", '原始表'[id_trans],
        "agent", '原始表'[agent],
        "period", '原始表'[period],
        "type_col", "type_b"
    )
VAR TypeC = 
    SELECTCOLUMNS(
        FILTER('原始表', '原始表'[type_c] = 1 && '原始表'[critical_level] <> 0),
        "critical_level", '原始表'[critical_level],
        "id_trans", '原始表'[id_trans],
        "agent", '原始表'[agent],
        "period", '原始表'[period],
        "type_col", "type_c"
    )
RETURN
    UNION(TypeA, TypeB, TypeC)
  1. 表达式说明:
    • 三个变量TypeA/TypeB/TypeC分别筛选出对应type列值为1、且critical_level不为0的行,同时重构列结构并添加type_col标记类型。
    • 最后用UNION合并三个数据集,得到目标长格式表。

二、Power Query 预处理方案

若倾向于在数据加载阶段完成转换,操作步骤如下:

  1. 进入Power Query编辑器,选中原始数据集:
    • 点击critical_level列的筛选按钮,取消勾选0,过滤掉不需要的行。
  2. 选中critical_level、id_trans、agent、period这四列,右键选择逆透视其他列,此时会生成Attribute(对应type列名)和Value(对应0/1值)两列。
  3. 点击Value列的筛选按钮,仅保留1的行。
  4. 右键Attribute列,选择重命名,改为type_col;然后删除Value列。
  5. 点击关闭并应用,即可得到目标长格式数据。

注意:如果type_a/type_b/type_c是DAX计算列,建议先在Power Query中直接将原始的"Present"/"Not Present"转换为0/1(用替换值功能),再执行上述逆透视操作,避免计算列带来的限制。

内容的提问来源于stack exchange,提问作者R_Student

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 10:52:29