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

如何让PowerBI自动拉取SQL数据库中新增的月度表?

自动导入按月生成的SQL表到PowerBI

方法一:用Power Query动态加载合并表

  • 拉取目标表名称列表
    打开PowerBI,选择「获取数据」→「SQL Server数据库」,输入服务器和数据库名称后切换到「高级选项」,执行以下SQL查询获取所有符合命名规则的表:

    SELECT TABLE_NAME 
    FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_SCHEMA = 'dbo' 
      AND TABLE_NAME LIKE 'sqlt_1_202%'
    

    执行后就能得到所有需要的月份表名称列表。

  • 动态加载单表数据
    进入Power Query编辑器,给当前表添加自定义列,粘贴以下M代码(记得替换成你的服务器和数据库名称):

    = Sql.Database("你的服务器地址", "你的数据库名称", [Query="SELECT * FROM dbo." & [TABLE_NAME]])
    

    这个自定义列会自动加载对应表的全部数据。

  • 合并所有表数据
    点击自定义列右侧的展开箭头,选择「仅加载数据」,所有符合规则的表就会合并成一张完整的表。之后每次刷新PowerBI,新生成的月份表都会自动被加载进来。

方法二:在SQL中创建视图(更省心)

如果你有SQL数据库的修改权限,直接在SQL里创建视图统一合并所有目标表,PowerBI只需连接这个视图即可:

CREATE VIEW dbo.vw_sqlt_1_all_data AS
SELECT * FROM dbo.sqlt_1_2020_01
UNION ALL
SELECT * FROM dbo.sqlt_1_2020_02
-- 后续新增月份表时,在视图里追加一行UNION ALL即可;想要完全自动的话,用下面的动态视图

若你的SQL Server是2016及以上版本,可以用动态SQL创建视图,自动包含所有符合规则的表:

CREATE OR ALTER VIEW dbo.vw_sqlt_1_all_data AS
WITH TableList AS (
    SELECT TABLE_NAME 
    FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_SCHEMA = 'dbo' 
      AND TABLE_NAME LIKE 'sqlt_1_202%'
)
SELECT * FROM TableList
CROSS APPLY (
    SELECT * FROM OPENROWSET(
        'SQLNCLI',
        'Server=' + @@SERVERNAME + ';Database=' + DB_NAME() + ';Trusted_Connection=yes;',
        'SELECT * FROM dbo.' + TABLE_NAME
    )
) AS Data;

注意:使用OPENROWSET需要开启Ad Hoc Distributed Queries,且需确保账号权限足够。之后PowerBI连接该视图,刷新时会自动同步新生成的表。

你之前的方法失效原因

你写的Source{[Schema="dbo",Item="sqlt_data_1_*"]}[Data]不生效,是因为Power Query的这种索引方式仅支持精确表名匹配,不支持通配符模糊匹配,必须通过动态获取表列表的方式实现自动加载。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 08:37:55