google-cloud-platform - 使用 Dataflow 将 csv 数据从 Pub/Sub 订阅流式传输到 BigQuery
问题描述
使用 GCP 探索 ETL 过程。我在 Dataflow 中使用 Pub/Sub Subscription to BigQuery 模板。
Pub/Sub Subscription 中的消息数据为 csv 格式,如下所示
53466,06/30/2020,,特立尼达和多巴哥,2020-07-01 04:33:52,130.0,8.0,113.0
这会在加载到 BigQuery 表时出现错误。如何在模板中将 CSV 数据转换为 JSON?
解决方案
解决了 !!
在使用 pub/sub 订阅 Bigquery 模板创建作业时,单击查看选项参数。我们可以在其中设置 .js 文件路径和 UDF 函数名称。
这是用于转换的 JS 代码,即从 CSV 格式到 JSON 格式。
function transform(messages) {
var values = messages.split(',');
// Construct output and add transformations
var obj = new Object();
obj.SNo = values[0];
var dateObj = values[1];
// Date format in file is dd/mm/YYYY
// Transform the field to Date format required for BigQuery that is YYYY-mm-dd
obj.ObservationDate = dateObj.replace(/(\d\d)\/(\d\d)\/(\d{4})/, "$3-$1-$2");
obj.Provision_State = values[2];
obj.Country_Region = values[3];
obj.Last_Update = values[4];
obj.Confirmed = values[5];
obj.Deaths = values[6];
obj.Recovered = values[7];
// add object to JSON
var jsonString = JSON.stringify(obj);
return jsonString;
}
推荐阅读
- css - 代号一个样式表需要不断刷新库
- java - 当我点击运行按钮时,我的 JFrame 不会出现,尽管 NetBeans 说它正在运行
- android - react-native 获取当前位置
- kendo-ui - 在Angular 7的剑道网格ui中访问json响应
- laravel-5 - 试图获取非对象的属性“RmFName”
- oracle - Oracle 12c 可插拔数据库无法启动
- react-native - 未定义的对象(评估'_reactNavigation.ThemeColors.light')
- c# - 其他计算机上的 SQL Server Express 附件错误
- debugging - Emacs 中的错误:无效的搜索范围(点的错误方面)
- ruby - Ruby:获取静态方法列表