Раздел BigQuery таблицы с более чем 4000 дней данных? - PullRequest
0 голосов
/ 17 февраля 2019

У меня около 11 лет данных в куче файлов Avro.Я хотел разделить по дате каждой строки, но из документации видно, что я не могу, потому что слишком много разных дат?

Помогает ли кластеризация по этому поводу?Естественный ключ кластера для моих данных все еще будет содержать данные, которые будут храниться более 4000 дней.

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

В настоящее время в соответствии с документацией кластеризация поддерживается только для таблицы разделов.В будущем он может поддерживать таблицы без разделов.

Вы можете поместить старые данные за год в один раздел.Вам нужно добавить дополнительный столбец в свою таблицу для его разбиения на разделы.

Скажем, все данные за 2011 год будут идти в раздел 20110101. Для более новых данных (2019) у вас может быть отдельный раздел для каждой даты.

Это не чистое решение проблемы, но с помощью этого вы можете оптимизировать дальнейшее использование кластеризации, чтобы обеспечить минимальное сканирование таблицы.

0 голосов
/ 04 мая 2019

4000 ежедневных разделов - это данные за 10 лет.Если вам требуется «таблица» с данными за более чем 10 лет, одним из обходных путей будет использование представления:

  1. Разделите вашу таблицу на десятилетия, чтобы все таблицы были разбиты на одно поле и имели одинаковыесхема
  2. Объединение таблиц в представлении BigQuery

Это дает представление с 4000+ разделами, которые бизнес-пользователи могут запрашивать, не беспокоясь о том, какую версию таблицы им нужно использовать.или объединение самих таблиц.

0 голосов
/ 18 февраля 2019

два решения, которые я вижу:

1) Объединение шардинга таблиц (в год) с временным разделением на основе вашего столбца.Я никогда не проверял это сам, но это должно работать, поскольку каждый осколок рассматривается как новая таблица в BQ.При этом вы можете легко обращаться к осколку и разделу с помощью одного подстановочного знака / переменной.

2) Хороший обходной путь - создать дополнительный столбец с полем даты вашего поля, который следует разбить.Для каждой записи данных более 9 лет назад (например: DATE_DIFF (current_date (), DATE ('2009-01-01'), YEAR)) отформатируйте дату в 1-е число конкретного месяца.

Счто вы можете создавать данные за 29 лет.

Имейте в виду, что вы не можете фильтровать на основе этого столбца с фильтром даты, например, в DataStudio.Но для запроса это работает.

Лучший Томас

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