Ограничить количество записей, которые BigQuery требуется для сканирования по любому заданному запросу? - PullRequest
0 голосов
/ 11 ноября 2019

Я загрузил несколько больших таблиц в BigQuery и могу выполнять запросы к ним. Я успешно сократил расходы по горизонтали, отсканировав только определенные необходимые столбцы, а не SELECT *

. Существуют ли способы ограничения сканируемых данных по вертикали . Я вижу, что использование LIMIT не поможет :

Применение предложения LIMIT к запросу SELECT * не влияет на количество прочитанных данных. Вам выставлен счет за чтение всех байтов во всей таблице

Существуют ли другие способы сокращения количества проверок, выполненных BigQuery для данного запроса? Возможно, путем загрузки (и правильного присвоения имен) множества таблиц меньшего размера, а не одной большой, или посредством специального SQL BigQuery?

Если это уместно, мои файлы в паркетном формате.

Ответы [ 2 ]

1 голос
/ 11 ноября 2019

Проверьте разбиение и кластеризацию в BigQuery.

https://cloud.google.com/bigquery/docs/partitioned-tables

https://cloud.google.com/bigquery/docs/clustered-tables (также хорошо работает в сокращении затрат с LIMIT)

0 голосов
/ 11 ноября 2019

Я думаю, что это будет полезно.

Две основные операции - уменьшить количество сканируемых строк и уменьшить количество сканируемых столбцов.

Чтобы уменьшить количество строк, очевидным способом являетсяиспользуя LIMIT. Если вы не можете уменьшить количество строк с помощью LIMIT, другой подход заключается в рассмотрении определенного шаблона в наборе данных. Например, если у вас есть столбец даты, использующий оператор BETWEEN для выбора только требуемых данных.

Другой способ - поместить ваши данные в отдельные таблицы. Это ограничит объем обрабатываемых данных. Но когда дело доходит до запросов к вашим таблицам, это будет немного сложнее

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