Получить Table_Id вместе с Rowcount для всех таблиц в проекте - PullRequest
0 голосов
/ 29 ноября 2018

В одном из моих проектов> 100 наборов данных, и я хочу получить Table_id * No_of_rows каждой таблицы, лежащей в этих 50 наборах данных.

Я могу получить метаданные набора данных, используя следующий запрос:

SELECT
  Project_id,
  dataset_id,
  table_id,
  row_count
FROM
  Project.dataset.__TABLES__

Я могу сделать это для каждого набора данных (но это займет 100 итераций).Есть ли способ лучше??

1 Ответ

0 голосов
/ 29 ноября 2018

Вы не можете сделать это в одном запросе, но я сделал для вас этот скрипт на Python:

from google.cloud import bigquery
client = bigquery.Client()

datasets = list(client.list_datasets())
project = client.project

if datasets:
    totalTables=0
    print('Datasets in project {}:'.format(project))
    for dataset in datasets:  # API request(s)
        print('Dataset: {}'.format(dataset.dataset_id))

        query_job = client.query("SELECT Project_id, dataset_id, table_id, row_count FROM "+dataset.dataset_id+".__TABLES__")

        results = query_job.result()
        for row in results:
            print("\tTable: {} : {}".format(row.table_id, row.row_count))

            totalTables=totalTables+int(row.row_count)
    print("\n\nTotal number of rows: {}".format(totalTables))
else:
    print('{} project does not contain any datasets.'.format(project))

Просто запустите его (например, в Cloud Shell).

РЕДАКТИРОВАТЬ Я создал эту функциюПросьба иметь опцию __DATASETS__ в BigQuery.Было бы здорово запустить вашу команду во всех ваших наборах данных, просто установив FROM __DATASETS__.__TABLES__ верно?

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