Неожиданный конец ввода JSON в неопределенной строке XXXX, столбцы xx-xx при чтении в BigQuery - PullRequest
1 голос
/ 22 января 2020

У меня есть таблица в Bigquery, которая имеет 2 столбца - job_id и json_column (строка в формате JSON). Когда я пытался прочитать данные и идентифицировать некоторые объекты, это выдает мне ошибку, как показано ниже:

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

Это всегда дает мне строку 5931, и во второй раз, когда я выполняюсь снова, это дает строку 6215.

Если это связано с проблемой структуры JSON, как я могу узнать, какой строке / job_id соответствует это число 5931? Если я задаю подмножество для указанного c job_id, он возвращает значения, но когда я попытался выполнить полную таблицу, я получил эту ошибку. Я попытался взглянуть на job_id по упомянутым номерам row_numbers, и код прекрасно работает для этих job_id s.

Как вы думаете, проблема структуры JSON и как определить, какая строка / job_id имеет эту проблему?

Структура таблицы: enter image description here

Код:

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 

1 Ответ

2 голосов
/ 22 января 2020

Будет ли это работать для вас?

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

как я могу прочитать несколько массивов в объект в JSON без использования unnest?

Можете ли вы лучше объяснить с помощью входного примера ваш комментарий?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...