如何用Git高效存储Power BI数据集结构?表与度量关系存储方法
高效存储Power BI数据集结构并追踪变更的方案
一、替代手动复制的高效存储方式
1. 批量导出Power Query(M代码)到结构化文件
无需手动复制每个查询,通过工具实现批量导出:
- Tabular Editor:连接Power BI数据集后,可一键导出所有Power Query查询为单独的
.m文件,按查询类型(自定义函数、维度表、事实表)分类到对应文件夹,每个文件以查询名命名,Git能精准追踪单个查询的修改细节。 - PowerShell脚本:通过Power BI的API或COM对象遍历所有查询,自动导出M代码到指定目录,适合嵌入自动化构建流程。
示例目录结构:
PowerBI-Dataset/ ├── Queries/ │ ├── CustomFunctions/ │ │ ├── ExtractJsonFileContent.m │ │ └── ... │ ├── LookupTables/ │ │ ├── Countries.m │ │ └── ... │ └── FactTables/ │ ├── Sales.m │ └── ...
2. 用TMDL存储完整模型结构
微软推荐的**TMDL(Tabular Model Definition Language)**是专为版本控制设计的结构化格式,每个模型对象(表、列、度量、关系)对应单独的文本文件,可读性强且Git友好:
- 用Tabular Editor连接Power BI数据集后,直接导出为TMDL格式,自动生成如下结构:
相比旧版TMSL,TMDL更易读,优先选择该格式。PowerBI-Dataset/ ├── Model/ │ ├── Tables/ │ │ ├── SomeTable/ │ │ │ ├── Columns/ │ │ │ │ ├── Country.tmdl │ │ │ │ └── ... │ │ │ └── Measures/ │ │ │ ├── Fail Rate_Int.dax │ │ │ └── Success Rate.dax │ │ └── Countries/ │ │ ├── Columns/ │ │ │ ├── heapCountryId.tmdl │ │ │ └── ... │ └── Relationships/ │ ├── SomeTable_to_Countries.tmdl │ └── ...
3. 自动化DAX度量导出
用Tabular Editor直接按表分组导出度量,每个表的度量存到对应文件夹的.dax文件,避免手动从DAX Studio复制;导出时可自动添加所属表的注释,方便后续关联追踪。
二、表与度量的关系存储方案
1. 利用TMDL的结构化关联
TMDL格式天然解决关系追踪问题:
- 每个度量文件的代码开头明确标注所属表,比如
MEASURE 'Some Table'[Fail Rate_Int],Git能直接识别度量与表的归属关系。 - 关系对象以单独的
.tmdl文件存储,包含完整关联信息,示例:relationship SomeTable_to_Countries { fromTable = 'Some Table' fromColumn = CountryId toTable = Countries toColumn = heapCountryId cardinality = ManyToOne crossFilterDirection = Both }
2. 手动维护关系文档(适合非TMDL场景)
如果仍使用自定义文档格式,可采用两种方式:
- 在每个度量文件开头添加注释,标注所属表、依赖的其他度量/列:
-- 所属表:Some Table -- 依赖:[Total Failed Tickets_Int], [Total Created Tickets_Int] MEASURE 'Some Table'[Fail Rate_Int] = DIVIDE( [Total Failed Tickets_Int], [Total Created Tickets_Int] ) - 单独创建
Relationships.md,用表格整理所有表关系:源表 源字段 目标表 目标字段 基数 交叉筛选方向 Some Table CountryId Countries heapCountryId 多对一 双向
内容的提问来源于stack exchange,提问作者Dennis S.
相关产品推荐
相关产品推荐

