Создать таблицу в BigQuery не удается, когда ключ JSON содержит дефис - PullRequest
0 голосов
/ 30 августа 2018

У меня есть JSON данные из Firebase Backup. Генерируемые данные таковы, что каждому ключу предшествует дефис.

Пример данных выглядит следующим образом:

"-GuGCJDEprMKczAMDUj8":{"deviceId":"399a649c6cee6209","dow":"Thursday","downloadFlag":"N","event":"streamStart","halfHourFull":"18h1","liveFlag":"Y","localDate":"2009-01-01","localHalfHour":1,"minutesSinceMidnight":1080,"quarterHourFull":"18q1","stationName":"hit 105","streamListenMethod":"Headphones","timestampLocal":"2009-01-01T18:00:33.679+10:00","timestampUTC":"2009-01-01T08:00:33.679Z"}

Когда мы пытаемся загрузить эти данные в Bigquery, мы сталкиваемся с указанной ниже ошибкой:

Поля должны содержать только буквы, цифры и символы подчеркивания, начинающиеся с буква или подчеркивание, длина не более 128 символов.

Это ограничение для больших запросов? Если да, то какое здесь предлагаемое решение.

Любая помощь / предложение очень ценится.

1 Ответ

0 голосов
/ 30 августа 2018

Это ограничение большого запроса? Если да, то какое здесь предлагаемое решение.

Вместо этого вам нужно использовать разные имена полей. Одним из вариантов является загрузка данных в один столбец STRING, например, используя 'CSV' для формата с разделителем полей '|' (или любым другим символом, который не отображается в ваших данных). Затем вы можете использовать функцию JSON_EXTRACT_SCALAR для извлечения полей из JSON, например ::10000

CREATE TABLE dataset.table AS
SELECT
  JSON_EXTRACT_SCALAR(json_string, '$.-GuGCJDEprMKczAMDUj8.deviceId') AS deviceId,
  JSON_EXTRACT_SCALAR(json_string, '$.-GuGCJDEprMKczAMDUj8.dow') AS dow,
  JSON_EXTRACT_SCALAR(json_string, '$.-GuGCJDEprMKczAMDUj8.downloadFlag') AS downloadFlag,
...
FROM dataset.single_column_table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...