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

如何修改Power BI中Y的M查询,仅导入X查询已加载的用户名?

修改Y的M脚本实现用户筛选

当然可以实现这个需求啦!你可以通过两种常见的方式修改Y的M脚本,只导入和X表重叠的用户名,自动排除像Paul这种不在X里的用户:

方式一:基于已加载的X表数据筛选(Power Query端处理)

这种方法直接利用已经导入Power BI的X表数据,在Power Query里对Y表做筛选,适合数据量不大的场景:

let
    Source = Sql.Database("serverX", "dbFoo"),
    dbo_Y = Source{[Schema="dbo",Item="Y"]}[Data],
    // 提取已加载的X表中的所有用户名
    ExistingUsers = dbo_X[User],
    // 筛选Y表中用户名存在于ExistingUsers列表的行
    FilteredY = Table.SelectRows(dbo_Y, each List.Contains(ExistingUsers, [User]))
in
    FilteredY

注意事项:

  • 确保X表(dbo_X)已经在当前Power BI数据集中成功加载,否则M脚本会找不到这个引用
  • 如果你的用户名存在大小写差异(比如X里是Phil,Y里是phil),可以用Text.Lower()统一大小写后再匹配,比如修改筛选条件为each List.Contains(List.Transform(ExistingUsers, Text.Lower), Text.Lower([User]))

方式二:在SQL数据源层面过滤(推荐大数据量场景)

如果你的数据量比较大,推荐直接在SQL服务器端完成过滤,这样能减少传输到Power BI的数据量,提升效率。可以用Value.NativeQuery执行自定义SQL查询:

let
    Source = Sql.Database("serverX", "dbFoo"),
    // 执行内连接查询,只返回Y和X重叠的用户
    FilteredY = Value.NativeQuery(Source, 
        "SELECT Y.[User] FROM Y INNER JOIN X ON Y.[User] = X.[User]",
        null,
        [EnableFolding=true]
    )
in
    FilteredY

优势:

  • 查询会折叠到SQL服务器执行,利用数据库的索引优化,性能更好
  • 不需要依赖Power BI中已加载的X表,逻辑更独立

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:03:05