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

如何在Power BI语义模型中通过DAX Query整合生成数据表?

将DAX查询结果无缝整合到Power BI语义模型

问题背景

我有一段DEFINE/EVALUATE结构的DAX查询,在Power BI Desktop和在线服务中运行都能得到预期的语义模型元数据结果。当前只能手动复制查询结果到数据表,希望找到无需手动操作的无缝整合方式,直接用该DAX查询的结果填充语义模型中的数据表。

我的DAX查询代码如下:

VAR _tables = 
    SELECTCOLUMNS(
        FILTER(
            INFO.TABLES(),
            // 排除隐藏表
            [IsHidden] = FALSE()
        ),
        "TableID",[ID],
        "TableName",[Name]
    )
VAR _columns = 
    FILTER(
        INFO.COLUMNS(),
        // 排除行号列
        [Type] <> 3
    ) 

VAR _result = 
    SELECTCOLUMNS(
        NATURALINNERJOIN( 
            _columns,
            _tables
        ),
        "Table",[TableName],
        "Column",[ExplicitName],
        "Description",[Description],
        "Column in Data Source",[SourceColumn],
        "Data Category", [DataCategory],
        "Column Type", 
            SWITCH(
                [Type],
                1,"数据列", 
                2, "计算列",
                [Type]
            ),
        "DAX公式", [Expression]
    )
EVALUATE
    _result

可行解决方案

方法1:通过Power Query调用DAX查询(推荐)

这种方法能直接将DAX查询结果作为数据源加载到模型,无需手动复制,支持刷新更新:

  1. 打开Power BI Desktop,进入数据加载界面,点击获取数据 > 空白查询
  2. 在Power Query编辑器中,点击高级编辑器,替换默认M代码为以下内容(本地模型可省略你的模型名称参数,在线服务需填写对应工作区模型名称):
let
    Source = AnalysisServices.Database("localhost:55555", "你的模型名称", [Query="DEFINE VAR _tables = SELECTCOLUMNS(FILTER(INFO.TABLES(),[IsHidden] = FALSE()),""TableID"",[ID],""TableName"",[Name]) VAR _columns = FILTER(INFO.COLUMNS(),[Type] <> 3) VAR _result = SELECTCOLUMNS(NATURALINNERJOIN(_columns,_tables),""Table"",[TableName],""Column"",[ExplicitName],""Description"",[Description],""Column in Data Source"",[SourceColumn],""Data Category"", [DataCategory],""Column Type"", SWITCH([Type],1,""数据列"", 2, ""计算列"",[Type]),""DAX公式"", [Expression]) EVALUATE _result"])
in
    Source
  1. 点击完成后,即可将DAX查询结果加载为模型中的数据表,后续可通过常规刷新操作更新数据。

方法2:转换为计算表(注意局限性)

由于INFO.TABLES()和INFO.COLUMNS()属于DAX查询函数,需变通后才能用于计算表(仅适用于Desktop,在线服务可能有权限限制):

  1. 在Power BI Desktop中,点击建模 > 新建表
  2. 将原DAX查询的DEFINE部分合并为计算表表达式(去掉DEFINE和EVALUATE,直接返回结果逻辑):
SELECTCOLUMNS(
    NATURALINNERJOIN( 
        FILTER(INFO.COLUMNS(),[Type] <> 3),
        SELECTCOLUMNS(FILTER(INFO.TABLES(),[IsHidden] = FALSE()),"TableID",[ID],"TableName",[Name])
    ),
    "Table",[TableName],
    "Column",[ExplicitName],
    "Description",[Description],
    "Column in Data Source",[SourceColumn],
    "Data Category", [DataCategory],
    "Column Type", 
        SWITCH(
            [Type],
            1,"数据列", 
            2, "计算列",
            [Type]
        ),
    "DAX公式", [Expression]
)
  1. 注意:该计算表会随模型结构变更自动更新,但Power BI Premium等环境可能限制INFO系列函数的使用权限。

方法3:自动化脚本(适用于定期更新)

如果需要定期自动更新数据表,可采用以下方式:

  • 使用DAX Studio执行目标DAX查询,将结果导出为CSV,再通过Power BI的CSV数据源加载并设置自动刷新
  • 利用Power Automate的Power BI连接器,调用DAX查询并将结果写入模型数据表(需配置Premium容量权限)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:12:43