Dataform 核心 支持使用 SQLX 和 JavaScript 创建 SQL 工作流对象。 使用 JavaScript 和 SQLX 创建类似元素(虽然是可选的) 在工作流中反复执行。例如,借助 JavaScript,您可以创建 移除某些用户 ID 后,可以查看工作流中每个表格的 ID。 您还可以仅使用 JavaScript 开发 SQL 工作流对象。
如需开始使用 JavaScript 开发 Dataform SQL 工作流, 您必须熟悉 JavaScript 语法 和以下 JavaScript 概念:
- 变量
- 数组
- 条件语句
- For 循环
- 地图
- Functions
- 对象
- 导出和导入模块
将 JavaScript 代码添加到 SQLX 文件
您可以通过以下两种方式将 JavaScript 代码添加到 SQLX 文件: 或内嵌在 JavaScript 代码块内
您可以使用 JavaScript 代码块定义 SQLX 文件中的函数或常量。 您可以使用内嵌 JavaScript 动态修改 SQLX 或 SQL 查询。
以下代码示例展示了内置的 self
Dataform 核心
以内嵌方式添加到 SQLX 文件的 post_operations
代码块中的 JavaScript 函数:
config {type: "table"}
SELECT * FROM ...
post_operations {
GRANT `roles/bigquery.dataViewer`
ON
TABLE ${self()}
TO "group:allusers@example.com", "user:otheruser@example.com"
}
以下代码示例展示了在 JavaScript 块中定义的一个常量, 在 SQLX 文件中的查询内内嵌使用:
js {
const columnName = "foo";
}
SELECT 1 AS ${columnName} FROM "..."
通过 JavaScript 重复使用代码
您可以重复使用 JavaScript 代码来简化 Dataform 中的开发工作。 如需在单个 SQLX 文件中重复使用 JavaScript 常量和函数,请执行以下操作: 可以将它们封装在 JavaScript 代码块中。重复使用 JavaScript 代码 则可以创建包含内容 如需在多个 Dataform 代码库中重复使用 JavaScript 代码,请执行以下操作: 您可以创建或导入软件包
通过 JavaScript 封装,在单个 SQLX 文件中重复使用代码
创建可在 单个 SQLX 文件,可以将函数和常量封装到 JavaScript 代码块。您只能重复使用 JavaScript 代码块中定义的代码 。如需更多信息 请参阅 Dataform 核心概览。
以下代码示例展示了在 JavaScript 块并在 SQLX 文件中以内嵌方式使用:
js {
const foo = 1;
function bar(number){
return number+1;
}
}
select
${foo} as one,
${bar(foo)} as two
使用 include 功能在单个代码库中重复使用代码
包含元素是对代码库而言全局 JavaScript 常量或函数。
在 includes
中定义包含对象
目录然后,您可以在整个代码库中重复使用它们
都位于 JavaScript 和 SQLX 文件中
以下代码示例展示了 launch_date
常量的定义
在 includes/constants.js
文件中:
// filename is includes/constants.js
const launch_date = "11.11.2011";
module.exports = { launch_date };
以下代码示例显示了表中引用的 launch_date
常量
定义查询:
config {type: "table"}
SELECT * FROM source_table WHERE date > ${constants.launch_date}
使用软件包在多个代码库中重复使用代码
软件包是可导入和使用的 JavaScript 代码的集合 多个 Dataform 代码库,以简化 SQL 工作流开发。
您可以在以下位置创建自定义包: Dataform 或使用某个开源 Dataform 软件包, 可在 GitHub 开源 Dataform 页面。
如需查看在 Dataform 中使用开源软件包的示例,请参阅 在 Dataform 中使用缓慢变化维度。
为了能够在 Dataform 中使用软件包的内容,您需要 在 Dataform 代码库中安装软件包,然后将其导入到 要在其中使用软件包的单个 JavaScript 或 SQLX 文件。 如需了解详情,请参阅在 Dataform 中安装软件包。
为了能够在 Dataform 代码库中安装专用 NPM 软件包, 您需要对软件包进行身份验证。
使用 JavaScript 创建 SQL 工作流
作为在 SQLX 中开发 SQL 工作流的替代方法,或者将 SQLX 与
JavaScript,您可以在 .js
文件中创建 SQL 工作流对象,只需使用
JavaScript。您可以在一个 JavaScript 中创建多个 SQL 工作流对象
包含 Dataform 全局方法和任意 JavaScript ES5 代码的文件,
例如循环和常量。每个 Dataform 全局 JavaScript
方法包含可用于配置所创建对象的属性。
您可以创建以下 SQL 工作流对象 在 Dataform 中仅使用 JavaScript:
- 数据源声明
- Tables
- 手动断言
- 自定义 SQL 操作
如需详细了解如何仅使用 JavaScript 创建 SQL 工作流对象,请参阅 使用 JavaScript 创建 Dataform SQL 工作流。
后续步骤
- 如需了解如何通过 include 重复使用变量和函数,请参阅 通过 Dataform 中的 include 功能重复使用变量和函数。
- 如需了解如何创建软件包,请参阅 在 Dataform 中创建软件包。
- 如需了解如何安装软件包,请参阅 在 Dataform 中安装软件包。
- 如需了解如何对私有软件包进行身份验证,请参阅 对专用软件包进行身份验证。
- 如需了解如何在 Dataform 中使用开源软件包,请参阅 在 Dataform 中使用缓慢变化维度。
- 如需了解如何使用 JavaScript 创建 SQL 工作流,请参阅 使用 JavaScript 创建 Dataform SQL 工作流。