1. Введение
BigQuery — это полностью управляемая, не требующая операционных ресурсов и недорогая аналитическая база данных от Google. С BigQuery вы можете запрашивать терабайты данных без администратора базы данных или инфраструктуры. BigQuery использует привычный SQL и модель оплаты только за фактически использованные ресурсы. BigQuery позволяет вам сосредоточиться на анализе данных для получения ценных выводов. В этом практическом занятии вы будете использовать инструмент командной строки bq для загрузки локального CSV-файла в новую таблицу BigQuery.
Что вы узнаете
- Как использовать инструмент командной строки bq для BigQuery
- Как загрузить локальные файлы данных в таблицу BigQuery
Что вам понадобится
- Проект Google Cloud
- Браузер, например , Google Chrome
2. Настройка
Включить BigQuery
Если у вас еще нет учетной записи Google, вам необходимо ее создать .
- Войдите в консоль Google Cloud и перейдите в раздел BigQuery. Вы также можете открыть веб-интерфейс BigQuery напрямую, введя следующий URL-адрес в свой браузер.
https://console.cloud.google.com/bigquery
- Примите условия предоставления услуг.
- Прежде чем начать использовать BigQuery, необходимо создать проект. Следуйте инструкциям, чтобы создать новый проект.
Выберите название проекта и запишите его идентификатор. 
Идентификатор проекта — это уникальное имя для всех проектов Google Cloud. В дальнейшем в этом практическом занятии он будет обозначаться как PROJECT_ID .
В этом практическом задании используются ресурсы BigQuery в пределах ограничений тестовой среды BigQuery . Платежный аккаунт не требуется. Если вы позже захотите снять ограничения тестовой среды, вы можете добавить платежный аккаунт, зарегистрировавшись на бесплатную пробную версию Google Cloud.
Облачная оболочка
Вы будете использовать Cloud Shell — среду командной строки, работающую в Google Cloud.
Активировать Cloud Shell
- В консоли Cloud нажмите «Активировать Cloud Shell» .
.

Если вы никогда раньше не запускали Cloud Shell, вам будет показан промежуточный экран (внизу), описывающий его назначение. В этом случае нажмите «Продолжить» (и вы больше никогда его не увидите). Вот как выглядит этот одноразовый экран:

Подготовка и подключение к Cloud Shell займут всего несколько минут.

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог размером 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Большая часть, если не вся, работа в этом практическом задании может быть выполнена с помощью обычного браузера или вашего Chromebook.
После подключения к Cloud Shell вы увидите, что ваша аутентификация пройдена и что проект уже настроен на ваш идентификатор проекта.
- Выполните следующую команду в Cloud Shell, чтобы подтвердить свою аутентификацию:
gcloud auth list
вывод команды
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте:
gcloud config list project
вывод команды
[core] project = <PROJECT_ID>
Если это не так, вы можете установить это с помощью следующей команды:
gcloud config set project <PROJECT_ID>
вывод команды
Updated property [core/project].
3. Создайте набор данных.
Создайте набор данных для хранения ваших таблиц.
Что такое набор данных?
Набор данных BigQuery представляет собой коллекцию таблиц. Все таблицы в наборе данных хранятся в одном и том же месте . Вы также можете добавить пользовательские элементы управления доступом, чтобы ограничить доступ к набору данных и его таблицам.
Создайте набор данных
В Cloud Shell используйте команду bq mk для создания набора данных с именем " bq_load_codelab ".
bq mk bq_load_codelab
Просмотреть свойства набора данных
Убедитесь, что вы создали набор данных, просмотрев его свойства с помощью команды bq show.
bq show bq_load_codelab
В результате вы должны увидеть примерно следующий вывод:
Dataset my-project:bq_load_codelab
Last modified ACLs Labels
----------------- -------------------- --------
15 Jun 14:12:49 Owners:
projectOwners,
your-email@example.com
Writers:
projectWriters
Readers:
projectReaders
4. Создайте файл данных.
BigQuery может загружать данные из нескольких форматов, включая JSON с разделителями строк , Avro и CSV . Для простоты вы будете использовать CSV.
Создайте CSV-файл
В Cloud Shell создайте пустой CSV-файл.
touch customer_transactions.csv
Откройте CSV-файл в редакторе кода в Cloud Shell, выполнив команду `cloudshell edit`. Это откроет новое окно браузера с редактором кода и панелью Cloud Shell.
cloudshell edit customer_transactions.csv
В редакторе кода введите несколько значений, разделенных запятыми, для загрузки в BigQuery.
ID,Zipcode,Timestamp,Amount,Feedback,SKU c123,78757,2018-02-14 17:01:39Z,1.20,4.7,he4rt5 c456,10012,2018-03-14 15:09:26Z,53.60,3.1,ppiieee c123,78741,2018-04-01 05:59:47Z,5.98,2.0,ch0c0
Сохраните CSV-файл, нажав «Файл» > «Редактировать» .
5. Загрузка данных
Используйте команду `bq load` для загрузки CSV-файла в таблицу BigQuery.
bq load \
--source_format=CSV \
--skip_leading_rows=1 \
bq_load_codelab.customer_transactions \
./customer_transactions.csv \
id:string,zip:string,ttime:timestamp,amount:numeric,fdbk:float,sku:string
Вы использовали следующие параметры:
-
--source_format=CSVиспользует формат данных CSV при анализе файла данных. -
--skip_leading_rows=1пропускает первую строку в CSV-файле, поскольку это строка заголовка. -
Bq_load_codelab.customer_transactions—the first positional argument—определяет, в какую таблицу следует загрузить данные. -
./customer_transactions.csv— второй позиционный аргумент — определяет, какой файл следует загрузить. Помимо локальных файлов, команда bq load может загружать файлы из Cloud Storage сgs://my_bucket/path/to/file URIs. - Схема, которую можно определить в JSON-файле или в виде списка, разделенного запятыми. (Для простоты использован список, разделенный запятыми.)
В таблице customer_transactions вы использовали следующую схему:
-
Id:string: Идентификатор клиента -
Zip:string: Почтовый индекс США -
Ttime:timestamp: Дата и время совершения транзакции -
Amount:numeric: Сумма транзакции ( числовой столбец хранит данные в десятичной форме, что удобно для денежных значений.) -
Fdbk:float: Рейтинг по результатам опроса об обратной связи по сделке. -
Sku:string: Идентификатор приобретенного товара
Получите подробную информацию о таблице.
Убедитесь, что таблица загружена, отобразив ее свойства.
bq show bq_load_codelab.customer_transactions
Выход:
Table my-project:bq_load_codelab.customer_transactions
Last modified Schema Total Rows Total Bytes
----------------- --------------------- ------------ -------------
15 Jun 15:13:55 |- id: string 3 159
|- zip: string
|- ttime: timestamp
|- amount: numeric
|- fdbk: float
|- sku: string
6. Выполните запрос к данным.
Теперь, когда ваши данные загружены, вы можете запрашивать их, используя веб-интерфейс BigQuery , команду bq или API. Ваши запросы могут объединять ваши данные с любым набором данных (или наборами данных, если они находятся в одном и том же месте ), к чтению которого у вас есть разрешение.
Выполните стандартный SQL-запрос, который объединяет ваш набор данных с набором данных почтовых индексов США и суммирует транзакции по штатам США. Используйте команду bq query для выполнения запроса.
bq query --nouse_legacy_sql ' SELECT SUM(c.amount) AS amount_total, z.state_code AS state_code FROM `bq_load_codelab.customer_transactions` c JOIN `bigquery-public-data.utility_us.zipcode_area` z ON c.zip = z.zipcode GROUP BY state_code '
Результатом выполнения этой команды должно стать примерно следующее:
Waiting on bqjob_r26...05a15b38_1 ... (1s) Current status: DONE +--------------+------------+ | amount_total | state_code | +--------------+------------+ | 53.6 | NY | | 7.18 | TX | +--------------+------------+
В вашем запросе использовались общедоступный набор данных и ваш частный набор данных. Подробнее можно узнать, прочитав этот вариант запроса с комментариями:
#standardSQL SELECT /* Total of all transactions in the state. */ SUM(c.amount) AS amount_total, /* State corresponding to the transaction's zipcode. */ z.state_code AS state_code /* Query the table you just constructed. * Note: If you omit the project from the table ID, * the dataset is read from your project. */ FROM `bq_load_codelab.customer_transactions` c /* Join the table to the zipcode public dataset. */ JOIN `bigquery-public-data.utility_us.zipcode_area` z /* Find the state corresponding to the transaction's zipcode. */ ON c.zip = z.zipcode /* Group over all transactions by state. */ GROUP BY state_code
7. Уборка
Удалите набор данных, созданный с помощью команды bq rm. Используйте флаг -r для удаления всех содержащихся в нем таблиц.
bq rm -r bq_load_codelab
8. Поздравляем!
Вы загрузили таблицу в BigQuery и выполнили запрос к ней!
Что вы осветили
- Использование инструмента командной строки
bqдля взаимодействия с BigQuery. - Объединение ваших данных и общедоступного набора данных с помощью запроса BigQuery.
Что дальше?
Узнайте больше о:
- Инструмент командной строки
bq - Другие способы загрузки данных в BigQuery .
- Другие общедоступные наборы данных доступны через BigQuery .
- Данные о погоде, преступности и другие типы данных в TIL с помощью BigQuery .