1. Введение
BigQuery — это полностью управляемая, не требующая операций операция, недорогая аналитическая база данных Google. С помощью BigQuery вы можете запрашивать терабайты данных без администратора базы данных или инфраструктуры. BigQuery использует знакомый SQL и модель оплаты «платите только за то, что используете». BigQuery позволяет вам сосредоточиться на анализе данных и получить значимую информацию. В этой лаборатории кода вы будете использовать инструмент командной строки bq для загрузки локального файла CSV в новую таблицу BigQuery.
Что вы узнаете
- Как использовать инструмент командной строки bq для BigQuery
- Как загрузить локальные файлы данных в таблицу BigQuery
Что вам понадобится
- Проект Google Cloud
- Браузер, например Google Chrome
2. Настройте
Включить BigQuery
Если у вас еще нет учетной записи Google, вам необходимо ее создать .
- Войдите в Google Cloud Console и перейдите в 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 Console нажмите «Активировать Cloud Shell». .
Если вы никогда раньше не запускали Cloud Shell, вам будет представлен промежуточный экран (ниже сгиба) с описанием того, что это такое. В этом случае нажмите «Продолжить» (и вы больше никогда этого не увидите). Вот как выглядит этот одноразовый экран:
Подготовка и подключение к Cloud Shell займет всего несколько минут.
Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Большую часть, если не всю, работу в этой лаборатории кода можно выполнить с помощью просто браузера или 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. Откроется новое окно браузера с редактором кода и панелью 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 .