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

如何实现Power BI从文件夹仅加载新增.txt文件且不刷新已有数据

Power BI 实现文件夹批量加载TXT文件时仅导入新增文件并保留历史数据

核心思路

通过维护一份已加载文件日志表,每次刷新时对比文件夹内的文件列表与日志表,筛选出未加载过的新增文件,仅加载这些文件的数据,同时更新日志表记录,实现自动化增量加载,避免重复导入历史数据。


具体实现步骤

1. 创建已加载文件日志表

首先建立一个用于记录已加载文件信息的日志表,保存为本地CSV文件(也可使用Excel或云端存储):

  • 打开Power Query编辑器,新建空白查询,输入以下M代码:
    #table({"FileName", "LoadDateTime"}, {})
    
  • 将该查询保存为LoadedFilesLog.csv,存储到固定路径(比如C:\PowerBI_Logs\LoadedFilesLog.csv)。

2. 获取文件夹内所有TXT文件列表

加载目标文件夹,筛选出所有.txt格式的文件,获取文件名、完整路径、修改时间等关键信息:

let
    Source = Folder.Files("C:\Your_TXT_Folder_Path"),
    FilterTXTFiles = Table.SelectRows(Source, each Text.EndsWith([Name], ".txt"))
in
    FilterTXTFiles

3. 筛选未加载的新增文件

加载日志表,通过左反连接对比当前文件列表与已加载记录,得到仅新增的文件:

let
    // 加载已加载文件日志
    LoadedLogSource = Csv.Document(File.Contents("C:\PowerBI_Logs\LoadedFilesLog.csv"), [Delimiter=",", Encoding=1252]),
    PromoteLogHeaders = Table.PromoteHeaders(LoadedLogSource, [PromoteAllScalars=true]),
    SetLogColumnTypes = Table.TransformColumnTypes(PromoteLogHeaders, {{"FileName", type text}, {"LoadDateTime", type datetime}}),
    
    // 获取当前文件夹TXT文件
    CurrentTXTFiles = Folder.Files("C:\Your_TXT_Folder_Path"),
    FilterTXT = Table.SelectRows(CurrentTXTFiles, each Text.EndsWith([Name], ".txt")),
    
    // 左反连接筛选新增文件
    NewUnloadedFiles = Table.NestedJoin(FilterTXT, {"Name"}, SetLogColumnTypes, {"FileName"}, "LoadedLog", JoinKind.LeftAnti),
    CleanUpColumns = Table.RemoveColumns(NewUnloadedFiles, {"LoadedLog"})
in
    CleanUpColumns

4. 加载新增TXT文件的数据

对筛选出的新增文件,添加自定义列加载文件内容,再展开数据(根据你的TXT文件分隔符和列名调整参数):

// 接上面的步骤继续
LoadFileContent = Table.AddColumn(CleanUpColumns, "FileData", each Table.FromRows(Csv.Document(File.Contents([FullPath]), [Delimiter="\t", Encoding=1252]))),
ExpandFileData = Table.ExpandTableColumn(LoadFileContent, "FileData", {"Column1", "Column2", "Column3"}, {"ID", "Content", "CreateTime"}) // 替换为你的实际列名

5. 更新已加载文件日志

将本次加载的新增文件信息追加到日志表,覆盖原日志文件,确保下次刷新能识别这些已加载文件:

// 接上面的步骤继续
CreateNewLogEntries = Table.AddColumn(CleanUpColumns, "LoadDateTime", each DateTime.LocalNow()),
SelectLogColumns = Table.SelectColumns(CreateNewLogEntries, {"Name", "LoadDateTime"}),
RenameLogColumns = Table.RenameColumns(SelectLogColumns, {{"Name", "FileName"}}),
CombineLogData = Table.Combine({SetLogColumnTypes, RenameLogColumns}),
SaveUpdatedLog = File.Write("C:\PowerBI_Logs\LoadedFilesLog.csv", Table.ToCsv(CombineLogData, [Delimiter=",", Encoding=1252]))

6. 配置自动刷新

  • 在Power BI Desktop中测试整个流程无误后,发布报表到Power BI服务。
  • 在服务中配置计划刷新,指定刷新频率(比如每日、每周),同时确保日志文件的存储路径在服务中可访问(本地文件需配置数据网关,云端存储需授权访问)。

额外说明

  • 如果需要处理修改过的旧文件,可在日志表中添加FileModifiedTime字段,每次刷新时对比当前文件的修改时间与日志记录,决定是否重新加载该文件。
  • 日志文件建议备份,避免丢失导致重复加载所有文件。

内容的提问来源于stack exchange,提问作者Andrés Quesada Cascante

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 10:25:57