尝试读取BigQuery表中的JSON结构时出现错误

南大

以下是我尝试读取的JSON和供您细读的CODE:

当它没有任何值时,我在阅读“ fieldorders”部分时遇到问题。如果它没有任何结构,我仍然需要向他们显示空白值。我能够读取多个具有多个部分的其他对象,而没有任何问题。当我们有一个没有任何值的对象时,我遇到了问题,我只需要放置空值,以防万一我在该对象中找不到任何值。

Getting the below Error:

**Failed to coerce output value false to type ARRAY**

我用来读取数据的示例JSON文件:

{
  "projectnumber": "X.6001877",
  "operationnumber": "O.6001877.01",
  "opactivitynumber": "B.6001877.01.01",
  "jobtypes": null,
  "jobtypesinfo": [
    {
      "jobtype": "CC-SERV",
      "jobgroup": "CPS-CC",
      "staticattributes": [
        {
          "name": "OAJTOPT",
          "description": "OA Job Type OPT",
          "type": "Double",
          "value": 0.0,
          "uom": null
        }
      ]
    }
  ],
  "actualactivitystartdate": "2018-01-17T05:00:00",
  "actualactivityenddate": "2018-01-29T05:00:00",
  "serverdatetime": null,
  "ServerDateTime": "2019-01-20T16:36:48.106",
  "projectSettings": null,
  "customerContacts": null,
  "actualequipments": null,
  "welldetails": [
    {
      "Number": "1-1IH",
      "Name": "XXXX 58-4X",
      "State": "PL",
      "Country": "Col",
      "Field": "LABCD",
      "Uwi": null,
      "Environment": "Land",
      "WellId": "0065",
      "Latitude": 3.8,
      "Longitude": -72.2,
      "Type": null,
      "WaterDepth": null,
      "WellPlaceholderId": null,
      "IsNonMasteredWell": false
    }
  ],
  "lastopeventid": null,
  "personnelassignmentinfo": null,
  "status": null,
  "accountingunit": null,
  "erpsystem": "ITT",
  "CreatedDate": "2020-01-20T16:36:48.106",
  "CreatedBy": "ABCD11",
  "LastModifiedDate": "2020-01-20T16:36:48.106",
  "LastModifiedBy": "ABCD11",
  "Id": "A.6001877.01.01",
  "country": {
    "Code": "CO",
    "Name": "CoOOOOOO"
  },
  "attributes": {
    "Attributes": [
      {
        "AttributeName": "OAOPDXAS",
        "AttributeDescription": "Activity OPD",
        "DataType": "Integer",
        "UOMType": "Dimensionless",
        "BaseUnit": "",
        "IsCalculated": true,
        "Values": null
      },
      {
        "AttributeName": "OpActOPTime",
        "AttributeDescription": "OA Operating Time - OPT (HRS)",
        "DataType": "Float",
        "UOMType": "Dimensionless",
        "BaseUnit": "",
        "IsCalculated": true,
        "Values": null
      }
    ],
    "DailyAttributes": null,
    "MultiAttributes": null,
    "Id": "A.6001877.01.01"
  },
  "operationalevent": [
    {
      "operatingevent": {
        "projectnumber": "C.6001877",
        "operationnumber": "O.6001877.01",
        "operationactivitynumber": "X.6001877.01.01",
        "operationaleventdetails": {
          "status": null,
          "description": "Non-Operational Event",
          "plannedeventid": null,
          "jobgroup": null,
          "jobtype": null,
          "startdatetime": "2020-01-18T05:00:00",
          "enddatetime": "2020-01-15T05:00:00",
          "comments": "Non-Operational Event",
          "eventtype": "Project",
          "isdeleted": false,
          "category": "NonOperational",
          "islocked": false,
          "lockedon": "0001-01-01T05:00:00",
          "lockedby": null,
          "audittrailinfo": {
            "CreatedDate": "2020-01-20T15:36:17.816",
            "CreatedBy": "ABCD11",
            "LastModifiedDate": "2020-01-20T15:36:17.816",
            "LastModifiedBy": "ABCD1111",
            "Id": null
          },
          "personnel": {
            "assignment": [

            ]
          },
          "serverdatetime": "2018-01-20T16:36:56.185",
          "equipmentdata": {
            "equipmentassignments": [

            ]
          },
          "eventtypeattributes": null,
          "id": "E97A5DBC",
          "oesummary": null,
          "journal": null,
          "well": null,
          "isactive": true,
          "externaltransactionhistoryinfo": [
            {
              "status": "Pending",
              "message": null,
              "type": "MPT",
              "riteservicereporturl": null,
              "CreatedDate": "0001-01-01T00:00:00",
              "CreatedBy": null,
              "LastModifiedDate": "0001-01-01T00:00:00",
              "LastModifiedBy": null,
              "Id": null
            }
          ],
          "pnmconsumptiondata": {
            "pnmconsumptions": [

            ]
          }
        },
        "CreatedDate": "2018-01-20T16:36:56.185",
        "CreatedBy": "ABCD11",
        "LastModifiedDate": "2020-01-20T16:36:56.185",
        "LastModifiedBy": "ABCD11",
        "Id": "A.6001877.01.01_OperationalEvent_E97A5DBC"
      },
      "attributes": null
    }
  ],
  "attendance": [

  ],
  **"fieldorders": [

  ]**
}

BigQuery SQL代码:

    CREATE TEMPORARY FUNCTION CUSTOM_JSON_EXTRACT(json STRING, json_path STRING)
    RETURNS ARRAY<STRING>
    LANGUAGE js AS """
            return jsonPath(JSON.parse(json), json_path);
    """
    OPTIONS (
        library="gs://json_temp/jsonpath-0.8.0.js"
    );

    SELECT job_id,oe_descr,
    attr_name,
    well_name,
    job_type,
    --field_id

    from lz.json_actuals,
    UNNEST(CUSTOM_JSON_EXTRACT(conv_column, '$.operationalevent[*].operatingevent.operationaleventdetails.description')) oe_descr  with offset oedescr,
    UNNEST(CUSTOM_JSON_EXTRACT(conv_column, '$.attributes.Attributes[*].AttributeName')) attr_name with offset attrb,
    UNNEST(CUSTOM_JSON_EXTRACT(conv_column, '$.welldetails[*].Name')) Well_name with offset wll,
    UNNEST(CUSTOM_JSON_EXTRACT(conv_column, '$.jobtypesinfo[*].jobtype')) job_type with offset jt,
    --UNNEST(CUSTOM_JSON_EXTRACT(conv_column, '$.fieldorders[*].id')) field_id WITH OFFSET fld

  ;
米哈伊尔·伯利安(Mikhail Berlyant)

以下是BigQuery标准SQL,应该解决空对象问题

#standardSQL
CREATE TEMPORARY FUNCTION CUSTOM_JSON_EXTRACT(json STRING, json_path STRING)
RETURNS ARRAY<string>
LANGUAGE js AS """
  var result = jsonPath(JSON.parse(json), json_path);
  if(result){return result;} 
  else {return [];}
"""
OPTIONS (
    library="gs://json_temp/jsonpath-0.8.0.js"
);
SELECT --job_id,
  oe_descr,
  attr_name,
  well_name,
  job_type,
  field_id
from `lz.json_actuals`,
UNNEST(CUSTOM_JSON_EXTRACT(conv_column, '$.operationalevent[*].operatingevent.operationaleventdetails.description')) oe_descr  with offset oedescr,
UNNEST(CUSTOM_JSON_EXTRACT(conv_column, '$.attributes.Attributes[*].AttributeName')) attr_name with offset attrb,
UNNEST(CUSTOM_JSON_EXTRACT(conv_column, '$.welldetails[*].Name')) Well_name with offset wll,
UNNEST(CUSTOM_JSON_EXTRACT(conv_column, '$.jobtypesinfo[*].jobtype')) job_type with offset jt
LEFT JOIN UNNEST(CUSTOM_JSON_EXTRACT(conv_column, '$.fieldorders[*].id')) field_id WITH OFFSET fld   

如果要应用于问题中的样本数据-结果是

Row oe_descr                    attr_name   well_name   job_type    field_id     
1   Non-Operational Event       OAOPDXAS    XXXX 58-4X  CC-SERV     null     
2   Non-Operational Event       OpActOPTime XXXX 58-4X  CC-SERV     null      

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

CSV尝试读取时为空

尝试读取加密的私钥时出现“块中没有DEK-Info标头”

Xamarin-尝试读取JSon时出错

并行读取AutoCad数据库时出现“尝试读取或写入受保护的内存”错误

尝试读取XML的节点值时出现XML分析错误

为什么在尝试读取不存在的s3键时出现不同的错误

错误:尝试读取结果集时遇到致命错误

Exchange Web服务–尝试读取邮件属性时出现“您必须先加载或分配此属性,然后才能读取其值”错误消息

尝试读取docx文件时出现UnicodeDecodeError

我在尝试读取本地JSON文件的python文件中收到MissingSchema错误

尝试打印结构时出现分段错误

尝试读取使用Python数组模块创建的数据文件时出现问题

尝试让熊猫读取我的json文件时出现错误

为什么在尝试读取.DOCX文件时出现异常?

尝试读取Excel文件时出现非法状态异常

尝试读取Rapid XML中的节点会导致错误

Android棒棒糖错误:尝试读取手机contcats时出现空指针异常

尝试读取int时出现InputMismatchException

尝试读取枚举状态时出现C ++枚举错误

尝试读取时找不到文件

尝试读取布尔输入时出现Scanner InputMismatchException错误

尝试读取pcr值时发生TPM错误(7)

尝试读取 json 资产时出现 FileNotFoundException

尝试读取 txt 文件时出现 TIC SSL 信任错误

尝试读取文件时出现奇怪的 NoSuchFileException

代码在读取 JSON 时返回错误,并且 BigQuery SQL 的 JSON 结构中不存在引用的部分

尝试读取 Office Outlook 模板的内容时出现互操作异常

IllegalArgumentException:尝试读取数据块中的 json 时,路径必须是绝对的

调用类时尝试读取属性