Пример по моему опыту:
Один из моих таблиц - ежедневный стол с ежедневным размером 4-5 ТБ. Схема имеет около 780 полей. Я хотел понять стоимость каждой точки данных (размер бита) [она использовалась тогда для расчета ROI на основе стоимости/использования]
Итак, позвольте мне дать вам представление о том, как стоимость (бит-размер) стороны к нему подошли.
Основная часть здесь является использование dryRun имущества Jobs: Query API
Установка dryRun
к истине позволяет BigQuery (а на самом деле работает работа) статистика возвращения о работе, например, сколько байтов будут обработаны. И это именно то, что нужно здесь!
Так, например, ниже Request предназначен для получения стоимости trafficSource.referralPath
в ga_session таблице 2017-01-05
POST https://www.googleapis.com/bigquery/v2/projects/yourBillingProject/queries?key={YOUR_API_KEY}
{
"query": "SELECT trafficSource.referralPath FROM yourProject.yourDataset.ga_sessions_20170105`",
"dryRun": true,
"useLegacySql": false
}
Вы можете получить это значение путем анализа totalBytesProcessed
из ответов. Смотрите пример такой реакции ниже
{
"kind": "bigquery#queryResponse",
"jobReference": {
"projectId": "yourBillingProject"
},
"totalBytesProcessed": "371385",
"jobComplete": true,
"cacheHit": false
}
Таким образом, вы можете написать относительно простой сценарий в клиенте по вашему выбору, что:
- читает схему вашего стола - вы можете использовать Tables: get API для этой или если схема известна и легко доступна, вы можете просто просто скопировать ее
- организовать цикл через все (каждое поле) в схеме
- внутри цикла - вызвать
query api
и извлечь размер соответствующего поданной (как указано выше)) и, конечно, зарегистрировать ее (или просто собрать его в памяти)
В результате выше - у вас будет список все поля с их соответствующим размером
Если теперь вам нужно проанализировать эти изменения размеров за время - вы можете обернуть выше с еще одним циклом, в котором вы будете проходить через столько дней, сколько вам нужно, и собирать статистику за каждый день
Если вас не интересует ежедневный анализ - вы можете просто убедиться, что ваш запрос действительно запрашивает интересующий вас диапазон.Это может быть сделано с использованием Wildcard Table
Я считаю это относительно легкий способ пойти с
меня лично, я помню, как делать это с Go-лана, но это не имеет значения - вы можете использовать любой клиент что вам больше всего нравится
Надеюсь, это вам поможет!