Запрос работает только с небольшими данными и с большим количеством данных просто не будет работать - PullRequest
1 голос
/ 24 октября 2019

Я экспортировал данные из магазина в BigQuery. Эти данные экспортируются в формате JSON. Я могу получить данные с лимитом 50, но когда я ставлю лимит в 100, появляется эта ошибка:

Failed to coerce output value false to type ARRAY<STRING>.

Я не знаю точно, что означает эта ошибка, но у меня естьпогуглил проблему только ни одно из этих объяснений не подходит для моей проблемы. Было две проблемы, только одну я уже понял. Вот почему код может выглядеть ненужным.

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://suncamp-1106/jsonpath-0.8.0.js.txt" );

SELECT
  A
, B
, C
, SPLIT(ARRAY_TO_STRING(D, ','), ',') as D
FROM (
SELECT   
  JSON_EXTRACT_SCALAR(data, '$.A') as A
, JSON_EXTRACT_SCALAR(data, '$.B') as B
, IF(REGEXP_CONTAINS(lower(data), r'subarray.*c'), CUSTOM_JSON_EXTRACT(JSON_EXTRACT(lower(data), "$.array['subarray']"), '$[*].c'), null) AS C
, IF(REGEXP_CONTAINS(lower(data), r'subarray.*d'), CUSTOM_JSON_EXTRACT(JSON_EXTRACT(lower(data), "$.array['subarray']"), '$[*].d'), null) AS D
FROM
  `mydataset`)

Данные выглядят примерно так:

A - это имя
B - это дата рождения
C - это дата и время, которые зависят от следующей записи. собирает дату для поискового термина
D - это поисковый термин

Я ожидаю, что смогу получить результаты по моему запросу независимо от того, установил ли я ограничение или нет.

...