google-cloud-platform - 如何自动运行 Google Dataprep 作业?
问题描述
有没有办法通过 API 触发 Google Dataprep 流?
我每天需要运行 30 种不同的流程。源数据集每天都在变化,结果必须附加到 Google BigQuery 表中。有没有办法自动化这个过程?源文件是 .xls 文件。我可以将它们上传到云存储并编写一个云函数,将其上传到 Dataprep 需要的任何地方。问题是在 Dataprep 流中替换源数据集似乎是不可能的。如果是这样,那么计划运行和新的 Job Run API 有什么意义?
解决方案
有几种方法可以做到这一点。您最终可能会结合参数化和调度功能来运行每次都会选择新文件的调度作业。
根据您的用例,您可以执行以下操作:
导入目录
如果您设置的目录只包含一个 excel 文件(见下图),您可以使用+按钮将该目录用作输入数据集。每次运行作业时,都会处理该目录中存在的文件。
您现在可以安排作业,创建输出目标,一切就绪。
使用日期时间参数
假设您每天都添加一个新文件,文件名中包含日期。例如在云存储中,它看起来像这样:
您可以使用 Dataprep 文件浏览器中的参数化按钮并设置以下参数:
这应该选择前一天的文件:
您可以让他们导入数据集并安排流程。如果您的日程安排每天运行,它每次都会选择新文件。
使用变量
或者,您可以在数据集的文件路径中定义一个变量。
然后,您可以使用 JobGroup API 覆盖该变量。
POST /v4/jobGroups
{
"wrangledDataset": {
"id": datasetId
},
"runParameters": {
"overrides": {
"data": [
{
"key": "folder-name",
"value": "new folder name"
}
]
}
}
}
请注意,要使其正常工作,您的文件需要具有相同的结构。有关更多详细信息,请参阅https://cloud.google.com/dataprep/docs/html/Create-Dataset-with-Parameters_118228628#structuring-your-data。
也应该可以使用通配符参数作为第一种方法的替代方法。
推荐阅读
- apache-kafka - kafka 流实例上的状态存储和分区的混合
- python - 如何绘制 np.array 的散点图?
- javascript - Javascript 将文本或 json 文件加载到数组中 - 用于表单验证
- c - 如何在对话框的右侧排列一组按钮?
- python - 交换 Pandas DataFrame 的基础数据
- mysql - SQL:根据列值连接 2 个表并选择分组列值为最大值的行值
- javascript - Google 电子表格脚本 - 如何将范围从一张纸复制到另一张纸,但不覆盖非空目标单元格
- python - 按顺序收集来自不同进程的数组
- javascript - 我想要选中复选框的同一行的数据。我的表格行在 for 循环中
- azure - Azure 密钥库还原