【问题标题】:Dealing With Incoming Null Values In Cloud Data Fusion When Building Data Pipeline在构建数据管道时处理云数据融合中的传入空值
【发布时间】:2021-08-17 19:02:54
【问题描述】:

我已经开始尝试将谷歌云数据融合作为一个潜在的 ETL 工具,我最终可以决定使用它。在构建数据管道以从 REST API 源获取数据并将其加载到 MySQL 数据库时,我面临这个错误 预期为字符串,但在第 1 行第 221 列为 NULL。请查看系统日志以获取更多详细信息。 是的,我看到的 JSON 响应中有一个字段为空

"systemanswertime": null

由于云数据融合工作室 string 中的可用下拉菜单不起作用,我该如何处理空值,它们是我可以使用的其他可选数据类型吗? 下面是两个屏幕截图,显示了我当前的数据管道结构 geneneral view

view showing mapping and the output schema

谢谢!!

【问题讨论】:

    标签: google-cloud-platform etl google-cloud-data-fusion


    【解决方案1】:

    您可能会收到此错误,因为您在 JSON 模式中定义了值属性。您应该允许 systemanswertime 参数为 NULL。

    您可以尝试如下解析 JSON 值:

        "systemanswertime": {
          "type": [
            "string",
            "null"
          ]
        }
    

    如果您无权访问 JSON 文件,您可以尝试使用 this 插件,以便通过动态替换 HTTP 服务器可以提供的配置来启用 HTTP 管理可空值.您将需要访问 HTTP 端点,以便构建一个可访问的 HTTP 端点,该端点可以提供类似于以下内容的内容:

    {
          "name" : "output.schema", "type" : "schema", "value" : 
          [
            { "name" : "id", "type" : "int", "nullable" : true},
            { "name" : "first_name", "type" : "string", "nullable" : true},
            { "name" : "last_name", "type" : "string", "nullable" : true},
            { "name" : "email", "type" : "string", "nullable" : true},
          ]
    },
    

    【讨论】:

    • 谢谢,@davidmesaplz 但我无法编辑 JSON,因为它来自 API。有没有办法通过下面的数据融合来拦截它是API响应的一部分,其中有systemanswertimer`“systemanswertime”:null,`
    • 嗨@oyugi.collins 我刚刚编辑了回复,给出了第二种解决方法,如果这对你有用,请告诉我。
    • 嗨 @davidmesalpz 非常感谢您的支持,但我一直坚持创建 HTTP 端点。目前我使用 HTTP 插件作为我的来源。我怎样才能创建一个 HTTP 端点,可以像你指出的那样提供内容?我已阅读有关参数设置器插件的信息,并且了解宏的用法,但我真的不知道如何传递内容(参数 [参数],[参数])。来自 link。使用的 URL 具有所需的内容。我是否必须创建这样的 API 端点才能读取?
    【解决方案2】:

    您需要做的是告诉 HTTP 插件您通过选中右侧输出前面的 null 复选框来预测 null。见下面的例子

    【讨论】:

    • 谢谢,@Kamaro Lambert,但这对某些人有效。其余的 null 它给出了一个错误 没有找到联合类型的匹配架构:["string","null"]
    【解决方案3】:

    如果您遇到错误,例如:没有为联合类型找到匹配的架构:["string","null"],您可以尝试以下解决方法。此错误的根本原因是来自 API 的响应中的条目没有它需要的所有字段。例如,一些条目可能有 callerId、channel、last_channel、last data 等......但其他条目可能没有 last_channel 或 JSON 中的任何其他字段。这会导致 HTTP 源中提供的架构不匹配,并且管道会立即失败。

    当节点遇到空值、逻辑错误或其他错误源时,您可以使用错误处理程序插件来捕获错误。方法如下:

    在 HTTP 源插件中,更改以下内容:

    • 输出架构以说明自定义字段。
    • JSON/XML 字段映射以计入自定义字段。 将非 HTTP 错误处理字段更改为发送到错误。这样,它通过错误收集器推送记录,然后管道继续处理后续记录。
    • 添加了错误收集器和接收器来捕获错误记录。 使用此方法,您将能够运行管道并检测到有问题的字段。

    亲切的问候, 曼努埃尔

    【讨论】:

      猜你喜欢
      • 2023-01-30
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      相关资源
      最近更新 更多