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

如何在DAX Studio中对Datatable执行逆透视操作?

DAX逆透视解决方案(含日期转换)

现有如下DAX定义的数据表,需要完成逆透视操作,将月份列(Apr FY23、May FY24等)转换为MonthFY日期列,并保留Group A、Variable和对应数值:

EVALUATE
Var mydf =
DATATABLE (
    "Group A", STRING, "Variable", STRING,
    "Apr FY23", CURRENCY, "May FY24", CURRENCY,
    "Jun FY24", CURRENCY,"Jul FY24", CURRENCY,

    {
    
        { "Gorup A", "Additions_at_Cost", 10000, 20000 ,50000,60000},
        { "Group A", "Accum_Dep", 5000, 6000, 75000,8500},
        { "Group A", "Accum_Dep Dispositions Impairments",10 ,10,1000, 1000},
        { "Group A", "Dispositions", 999,999, 5000,5000},
        
        { "Gorup B", "Additions_at_Cost", 10000, 20000 ,50000,60000},
        { "Group B", "Accum_Dep", 5000, 6000, 75000,8500},
        { "Group B", "Accum_Dep Dispositions Impairments", 10,10,1000, 1000},
        { "Group B", "Dispositions", 999,999, 5000,5000}
    }
)
Return mydf

你之前的代码存在以下问题:

  • SELECTCOLUMNS中直接用数组{"Group A", "Group B"}赋值错误,应引用原表的[Group A]列
  • 原表列名为Jul FY24,代码中误写为July FY24,列名不匹配
  • 未将MonthFY转换为日期类型,仅以文本存储

正确的逆透视代码

EVALUATE
VAR mydf =
    DATATABLE (
        "Group A", STRING, "Variable", STRING,
        "Apr FY23", CURRENCY, "May FY24", CURRENCY,
        "Jun FY24", CURRENCY,"Jul FY24", CURRENCY,
        {
            { "Group A", "Additions_at_Cost", 10000, 20000 ,50000,60000},
            { "Group A", "Accum_Dep", 5000, 6000, 75000,8500},
            { "Group A", "Accum_Dep Dispositions Impairments",10 ,10,1000, 1000},
            { "Group A", "Dispositions", 999,999, 5000,5000},
            { "Group B", "Additions_at_Cost", 10000, 20000 ,50000,60000},
            { "Group B", "Accum_Dep", 5000, 6000, 75000,8500},
            { "Group B", "Accum_Dep Dispositions Impairments", 10,10,1000, 1000},
            { "Group B", "Dispositions", 999,999, 5000,5000}
        }
    )
VAR PivotApr = 
    SELECTCOLUMNS (
        mydf,
        "Group A", [Group A],
        "Variable", [Variable],
        "MonthFY", DATEVALUE("01 " & "Apr FY23"),
        "Value", [Apr FY23]
    )
VAR PivotMay = 
    SELECTCOLUMNS (
        mydf,
        "Group A", [Group A],
        "Variable", [Variable],
        "MonthFY", DATEVALUE("01 " & "May FY24"),
        "Value", [May FY24]
    )
VAR PivotJun = 
    SELECTCOLUMNS (
        mydf,
        "Group A", [Group A],
        "Variable", [Variable],
        "MonthFY", DATEVALUE("01 " & "Jun FY24"),
        "Value", [Jun FY24]
    )
VAR PivotJul = 
    SELECTCOLUMNS (
        mydf,
        "Group A", [Group A],
        "Variable", [Variable],
        "MonthFY", DATEVALUE("01 " & "Jul FY24"),
        "Value", [Jul FY24]
    )
RETURN
    UNION (PivotApr, PivotMay, PivotJun, PivotJul)

代码说明

  • 修正了原表中Gorup A的拼写错误为Group A,确保数据一致性
  • 通过DATEVALUE("01 " & 月份文本)将月份文本转换为当月第一天的日期值,满足MonthFY为日期类型的要求
  • SELECTCOLUMNS中正确引用原表的[Group A]和[Variable]列,保证每行数据对应正确的分组和变量
  • 使用UNION合并所有月份的子表,完成逆透视操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:59:57