簡體   English   中英

谷歌發布/訂閱的 avro 架構中的可為空日期

[英]Nullable date in avro schema for google pub/sub

我使用 avro 作為 google pub/sub 的模式來直接寫入 BigQuery。

其中一個字段可以是 null,所以我這樣寫了我的 avro 模式:

{
  "type": "record",
  "name": "Avro",
  "fields": [
    {
      "name": "id",
      "type": "string"
    },
    {
      "name": "status",
      "type": "string"
    },
    {
      "name": "createDate",
      "type": "string"
    },
    {
      "name": "purchaseDate",
      "type": ["null", "string"]
    }
  ]
}

但是,對於適合此架構的輸入,它必須類似於以下內容之一:

{
  "id": "123",
  "status": "not-purchased",
  "createDate": "2023-01-17T04:49:16.966Z",
  "purchaseDate": null
}
{
  "id": "123",
  "status": "purchased",
  "createDate": "2023-01-17T04:49:16.966Z",
  "purchaseDate":  {
    "string": "2023-01-17T04:49:16.966Z"
  }
}

上面第二個示例中的輸入不是 BigQuery 訂閱所期望的格式。 我正在尋找看起來像這樣的東西:

{
  "id": "123",
  "status": "purchased",
  "createDate": "2023-01-17T04:49:16.966Z",
  "purchaseDate": "2023-01-17T04:49:16.966Z"
}

我對 avro 模式做錯了什么,或者它只是 avro 中可空字段的工作方式嗎?

可為空無關緊要。 它只是一個聯合類型。

根據 Avro JSON 編碼規范,聯合類型需要字符串鍵。

這是 Pub/Sub BigQuery 訂閱的一個已知問題。 您可以在問題跟蹤器中關注修復的進度。 修復后,使用string關鍵字的示例應該可以通過 Pub/Sub 訂閱插入到 BigQuery 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM