Dataform 中的 JavaScript 简介

本文档将帮助您了解如何使用 JavaScript 如何在 Dataform 中开发 SQL 工作流。

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 工作流

后续步骤