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

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:

  1. 先在.sqlx顶部的JS代码块导入文件:
// CommonJS语法
const table1Docs = require("./includes/table_1/docs.js");

// 或ES模块语法(需项目配置支持)
import * as table1Docs from "./includes/table_1/docs.js";
  1. 在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 16:43:24