#json #google-analytics #google-bigquery #snowflake-cloud-data-platform #data-extraction
#json #google-analytics #google-bigquery #snowflake-cloud-data-platform #извлечение данных
Вопрос:
Я экспортирую таблицу GA360 из большого запроса в snowflake в формате json, используя команду bq cli. Я теряю некоторые поля, когда загружаю их как таблицу в snowflake. Я использую команду copy для загрузки моих данных json с внешнего этапа GCS в snowflake в таблицы snowflake. Но мне не хватает некоторых полей, которые являются частью вложенного массива. Я даже пытался сжать файл при экспорте в gcs, но я все еще теряю данные. Может кто-нибудь подсказать мне, как я могу это сделать. Я не хочу сглаживать таблицу в bigquery и передавать ее. Мой ежедневный размер таблицы составляет от 1,5 ГБ до максимум 4 ГБ.
bq extract
--project_id=myproject
--destination_format=NEWLINE_DELIMITED_JSON
--compression GZIP
datasetid.ga_sessions_20191001
gs://test_bucket/ga_sessions_20191001-*.json
Я настроил свою интеграцию, формат файла и этап в snowflake. Я копирую данные из этой корзины в таблицу с одним полем variant. Количество строк совпадает с большим запросом, но поля отсутствуют.
Я предполагаю, что это связано с ограничением, которое имеет snowflake, где каждый столбец variant должен иметь размер 16 МБ. Есть ли какой-нибудь способ сжать каждое поле варианта до размера менее 16 МБ?
Комментарии:
1. Какие поля вам не хватает?
2. Мне не хватает hits.transaction и всей его структуры @FelipeHoffa
Ответ №1:
У меня не было проблем с экспортом GA360 и получением полных объектов в Snowflake.
Сначала я экспортировал демонстрационную таблицу bigquery-public-data.google_analytics_sample.ga_sessions_20170801
в GCS в формате JSON.
Затем я загрузил его в Snowflake:
create or replace table ga_demo2(src variant);
COPY INTO ga_demo2
FROM 'gcs://[...]/ga_sessions000000000000'
FILE_FORMAT=(TYPE='JSON');
А затем найти идентификаторы транзакций:
SELECT src:visitId, hit.value:transaction.transactionId
FROM ga_demo1, lateral flatten(input => src:hits) hit
WHERE src:visitId='1501621191'
LIMIT 10
Интересные вещи, на которые стоит обратить внимание:
- Я легко читаю файлы GCS из Snowflake, развернутые в AWS.
- Манипулирование JSON в Snowflake действительно круто.
См https://hoffa.medium.com/funnel-analytics-with-sql-match-recognize-on-snowflake-8bd576d9b7b1 для большего.
Комментарии:
1. тот же результат для файла размером более 16 МБ?
2. Размер этого файла превышает 16 МБ. Если у вас это не работает, можете ли вы поделиться со мной воспроизводимым примером?
3. просто проверял, связана проблема с ограничением в 16 МБ или нет, как упоминал ОП в последней строке своего вопроса.
4. Правильно! Я пропустил эту часть вопроса, спасибо, что подняли его. Я перепроверю. Кстати, мне было бы очень странно, что размер исходных данных превышает сжатие в 16 МБ, поэтому, надеюсь, они смогут предоставить воспроизводимый пример.
5. (обратите внимание, что ограничение на сжатие в 16 МБ в этом случае относится к строке, а не к файлу)