Google BigQuery 的 PubSub 未写入 JSON
Google PubSub to BigQuery not writing JSON
嗨,
我正在尝试使用标准 PubSub to BigQuery
模板将数据从 Pub/Sub 发送到 BigQuery。我已经向主题发布了一些消息,但如果我有一个嵌套的 JSON,它会失败,即转到错误 table,并出现以下错误:
{"errors":[{"debugInfo":"","location":"event_data_decrypted","message":"This field: event_data_decrypted is not a record.","reason":"invalid"}],"index":0}
我发给Pub/Sub的例子JSON是这样的:
{
"event_id": "958dc0a1-40e0-458f-9ea0-3c231ca0c986",
"event_name": "labeled",
"event_time": "2022-03-22T14:19:48.514Z",
"prescription_id": "332634da-85a9-4ffe-b856-a3b05f25d9d9",
"event_data_decrypted": {
"PrescriptionDate": "2022-03-23T00:00:00",
"OrganisationId": 1,
"PrescriptionSourceType": 10,
"EpsTokenId": "6bc5688a-c085-49f1-93bc-e080ed979544",
"TokenId": "6bc5688a-c085-49f1-93bc-e080ed979544"
}
}
但是,如果我不发送嵌套的 JSON,如下所示,它工作正常,我在有效的 BigQuery table:
中看到数据
{
"event_id": "958dc0a7-40e0-454f-9ea0-3c231ca0c986",
"event_name": "labelled",
"event_time": "2022-02-22T14:19:48.514Z",
"prescription_id": "332637da-85a9-4ffe-b856-a3b05f25d9d9",
"event_data_decrypted": "Eeeesh!"
}
目标 table 存在并具有以下架构:
除了必须单独编写 function/program 或编辑模板的 JS UDF 之外,还有更简单的方法来解决这个问题吗? BigQuery 不允许我创建 JSON 数据类型列。我认为这可能有所帮助。这应该是简单易行的吧?
在此先感谢大家。
您的列是字符串类型,需要一个字符串。在您的情况下,它是 JSON,而不是字符串,这就是它失败的原因。
如您在 the documentation 中所见,您可以使用 UDF 自定义 PubSUb 消息处理。它并不完美,但它是解决您问题的好方法。
JSON 数据类型非常新,我认为数据流模板尚不支持它。
嗨,
我正在尝试使用标准 PubSub to BigQuery
模板将数据从 Pub/Sub 发送到 BigQuery。我已经向主题发布了一些消息,但如果我有一个嵌套的 JSON,它会失败,即转到错误 table,并出现以下错误:
{"errors":[{"debugInfo":"","location":"event_data_decrypted","message":"This field: event_data_decrypted is not a record.","reason":"invalid"}],"index":0}
我发给Pub/Sub的例子JSON是这样的:
{
"event_id": "958dc0a1-40e0-458f-9ea0-3c231ca0c986",
"event_name": "labeled",
"event_time": "2022-03-22T14:19:48.514Z",
"prescription_id": "332634da-85a9-4ffe-b856-a3b05f25d9d9",
"event_data_decrypted": {
"PrescriptionDate": "2022-03-23T00:00:00",
"OrganisationId": 1,
"PrescriptionSourceType": 10,
"EpsTokenId": "6bc5688a-c085-49f1-93bc-e080ed979544",
"TokenId": "6bc5688a-c085-49f1-93bc-e080ed979544"
}
}
但是,如果我不发送嵌套的 JSON,如下所示,它工作正常,我在有效的 BigQuery table:
中看到数据{
"event_id": "958dc0a7-40e0-454f-9ea0-3c231ca0c986",
"event_name": "labelled",
"event_time": "2022-02-22T14:19:48.514Z",
"prescription_id": "332637da-85a9-4ffe-b856-a3b05f25d9d9",
"event_data_decrypted": "Eeeesh!"
}
目标 table 存在并具有以下架构:
除了必须单独编写 function/program 或编辑模板的 JS UDF 之外,还有更简单的方法来解决这个问题吗? BigQuery 不允许我创建 JSON 数据类型列。我认为这可能有所帮助。这应该是简单易行的吧?
在此先感谢大家。
您的列是字符串类型,需要一个字符串。在您的情况下,它是 JSON,而不是字符串,这就是它失败的原因。
如您在 the documentation 中所见,您可以使用 UDF 自定义 PubSUb 消息处理。它并不完美,但它是解决您问题的好方法。
JSON 数据类型非常新,我认为数据流模板尚不支持它。