如需创建可在多个 Dataform 代码库中重复使用的软件包,您需要创建一个专门用于该软件包的 Dataform 代码库,并将其连接到第三方 Git 代码库,以便其他 Dataform 代码库可以使用该软件包。
然后,您需要创建一个顶级 index.js
文件,并将可导出的软件包内容(例如函数和常量)添加到该文件中。如需查看在 Dataform 中创建的软件包示例,请参阅 GitHub 上的 dataform-package-base
。
创建软件包后,您可以将软件包安装到其他 Dataform 代码库,并使用软件包中的可导出内容(例如常量和函数)来开发 SQL 工作流。
除了创建软件包之外,您还可以使用包含功能在单个 Dataform 代码库中重复使用 JavaScript 函数和常量。如需了解详情,请参阅使用包含文件在单个代码库中重复使用代码。
准备工作
在 Google Cloud 控制台中,进入 Dataform 页面。
为您的软件包创建一个 Dataform 仓库。将代码库名称与软件包名称进行匹配。
将代码库连接到将托管软件包的第三方 Git 代码库。
在 Dataform 代码库中创建并初始化工作区。
所需的角色
如需获得创建软件包所需的权限,请让您的管理员为您授予代码库的 Dataform Admin (roles/dataform.admin
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
在 Dataform 中创建软件包
如需使用 JavaScript 代码创建您自己的软件包,以便在 Dataform 中重复使用,请在工作区内按照以下步骤操作:
在文件窗格中,点击
更多菜单。点击创建文件。
在创建新文件窗格中,执行以下操作:
在添加文件路径字段中,输入
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 变量和函数,请参阅使用包含文件在单个代码库中重复使用代码。