Dataform中includes文件夹子目录组织文档及SQLX导入方法问询
Dataform Includes子目录组织与导入方案
支持子目录组织文件
完全可以在includes/文件夹内创建任意层级的子目录,用来分类管理文档、函数或变量文件。你想要的includes/table_1/docs.js、includes/table_2/docs_2.js这种按表分组的结构完全可行,不会影响Dataform对文件的扫描和引用。
子目录文件的正确导入方法
方法1:Dataform内置引用(最简便)
Dataform会自动遍历includes/下所有文件(包括子目录),你可以直接通过子目录+文件名的层级结构来引用,无需额外导入语法。
比如针对includes/table_1/docs.js,在.sqlx的config块中直接使用:
config { type: "table", description: table_1.docs.description, columns: table_1.docs.columns }
这里的table_1.docs对应子目录table_1下的docs.js文件,Dataform会自动解析这个路径映射。
方法2:ES模块导入(需适配config块限制)
如果习惯用JS模块导入,要注意config块是静态解析上下文,不能直接使用导入的变量,需要先在.sqlx的代码块中导入,再通过self对象传递给config:
- 先在.sqlx顶部的JS代码块导入文件:
// CommonJS语法 const table1Docs = require("./includes/table_1/docs.js"); // 或ES模块语法(需项目配置支持) import * as table1Docs from "./includes/table_1/docs.js";
- 在config块中通过
self引用导入的变量:
config { type: "table", description: self.table1Docs.description, columns: self.table1Docs.columns }
注意事项
- 文件名和路径大小写敏感(Linux/macOS环境下),确保拼写完全匹配。
- 子目录中的.js文件需正确导出内容,比如
docs.js的写法:
// CommonJS导出 module.exports = { description: "Table 1的业务描述", columns: { user_id: "用户唯一标识", user_name: "用户昵称" } }; // 或ES模块导出 export default { description: "Table 1的业务描述", columns: { user_id: "用户唯一标识", user_name: "用户昵称" } };
内容的提问来源于stack exchange,提问作者Julio Montiel
相关产品推荐
相关产品推荐

