Загружайте и запрашивайте данные с помощью инструмента командной строки bq для BigQuery.

1. Введение

BigQuery — это полностью управляемая, не требующая операций операция, недорогая аналитическая база данных Google. С помощью BigQuery вы можете запрашивать терабайты данных без администратора базы данных или инфраструктуры. BigQuery использует знакомый SQL и модель оплаты «платите только за то, что используете». BigQuery позволяет вам сосредоточиться на анализе данных и получить значимую информацию. В этой лаборатории кода вы будете использовать инструмент командной строки bq для загрузки локального файла CSV в новую таблицу BigQuery.

Что вы узнаете

  • Как использовать инструмент командной строки bq для BigQuery
  • Как загрузить локальные файлы данных в таблицу BigQuery

Что вам понадобится

  • Проект Google Cloud
  • Браузер, например Google Chrome

2. Настройте

Включить BigQuery

Если у вас еще нет учетной записи Google, вам необходимо ее создать .

  1. Войдите в Google Cloud Console и перейдите в BigQuery. Вы также можете открыть веб-интерфейс BigQuery напрямую, введя следующий URL-адрес в браузере.
https://console.cloud.google.com/bigquery
  1. Примите условия обслуживания.
  2. Прежде чем вы сможете использовать BigQuery, вам необходимо создать проект. Следуйте инструкциям, чтобы создать новый проект.

Выберите имя проекта и запишите идентификатор проекта. 1884405a64ce5765.png

Идентификатор проекта – это уникальное имя для всех проектов Google Cloud. Позже в этой лаборатории он будет называться PROJECT_ID .

В этой лаборатории кода используются ресурсы BigQuery с ограничениями песочницы BigQuery . Платежный аккаунт не требуется. Если позже вы захотите снять ограничения песочницы, вы можете добавить учетную запись для выставления счетов, подписавшись на бесплатную пробную версию Google Cloud.

Облачная оболочка

Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud.

Активировать Cloud Shell

  1. В Cloud Console нажмите «Активировать Cloud Shell». 4292cbf4971c9786.png .

bce75f34b2c53987.png

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

70f315d7b402b476.png

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

fbe3a0674c982259.png

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Большую часть, если не всю, работу в этой лаборатории кода можно выполнить с помощью просто браузера или Chromebook.

После подключения к Cloud Shell вы увидите, что вы уже прошли аутентификацию и что для проекта уже установлен идентификатор вашего проекта.

  1. Выполните следующую команду в 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`
  1. Выполните следующую команду в 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.

Что дальше

Узнайте больше о: