如需创建可在多个 Dataform 代码库中重复使用的软件包,您需要创建一个专用于该软件包的 Dataform 代码库,并将其连接到第三方 Git 代码库,使其可供其他 Dataform 代码库使用。
然后,您需要创建一个顶级 index.js
文件,并将可导出的软件包内容(如函数和常量)添加到该文件中。如需查看在 Dataform 中创建的软件包示例,请参阅 GitHub 上的 dataform-package-base
。
创建软件包后,您可以将该软件包安装到不同的 Dataform 代码库中,并在软件包上使用可导出的内容(例如常量和函数)来开发 SQL 工作流。
除了创建软件包之外,您还可以在包含 include 的单个 Dataform 代码库中重复使用 JavaScript 函数和常量。如需了解详情,请参阅在 Dataform 中通过 include 重复使用变量和函数。
准备工作
在 Google Cloud 控制台中,转到 Dataform 页面。
为您的软件包创建 Dataform 代码库。使代码库名称与您的软件包的名称保持一致。
将代码库关联到将托管您的软件包的第三方 Git 代码库。
在 Dataform 代码库中创建并初始化工作区。
所需的角色
如需获取创建软件包所需的权限,请让管理员向您授予代码库的 Dataform Admin (roles/dataform.admin
) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限。
在 Dataform 中创建软件包
如需使用可在 Dataform 中重复使用的 JavaScript 代码创建自己的软件包,请在工作区中执行以下步骤:
在 Files 窗格中,点击
More 菜单。点击创建文件。
在创建新文件窗格中,执行以下操作:
在添加文件路径字段中,输入
index.js
。点击创建文件。
在
index.js
文件中,输入您希望软件包导出的 JavaScript 代码。按以下格式创建常量:
const CONSTANT_NAME = CONSTANT_VALUE; module.exports = { CONSTANT_NAME };
替换以下内容:
CONSTANT_NAME
:常量的名称CONSTANT_VALUE
:常量的值
请按以下格式创建函数:
function FUNCTION_NAME(PARAMETERS) { FUNCTION_BODY } module.exports = { FUNCTION_NAME }
替换以下内容:
FUNCTION_NAME
:函数的名称PARAMETERS
:函数的参数FUNCTION_BODY
:您希望函数执行的代码
可选:点击格式。
可选:在
definitions
目录中,添加不会被导出的软件包的代码。
以下软件包代码示例展示了导出 getDomain
函数的 postoffice
软件包的 index.js
文件:
// filename index.js
// package name postoffice
const GENERIC_DOMAINS = "('samplemail.com','samplemail.co.uk','examplemailbox.com'";
function getDomain(email) {
let cleanEmail = `trim(${email})`
const domain = `substr(${cleanEmail}, strpos(${cleanEmail}, '@') + 1)`;
return `case
when ${domain} in ${common.GENERIC_DOMAINS} then ${cleanEmail}
when ${domain} = "othermailbox.com" then "other.com"
when ${domain} = "mailbox.com" then "mailbox.global"
when ${domain} = "support.postman.com" then "postman.com"
else ${domain}
end`;
}
module.exports = { getDomain }
后续步骤
- 如需了解如何在代码库中安装软件包并将其内容导入 JavaScript 或 SQLX 文件中,请参阅将软件包安装到 Dataform。
- 如需详细了解 Dataform 中的软件包,请参阅借助软件包在多个代码库中重复使用代码。
- 如需了解如何编写可在 Dataform 中重复使用的 JavaScript 变量和函数,请参阅在 Dataform 中通过 include 重复使用变量和函数。