簡體   English   中英

在 BigQuery 中讀取時,未定義行 XXXX、列 xx-xx 處的 JSON 輸入意外結束

[英]Unexpected end of JSON input at undefined line XXXX, columns xx-xx while reading in BigQuery

我在 Bigquery 中有一個表,它有 2 列 - job_idjson_column (JSON 格式的字符串)。 當我試圖讀取數據並識別一些對象時,它給我錯誤如下:

SyntaxError:Unexpected end of JSON input at undefined line XXXX, columns xx-xx

它總是給我第 5931 行,第二次我再次執行它給了第 6215 行。

如果它與JSON結構問題有關,我如何知道數字5931對應於哪個行/ job_id 如果我為特定的job_id設置子集,它會返回值,但是當我嘗試在整個表上執行時,出現此錯誤。 我試着查看提到的 row_numbers 處的job_id ,代碼對那些job_id工作正常。

你認為它的 JSON 結構問題以及如何識別哪個行/ job_id有這個問題?

表結構: 在此處輸入圖像描述

代碼:

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,dist,gm,sub_gm
FROM lz_fdp_op.fdp_json_file,
UNNEST(CUSTOM_JSON_EXTRACT(trim(conv_column), '$.Project.OpsLocationInfo.iDistrictId')) dist ,
UNNEST(CUSTOM_JSON_EXTRACT(trim(conv_column), '$.Project.GeoMarketInfo.Geo')) gm,
UNNEST(CUSTOM_JSON_EXTRACT(trim(conv_column), '$.Project.GeoMarketInfo.SubGeo')) sub_gm 

這對你有用嗎?

WITH 

T AS (
  SELECT
    '1000149.04.14' AS job_id,
    '{"Project":{"OpsLocationInfo":{"iDistrictId":"A"},"GeoMarketInfo":{"Geo":"B","SubGeo":"C"}}}' AS conv_column
)

SELECT
  JSON_EXTRACT_SCALAR(conv_column, '$.Project.OpsLocationInfo.iDistrictId') AS dist,
  JSON_EXTRACT_SCALAR(conv_column, '$.Project.GeoMarketInfo.Geo') AS gm,
  JSON_EXTRACT_SCALAR(conv_column, '$.Project.GeoMarketInfo.SubGeo') AS sub_gm
FROM
  T

BigQuery JSON 函數文檔: https ://cloud.google.com/bigquery/docs/reference/standard-sql/json_functions

如何在不使用 unnest 的情況下讀取 JSON 對象中的多個數組?

你能用輸入樣本更好地解釋你的評論嗎?

暫無
暫無

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

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