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

如何将Table_1中Formula列的字符串解析为DAX Measure并计算结果?

动态执行Table_1中存储的DAX公式字符串方案

DAX本身没有原生函数直接执行字符串格式的公式,以下是几种可行的实现方案,适配不同使用场景:

方案1:DAX Studio批量生成并执行查询

适合一次性批量计算所有ParentID的公式结果:

  1. 执行以下DAX查询,生成每个ParentID对应的完整计算语句:
EVALUATE
CONCATENATEX(
    Table_1,
    "EVALUATE ADDCOLUMNS(
        SUMMARIZE(
            UNION(SELECTCOLUMNS(Table_2, ""Date"", [Date], ""Parent_ID"", [Parent_ID]), SELECTCOLUMNS(Table_3, ""Date"", [Date], ""Parent_ID"", [Parent_ID])),
            [Date], [Parent_ID]
        ),
        ""CalculatedResult"", " & [Formula] & "
    )" & CHAR(10) & "UNION ALL",
    CHAR(10)
)
  1. 复制生成的结果,删除末尾多余的UNION ALL,在DAX Studio中执行即可得到每个Parent_ID、Date维度对应的计算结果。

方案2:Power Query动态调用DAX(需配置COM访问)

适合需要在Power BI中整合计算结果的场景:

  1. 在Power Query中加载Table_1,添加自定义列遍历每个公式:
let
    Source = Table_1,
    AddResultTable = Table.AddColumn(Source, "ResultTable", each 
        let
            DAXQuery = "EVALUATE ADDCOLUMNS(
                SUMMARIZE(
                    UNION(SELECTCOLUMNS(Table_2, ""Date"", [Date], ""Parent_ID"", [Parent_ID]), SELECTCOLUMNS(Table_3, ""Date"", [Date], ""Parent_ID"", [Parent_ID])),
                    [Date], [Parent_ID]
                ),
                ""CalculatedResult"", " & [Formula] & "
            )",
            // 通过DAX Studio执行查询并导出到临时Excel文件,再读取结果
            TempResult = Excel.Workbook(File.Contents("C:\Temp\DAXResult.xlsx"), null, true){0}[Data]
        in
            TempResult
    ),
    ExpandResults = Table.ExpandTableColumn(AddResultTable, "ResultTable", {"Date", "Parent_ID", "CalculatedResult"}, {"Date", "Parent_ID", "CalculatedResult"})
in
    ExpandResults
  1. 注意:需提前配置模型的COM访问权限,且临时文件路径需根据实际环境调整。

方案3:模型内静态映射公式(适用于少量固定公式)

如果Table_1中的公式数量不多,可手动创建计算列或度量值:

CalculatedResult = 
VAR CurrentPID = [Parent_ID]
VAR CurrentDate = [Date]
// 按ParentID映射对应的DAX计算逻辑
RETURN
SWITCH(
    CurrentPID,
    1, CALCULATE(SUM(Table_2[X]) + SUM(Table_2[Y]), Table_2[Date] = CurrentDate),
    2, CALCULATE(SUM(Table_3[A]) * SUM(Table_3[B]), Table_3[Date] = CurrentDate),
    // 继续添加其他ParentID对应的公式逻辑
    BLANK()
)

缺点:需手动维护映射关系,无法自动读取Table_1的Formula字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:28:13