如需创建软件包以便在多个 Dataform 代码库中重复使用,您需要创建一个专用于该软件包的 Dataform 代码库,并将其连接到第三方 Git 代码库,以使其可供其他 Dataform 代码库使用。
然后,您需要创建一个顶级 index.js
文件,并将可导出的软件包内容(如函数和常量)添加到该文件中。如需查看在 Dataform 中创建的软件包示例,请参阅 GitHub 上的 dataform-package-base
。
创建软件包后,您可以将软件包安装到其他 Dataform 代码库中,并使用软件包上的可导出内容(例如常量和函数)来开发 SQL 工作流。
作为创建软件包的替代方案,您可以通过包含函数在单个 Dataform 代码库中重复使用 JavaScript 函数和常量。如需了解详情,请参阅在 Dataform 中重复使用包含变量的变量和函数。
准备工作
在 Google Cloud 控制台中,转到 Dataform 页面。
创建一个专门用于软件包的 Dataform 代码库。将代码库名称与软件包的名称匹配。
将代码库关联到将托管您的软件包的第三方 Git 代码库。
在 Dataform 代码库中创建并初始化工作区。
所需的角色
如需获取创建软件包所需的权限,请让管理员向您授予对代码库的 Dataform Admin (roles/dataform.admin
) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限。
在 Dataform 中创建软件包
如需使用 JavaScript 代码自行创建可在 Dataform 中重复使用的软件包,请在工作区中按以下步骤操作:
在 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 中重复使用包含变量的变量和函数。