用途:将已有的 Power BI 语义模型迁移到 Keboola 语义层(Semantic Layer),属于已有的“棕地”迁移路径,与用于从零构建的 sl-toolkit 互补。
主要能力:读取 Power BI 产物后结构映射为 Keboola SL 载荷并写出 JSON 文件。支持两种输入:TMDL 文件夹,或每张表的 *_semantic_layer.json。输出包含 semantic-model.json、semantic-dataset/、semantic-metric/、semantic-relationship/ 以及记录 DAX 未翻译、类型未映射等问题的 WARNINGS.md。
使用方式:第 0 步确认输入路径并自动检测格式;第 1 步询问业务问题(bucket 前缀、模型名与显示名、Snowflake 或 BigQuery 方言,默认 Snowflake);第 2 步运行 python3 scripts/migrate.py 并传入上述参数与 --output ./out/;第 3 步与用户一起审阅 WARNINGS.md,决定原样保留 DAX(默认)、仅自动翻译 SUM、COUNT、DISTINCTCOUNT、AVERAGE 等简单情形,还是人工逐行重写;第 4 步用 jsonschema 对照 Keboola SL 模式校验,需设置 SCHEMAS_DIR;第 5 步在用户确认后推送,优先交给 sl-toolkit 的推送流程,否则通过 metastore REST API 直接推送。
映射要点:表名映射到 semantic-dataset.name 与 tableId;列名与描述映射到字段;PK 提示映射到 primaryKey;DAX 度量原样保留在 semantic-metric.sql;关系映射到 semantic-relationship。类型映射 string→string、int64/integer→integer、double/decimal/currency→decimal、dateTime/date→datetime/date、boolean→boolean,未知类型回退为 string 并记录。
限制:按表 JSON 会丢失 Power Query M 步骤,如需完整保真应先用 Microsoft Power BI Modeling MCP 的 --readonly 生成 TMDL。DAX 不等于 SQL,CALCULATE、RELATED、时间智能与变量无法简单翻译。表名可能含空格与非 ASCII 字符,文件名需 slugify。PK 检测为尽力而为,找不到时留空并记录警告。manyToMany 关系会产生警告。收费、价格、平台或更多使用步骤资料暂未提供。