Использование поддельных временных меток для создания разделов в Google BigQuery - PullRequest
0 голосов
/ 20 мая 2019

Google BigQuery (BQ) позволяет создавать разделы, используя только типы timestamp или date.

99% моих данных имеют очень четкий селектор, idClient. Я создал для представления моего клиента предикат вроде idClient = code, поэтому конфиденциальность гарантирована.

Проблема этой стратегии заключается в том, что есть клиенты с 5M строками и другие с 200K, и, поскольку BQ не имеет индексов, они всегда обрабатывают данные друг от друга (и затраты растут).

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

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

1 Ответ

2 голосов
/ 20 мая 2019

Решением вашей проблемы является добавление поля Cluster в вашу таблицу, которое эквивалентно индексу в других базах данных

Эта ссылка предоставляет основную информацию о том, как использовать поле кластера

Кластеризация может повысить производительность определенных типов запросов, таких как запросы, которые используют предложения фильтра, и запросы, которые объединяют данные.Когда данные записываются в кластеризованную таблицу с помощью задания запроса или задания загрузки, BigQuery сортирует данные по значениям в столбцах кластеризации

Примечание. При использовании поля кластера BigQuert dryRun не показываетулучшение затрат, которое можно увидеть только после исполнения

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