如需在 Dataform 中使用软件包,您需要将其安装到您的代码库中。
您可以在 Dataform 中安装以下类型的软件包:
- 发布了公共 NPM 软件包。
- 未发布的公共 NPM 软件包。
- 经过身份验证的专用 NPM 软件包。
然后,如需在 JavaScript 或 SQLX 文件中使用软件包,您需要将软件包的选定内容导入文件。您也可以将整个软件包导入 JavaScript 或 SQLX 文件,而不是其选定内容。
须知事项
在 Google Cloud 控制台中,转到 Dataform 页面。
选择或创建代码库。
选择或创建开发工作区。
[可选] 如需安装专用软件包,请对专用软件包进行身份验证。
所需的角色
如需获取导入软件包所需的权限,请让管理员授予您工作区上的 Dataform Editor (roles/dataform.editor
) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限。
在 Dataform 代码库中安装软件包
如需在 Dataform 代码库中安装软件包,您需要将其作为依赖项添加到 package.json
文件中。package.json
文件中依赖项定义的格式取决于软件包的类型。
如需在 Dataform 代码库中安装软件包,请按以下步骤操作:
- 在工作区的文件窗格中,选择
package.json
。 将软件包添加到
dependencies
代码块:按以下格式添加已发布的公共 NPM 软件包:
"PACKAGE-NAME": "PACKAGE-VERSION"
请替换以下内容:
- 将 PACKAGE-NAME 替换为软件包的名称。
- 将 PACKAGE-VERSION 替换为已发布的公共 NPM 软件包的最新版本。
按以下格式添加未发布的公共 NPM 软件包:
"PACKAGE-NAME": "PACKAGE-URL"
请替换以下内容:
- 将 PACKAGE-NAME 替换为软件包的名称。
- 将 PACKAGE-URL 替换为第三方软件包代码库的
tar.gz
网址,例如https://github.com/user/sample-package-repository/archive/master.tar.gz
。
添加经过身份验证的专用 NPM 软件包,格式如下:
"REGISTRY-SCOPE/PACKAGE-NAME": "PACKAGE-URL"
请替换以下内容:
- 将 REGISTRY-SCOPE 替换为软件包的名称。REGISTRY-SCOPE 必须与在您的代码库的
.nmprc
文件中定义的注册表范围匹配。 - 将 PACKAGE-NAME 替换为软件包的名称。
- 将 PACKAGE-URL 替换为软件包代码库的
tar.gz
网址,例如https://github.com/user/sample-package-repository/archive/master.tar.gz
。
- 将 REGISTRY-SCOPE 替换为软件包的名称。REGISTRY-SCOPE 必须与在您的代码库的
点击安装软件包。
以下代码示例展示了添加到 .package.json
文件中的公开开源慢速维度包软件包:
```
{
"name": "repository-name",
"dependencies": {
"@dataform/core": "2.0.3",
"dataform-scd": "https://github.com/dataform-co/dataform-scd/archive/0.3.tar.gz"
}
}
```
将软件包函数或常量导入 Dataform 中的 JavaScript 文件
如需在 Dataform 中使用 JavaScript 文件中的软件包内的函数或常量,您需要先将其导入该文件。
若要将软件包中的函数或常量导入 JavaScript 文件,请按以下步骤操作:
- 在工作区的文件窗格中,选择要在其中使用软件包的
.js
文件。 在此文件中,请按以下格式导入函数或常量:
const { EXPORT-NAME } = require("PACKAGE-NAME");
- 将 EXPORT-NAME 替换为您要使用的函数或常量的名称,在软件包
index.js
文件的module.exports
中声明。 - 将 PACKAGE-NAME 替换为您要使用的软件包的名称。
- 将 EXPORT-NAME 替换为您要使用的函数或常量的名称,在软件包
以下代码示例展示了在 JavaScript 文件中导入和使用的 postoffice
软件包中的 getDomain
函数:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
const { getDomain } = require("postoffice");
getDomain();
在 Dataform 中将整个软件包导入 JavaScript 文件
如需将整个软件包导入 JavaScript 文件,而不是将选定的函数或常量导入 JavaScript 文件,请按以下步骤操作:
- 在工作区的文件窗格中,选择要在其中使用软件包的
.js
文件。 在此文件中,按照以下格式导入该软件包:
const CONSTANT-NAME = require("PACKAGE-NAME");
- 将 CONSTANT-NAME 替换为该常量的名称。
- 将 PACKAGE-NAME 替换为您要使用的软件包的名称。
以下代码示例展示了 JavaScript 文件中使用的导入的 postoffice
软件包中的 getDomain
函数:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
const postoffice = require("postoffice");
postoffice.getDomain();
将软件包函数或常量导入 Dataform 中的 SQLX 文件
如需在 SQLX 文件中使用软件包中的函数或常量,您需要先将其导入该文件。
如需将软件包中的函数或常量导入 SQLX 文件,请按以下步骤操作:
- 在工作区的文件窗格中,选择要在其中使用软件包的
.sqlx
文件。 在此文件中,输入以下
js
代码块:js { const { EXPORT-NAME } = require("PACKAGE-NAME"); }
- 将 EXPORT-NAME 替换为您要使用的函数或常量的名称,在软件包
index.js
文件的module.exports
中声明。 - 将 PACKAGE-NAME 替换为您要使用的软件包的名称。
- 将 EXPORT-NAME 替换为您要使用的函数或常量的名称,在软件包
以下代码示例展示了 postoffice
软件包中的 getDomain
函数,后者导入 js
块中,然后在 SQLX 文件的 SELECT
语句中使用:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
config {
type: "table",
}
js {
const { getDomain } = require("postoffice");
}
SELECT ${getDomain("email")} as test
将整个软件包导入 Dataform 中的 SQLX 文件
如需将整个软件包导入 SQLX 文件,而不是将选定的函数或常量导入 JavaScript 文件,请按以下步骤操作:
- 在工作区的文件窗格中,选择要在其中使用软件包的
.sqlx
文件。 在此文件中,按照以下格式导入该软件包:
js { const CONSTANT-NAME = require("PACKAGE-NAME"); }
- 将 CONSTANT-NAME 替换为该常量的名称。
- 将 PACKAGE-NAME 替换为您要使用的软件包的名称。
以下代码示例展示了在 js
代码块中导入的 postoffice
软件包及其在 SQLX 文件的 SELECT
语句中使用的 getDomain
函数:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
config {
type: "table",
}
js {
const postoffice = require("postoffice");
}
SELECT ${postoffice.getDomain("email")} as test
后续步骤
- 如需了解如何在 Dataform 中对专用 NPM 软件包进行身份验证,请参阅对 Dataform 中的专用软件包进行身份验证。
- 如需详细了解 Dataform 中的软件包,请参阅通过软件包在多个代码库中重复使用代码。
- 如需了解如何在 Dataform 中创建自己的软件包,请参阅在 Dataform 中创建软件包。
- 如需了解如何在 Dataform 中使用开源软件包,请参阅在 Dataform 中使用缓慢变化的维度。