1. Создайте обратный ETL-конвейер от Snowflake до Spanner, используя Google Cloud Storage и BigQuery.
Введение
В этом практическом занятии будет построен обратный ETL- конвейер от Snowflake к Spanner. Традиционно ETL-конвейеры (извлечение, преобразование, загрузка) перемещают данные из операционных баз данных в хранилище данных, такое как Snowflake, для аналитики. Обратный ETL-конвейер делает обратное: он перемещает обработанные данные из хранилища данных обратно в операционные системы, где они могут использоваться для работы приложений, предоставления пользовательских функций или принятия решений в режиме реального времени.
Цель состоит в том, чтобы переместить агрегированный набор данных из таблицы Snowflake Iceberg в Spanner, глобально распределенную реляционную базу данных, идеально подходящую для приложений с высокой доступностью.
Для достижения этой цели в качестве промежуточных звеньев используются Google Cloud Storage (GCS) и BigQuery. Вот подробное описание потока данных и обоснование такой архитектуры:
- Snowflake в Google Cloud Storage (GCS) в формате Iceberg:
- Первый шаг — извлечение данных из Snowflake в открытом, четко определенном формате. Таблица экспортируется в формате Apache Iceberg . В результате этого процесса базовые данные записываются в виде набора файлов Parquet , а метаданные таблицы (схема, разделы, расположение файлов) — в виде файлов JSON и Avro . Размещение всей структуры таблицы в GCS делает данные переносимыми и доступными для любой системы, которая понимает формат Iceberg.
- Преобразование таблиц Iceberg в GCS во внешнюю таблицу BigQuery BigLake:
- Вместо прямой загрузки данных из GCS в Spanner, в качестве мощного посредника используется BigQuery. Вы создадите внешнюю таблицу BigLake в BigQuery, которая будет напрямую указывать на файл метаданных Iceberg в GCS. Такой подход имеет несколько преимуществ:
- Отсутствие дублирования данных: BigQuery считывает структуру таблицы из метаданных и выполняет запросы к файлам данных Parquet непосредственно в файле , не загружая их, что значительно экономит время и средства на хранение.
- Федеративные запросы: позволяют выполнять сложные SQL-запросы к данным GCS так же, как если бы это была собственная таблица BigQuery.
- От BigQuery к Spanner:
- Последний шаг — перенос данных из BigQuery в Spanner. Для этого используется мощная функция BigQuery, называемая запросом
EXPORT DATA, которая представляет собой этап "обратного ETL". - Операционная готовность: Spanner разработан для транзакционных рабочих нагрузок, обеспечивая высокую согласованность и доступность приложений. Перемещение данных в Spanner делает их доступными для пользовательских приложений, API и других операционных систем, требующих поиска данных с низкой задержкой.
- Масштабируемость: Этот подход позволяет использовать аналитические возможности BigQuery для обработки больших наборов данных и эффективной доставки результатов через масштабируемую инфраструктуру Spanner.
Услуги и терминология
- Snowflake — облачная платформа для работы с данными, предоставляющая хранилище данных как услугу.
- Spanner — полностью управляемая, глобально распределенная реляционная база данных.
- Google Cloud Storage — хранилище больших двоичных объектов от Google Cloud.
- BigQuery — полностью управляемое бессерверное хранилище данных для аналитики.
- Iceberg — открытый формат таблиц, разработанный Apache, обеспечивающий абстракцию от распространенных форматов файлов данных с открытым исходным кодом.
- Parquet — формат двоичных файлов данных с колоночным форматом, разработанный компанией Apache.
Что вы узнаете
- Как загрузить данные в Snowflake
- Как создать сегмент GCS
- Как экспортировать таблицу Snowflake в GCS в формате Iceberg
- Как настроить экземпляр Spanner
- Как загрузить внешние таблицы BigLake из BigQuery в Spanner
2. Настройка, требования и ограничения
Предварительные требования
- Аккаунт Snowflake
- Для экспорта данных из BigQuery в Spanner требуется учетная запись Google Cloud с резервированием уровня BigQuery Enterprise или выше .
- Доступ к консоли Google Cloud через веб-браузер.
- Терминал для выполнения команд Google Cloud CLI
- Если в вашей организации Google Cloud включена политика
iam.allowedPolicyMemberDomains, администратору может потребоваться предоставить исключение, разрешающее использование учетных записей служб из внешних доменов. Это будет рассмотрено на следующем шаге, где это применимо.
Ограничения
Важно помнить о некоторых ограничениях и несовместимости типов данных, которые могут возникнуть в этом конвейере обработки данных.
От снежинки к айсбергу
Типы данных столбцов различаются в Snowflake и Iceberg. Информация о преобразовании между ними доступна в документации Snowflake .
От айсберга до BigQuery
При использовании BigQuery для запросов к таблицам Iceberg существуют некоторые ограничения. Полный список см. в документации BigQuery . Обратите внимание, что такие типы, как BIGNUMERIC , INTERVAL , JSON , RANGE или GEOGRAPHY , в настоящее время не поддерживаются.
BigQuery to Spanner
Команда EXPORT DATA из BigQuery в Spanner не поддерживает все типы данных BigQuery. Экспорт таблицы со следующими типами данных приведет к ошибке:
-
STRUCT -
GEOGRAPHY -
DATETIME -
RANGE -
TIME
Кроме того, если в проекте BigQuery используется диалект GoogleSQL , следующие числовые типы также не поддерживаются для экспорта в Spanner:
-
BIGNUMERIC
Полный и актуальный список ограничений см. в официальной документации: Ограничения экспорта в Spanner .
Снежинка
Для выполнения этого практического задания вы можете использовать существующую учетную запись Snowflake или создать бесплатную пробную учетную запись.
Разрешения IAM платформы Google Cloud Platform
Для выполнения всех шагов в этом практическом задании учетной записи Google потребуются следующие разрешения.
Служебные аккаунты | ||
| Позволяет создавать служебные учетные записи. | |
Гаечный ключ | ||
| Позволяет создать новый экземпляр Spanner. | |
| Позволяет выполнять операторы DDL для создания | |
| Позволяет выполнять операторы DDL для создания таблиц в базе данных. | |
Google Облачное хранилище | ||
| Позволяет создать новый сегмент GCS для хранения экспортированных файлов Parquet. | |
| Позволяет записывать экспортированные файлы Parquet в хранилище GCS. | |
| Позволяет BigQuery считывать файлы Parquet из хранилища GCS. | |
| Позволяет BigQuery отображать список файлов Parquet в хранилище GCS. | |
Поток данных | ||
| Позволяет запрашивать элементы работы из Dataflow. | |
| Позволяет рабочему процессу Dataflow отправлять сообщения обратно в службу Dataflow. | |
| Позволяет рабочим процессам Dataflow записывать записи в журнал Google Cloud Logging. | |
Для удобства можно использовать предопределенные роли, содержащие эти разрешения.
|
|
|
|
|
|
|
|
Настройка многократно используемых свойств
В ходе этой лабораторной работы вам потребуется несколько значений, которые будут повторяться. Чтобы упростить задачу, мы присвоим этим значениям переменные оболочки для дальнейшего использования.
- GCP_REGION — Конкретный регион, в котором будут расположены ресурсы GCP. Список регионов можно найти здесь .
- GCP_PROJECT — идентификатор проекта GCP, который следует использовать.
- GCP_BUCKET_NAME — имя создаваемого сегмента GCS, в котором будут храниться файлы данных.
export GCP_REGION = <GCP REGION HERE>
export GCP_PROJECT= <GCP PROJECT HERE>
export GCS_BUCKET_NAME = <GCS BUCKET NAME HERE>
export SPANNER_INSTANCE = <SPANNER INSTANCE ID HERE>
export SPANNER_DB = <SPANNER DATABASE ID HERE>
Проект Google Cloud
Проект — это базовая организационная единица в Google Cloud. Если администратор предоставил проект для использования, этот шаг можно пропустить.
Создать проект с помощью командной строки можно следующим образом:
gcloud projects create $GCP_PROJECT
gcloud config set project $GCP_PROJECT
Подробнее о создании и управлении проектами можно узнать здесь .
Установите гаечный ключ
Для начала использования Spanner необходимо создать экземпляр и базу данных. Подробную информацию о настройке и создании экземпляра Spanner можно найти здесь .
Создайте экземпляр
gcloud spanner instances create $SPANNER_INSTANCE \
--config=regional-$GCP_REGION \
--description="Codelabs Snowflake RETL" \
--processing-units=100 \
--edition=ENTERPRISE
Создайте базу данных.
gcloud spanner databases create $SPANNER_DB \
--instance=$SPANNER_INSTANCE
3. Создайте хранилище Google Cloud Storage.
Для хранения файлов данных Parquet и метаданных Iceberg, сгенерированных Snowflake, будет использоваться Google Cloud Storage (GCS). Для этого сначала необходимо создать новый сегмент (bucket), который будет использоваться в качестве места назначения файлов. Выполните следующие действия в окне терминала на локальном компьютере.
Создайте корзину
Для создания хранилища в определенном регионе (например, us-central1) используйте следующую команду.
gcloud storage buckets create gs://$GCS_BUCKET_NAME --location=$GCP_REGION
Проверка создания корзины
После успешного выполнения этой команды проверьте результат, перечислив все корзины. Новая корзина должна появиться в полученном списке. Ссылки на корзины обычно отображаются с префиксом gs:// перед именем корзины.
gcloud storage ls | grep gs://$GCS_BUCKET_NAME
Проверка прав на запись
Этот шаг гарантирует корректную аутентификацию локальной среды и наличие у нее необходимых разрешений для записи файлов в созданный контейнер.
echo "Hello, GCS" | gcloud storage cp - gs://$GCS_BUCKET_NAME/hello.txt
Проверьте загруженный файл.
Перечислите объекты в хранилище. Должен отобразиться полный путь к только что загруженному файлу.
gcloud storage ls gs://$GCS_BUCKET_NAME
Вы должны увидеть следующий результат:
gs://$GCS_BUCKET_NAME/hello.txt
Для просмотра содержимого объекта в хранилище можно использовать gcloud storage cat .
gcloud storage cat gs://$GCS_BUCKET_NAME/hello.txt
Содержимое файла должно быть видно:
Hello, GCS
Удалите тестовый файл
Сегмент облачного хранилища теперь настроен. Временный тестовый файл можно удалить.
gcloud storage rm gs://$GCS_BUCKET_NAME/hello.txt
Результат должен подтвердить удаление:
Removing gs://$GCS_BUCKET_NAME/hello.txt... / [1 objects] Operation completed over 1 objects.
4. Экспорт из Snowflake в GCS
Для этой лабораторной работы вы будете использовать набор данных TPC-H , который является отраслевым стандартом для систем поддержки принятия решений. Его схема моделирует реалистичную бизнес-среду с клиентами, заказами, поставщиками и комплектующими, что делает его идеальным для демонстрации реального сценария аналитики и перемещения данных. Этот набор данных доступен по умолчанию во всех учетных записях Snowflake.
Вместо использования исходных нормализованных таблиц TPC-H вы создадите новую агрегированную таблицу. Эта новая таблица объединит данные из таблиц orders , customer и nation , чтобы получить денормализованное, сводное представление общенациональных сумм продаж. Этот этап предварительной агрегации является распространенной практикой в аналитике, поскольку он подготавливает данные для конкретного сценария использования — в данном случае, для использования операционным приложением.
Разрешите Snowflake доступ к облачному хранилищу Google.
Для того чтобы Snowflake мог записывать данные в хранилище GCS, необходимо создать две вещи: внешний том и предоставить необходимые права доступа .
- Внешний том — это объект Snowflake, обеспечивающий защищенное соединение с определенным местоположением в хранилище GCS. Он сам не хранит данные, а содержит конфигурацию, необходимую Snowflake для доступа к облачному хранилищу.
- В целях безопасности облачные хранилища по умолчанию являются частными. При создании внешнего тома Snowflake генерирует выделенную учетную запись службы . Этой учетной записи службы должны быть предоставлены разрешения на чтение и запись в хранилище.
Создайте базу данных
- В меню слева, в разделе Horizon Catalog , наведите курсор на Catalog , затем щелкните Database Explorer.
- Оказавшись на странице «Базы данных» , нажмите кнопку «+ База данных» в правом верхнем углу.
- Назовите новую базу данных
codelabs_retl_db
Создать рабочий лист
Для выполнения SQL-запросов к базе данных потребуются рабочие листы.
Для создания электронной таблицы:
- В меню слева, в разделе «Работа с данными» , наведите курсор на «Проекты» , затем нажмите «Рабочие пространства».
- В боковой панели «Мои рабочие пространства» нажмите кнопку «+ Добавить новый» и выберите «SQL-файл».
Создайте внешний том
Выполните следующую команду в таблице Snowflake, чтобы создать том.
CREATE EXTERNAL VOLUME codelabs_retl_ext_vol
STORAGE_LOCATIONS =
(
(
NAME = 'codelabs_retl_ext_vol'
STORAGE_PROVIDER = 'GCS'
STORAGE_BASE_URL = 'gcs://<Your bucket name>/snowflake_extvol'
)
);
Получите учетную запись службы Snowflake.
DESC (опишите) вновь созданный внешний том, чтобы получить уникальную учетную запись службы, сгенерированную для него Snowflake.
DESC EXTERNAL VOLUME codelabs_retl_ext_vol;
- В панели результатов найдите свойства JSON и запись
property_value, содержащую строку JSON, начинающуюся с"NAME":"codelabs_retl_ext_vol" - Найдите свойство
STORAGE_GCP_SERVICE_ACCOUNTв объекте JSON и скопируйте его значение (оно будет выглядеть как адрес электронной почты). Это идентификатор учетной записи службы, которой необходим доступ к корзине GCS. - Сохраните этот сервисный аккаунт в переменную среды вашего экземпляра оболочки для последующего использования.
export GCP_SERVICE_ACCOUNT=<Your service account>
Предоставить Snowflake разрешения GCS.
Теперь необходимо предоставить учетной записи службы Snowflake разрешение на запись в хранилище GCS.
gcloud storage buckets add-iam-policy-binding gs://$GCS_BUCKET_NAME \
--member="serviceAccount:$GCP_SERVICE_ACCOUNT" \
--role="roles/storage.objectAdmin"
gcloud storage buckets add-iam-policy-binding gs://$GCS_BUCKET_NAME \
--member="serviceAccount:$GCP_SERVICE_ACCOUNT" \
--role="roles/storage.legacyBucketReader"
Проверка доступа в Snowflake
Вернитесь в таблицу Snowflake и выполните эту команду, чтобы убедиться, что Snowflake теперь может успешно подключиться к хранилищу GCS.
SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('codelabs_retl_ext_vol');
В результате должен получиться JSON-объект, содержащий "success":true .
Для получения более подробной информации о внешних томах в Snowflake обратитесь к официальной документации .
Экспорт данных заказа образцов
Теперь вы можете создать таблицу Iceberg в Snowflake. Следующая команда указывает Snowflake выполнить запрос и сохранить результаты в GCS, используя формат Iceberg. Файлы данных будут в формате Parquet, а метаданные — в форматах Avro и JSON, все это будет храниться в месте, определенном внешним томом codelabs_retl_ext_vol .
Создайте базу данных
- В меню слева, в разделе Horizon Catalog , наведите курсор на Catalog , затем щелкните Database Explorer.
- Оказавшись на странице «Базы данных» , нажмите кнопку «+ База данных» в правом верхнем углу.
- Назовите новую базу данных
codelabs_retl_db
USE DATABASE codelabs_retl_db;
CREATE ICEBERG TABLE REGIONAL_SALES_ICEBERG (
NATION_NAME STRING,
MARKET_SEGMENT STRING,
ORDER_YEAR INTEGER,
ORDER_PRIORITY STRING,
TOTAL_ORDER_COUNT INTEGER,
TOTAL_REVENUE NUMBER(24,2),
UNIQUE_CUSTOMER_COUNT INTEGER
)
EXTERNAL_VOLUME = 'codelabs_retl_ext_vol'
CATALOG = 'SNOWFLAKE'
BASE_LOCATION = 'regional_sales_iceberg'
AS (
SELECT
n.n_name AS nation_name,
c.c_mktsegment AS market_segment,
YEAR(o.o_orderdate) AS order_year,
o.o_orderpriority AS order_priority,
COUNT(o.o_orderkey) AS total_order_count,
ROUND(SUM(o.o_totalprice), 2) AS total_revenue,
COUNT(DISTINCT c.c_custkey) AS unique_customer_count
FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.orders AS o
INNER JOIN SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.customer AS c
ON o.o_custkey = c.c_custkey
INNER JOIN SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.nation AS n
ON c.c_nationkey = n.n_nationkey
GROUP BY
n.n_name,
c.c_mktsegment,
YEAR(o.o_orderdate),
o.o_orderpriority
);
Для получения дополнительной информации о создании и управлении таблицами Iceberg с помощью Snowflake обратитесь к официальной документации .
Проверка данных в GCP
Теперь проверьте хранилище GCS. Файлы, созданные Snowflake, должны быть видны. Это подтверждает успешность экспорта. Метаданные Iceberg будут находиться в папке metadata , а сами данные в формате Parquet — в папке data .
gcloud storage ls "gs://$GCS_BUCKET_NAME/snowflake_extvol/**"
Точные названия файлов могут отличаться, но структура должна выглядеть примерно так:
gs://$GCS_BUCKET_NAME/snowflake_extvol/ gs://$GCS_BUCKET_NAME/snowflake_extvol/regional_sales_iceberg.snvrAWuR/data/snow_cbsKIRmdDmo_wLg128fugxg_0_2_009.parquet ... gs://$GCS_BUCKET_NAME/snowflake_extvol/regional_sales_iceberg.snvrAWuR/metadata/00001-62f831ff-6708-4494-94c5-c891b7ad447f.metadata.json ...
Данные были скопированы из Snowflake в Google Cloud Storage в формате Iceberg.
Раз уж у нас есть этот список, давайте сохраним файл metadata.json в переменную окружения, так как он нам понадобится позже.
export GCS_METADATA_JSON=$(gcloud storage ls "gs://$GCS_BUCKET_NAME/snowflake_extvol/**" | grep .metadata.json)
5. Настройка внешней таблицы BigQuery
Теперь, когда таблица Iceberg находится в Google Cloud Storage, следующим шагом является обеспечение к ней доступа для BigQuery. Это можно сделать, создав внешнюю таблицу BigLake .
BigLake — это механизм хранения данных, позволяющий создавать таблицы в BigQuery, которые считывают данные непосредственно из внешних источников, таких как Google Cloud Storage. В рамках этой лабораторной работы это ключевая технология, позволяющая BigQuery понимать только что экспортированную таблицу Iceberg без необходимости загружать данные в нее.
Для этого необходимы два компонента:
- Подключение к облачным ресурсам: это защищенное соединение между BigQuery и GCS. Для аутентификации используется специальная учетная запись службы, гарантирующая, что BigQuery имеет необходимые разрешения для чтения файлов из хранилища GCS.
- Определение внешней таблицы: это указывает BigQuery, где найти файл метаданных таблицы Iceberg в GCS и как его следует интерпретировать.
Настройте подключение к облачному хранилищу Google.
Сначала будет создано соединение, позволяющее BigQuery получить доступ к GCS. Эта команда создает ресурс соединения внутри BigQuery.
bq mk \
--connection \
--project_id=$GCP_PROJECT \
--location=$GCP_REGION \
--connection_type=CLOUD_RESOURCE \
codelabs-retl-connection
Успех будет выглядеть примерно так:
Connection 12345678.region.codelabs-retl-connection successfully created
Более подробная информация о подключении к облачным ресурсам в BigQuery доступна в документации Google Cloud .
Разрешите подключению BigQuery считывать данные.
Новое подключение к BigQuery имеет собственную учетную запись службы, которой необходимы разрешения на чтение данных из хранилища Google Cloud Storage.
1. Получите учетную запись службы подключения.
Сначала получите идентификатор учетной записи службы из только что созданного соединения:
bq show \
--location $GCP_REGION \
--connection codelabs-retl-connection
В результате будет отображена таблица совпадающих соединений.
Давайте присвоим переменной окружения параметр serviceAccountId , которая будет использоваться позже.
export GCP_BQ_SERVICE_ACCOUNT=<Your service account email>
2. Предоставление разрешений
Для авторизации учетной записи службы на просмотр данных в хранилище GCS выполните следующую команду.
gcloud storage buckets add-iam-policy-binding \
gs://$GCS_BUCKET_NAME \
--member serviceAccount:$GCP_BQ_SERVICE_ACCOUNT \
--role roles/storage.objectViewer
Создайте внешнюю таблицу
Теперь создайте внешнюю таблицу BigLake в BigQuery. Эта команда не перемещает данные. Она просто создает указатель на существующие данные в GCS. Вам понадобится путь к одному из файлов .metadata.json , созданных Snowflake.
bq mk --dataset --location=$GCP_REGION codelabs_retl
bq mk \
--table \
--location=$GCP_REGION \
--external_table_definition=ICEBERG=$GCS_METADATA_JSON@projects/$GCP_PROJECT/locations/$GCP_REGION/connections/codelabs-retl-connection \
codelabs_retl.regional_sales
Проверка данных в BigQuery
Теперь к этой таблице можно обращаться с помощью стандартного SQL, как и к любой другой таблице BigQuery. BigQuery будет использовать это соединение для чтения файлов Parquet из GCS в режиме реального времени.
bq query \
--location=$GCP_REGION \
--nouse_legacy_sql "SELECT * FROM \`$GCP_PROJECT.codelabs_retl.regional_sales\` LIMIT 10;"
6. Импорт данных из BigQuery в Spanner: заключительный шаг.
Достигнут заключительный и наиболее важный этап конвейера: перемещение данных из таблицы BigLake в Spanner. Это этап «обратного ETL», на котором данные, обработанные и отредактированные в хранилище данных, загружаются в операционную систему для использования приложениями.
Spanner — это полностью управляемая, глобально распределенная реляционная база данных. Она обеспечивает транзакционную согласованность традиционной реляционной базы данных, но при этом обладает горизонтальной масштабируемостью NoSQL-базы данных. Это делает её идеальным выбором для создания масштабируемых и высокодоступных приложений.
Процесс будет следующим:
- Создайте в базе данных Spanner схему таблицы, соответствующую структуре данных.
- Выполните запрос BigQuery
EXPORT DATA, чтобы загрузить данные из таблицы BigLake непосредственно в таблицу Spanner.
Создайте таблицу гаечных ключей.
Перед переносом данных из BigQuery необходимо создать целевую таблицу в Spanner с совместимой схемой.
gcloud spanner databases ddl update $SPANNER_DB \
--instance=$SPANNER_INSTANCE \
--ddl="$(cat <<EOF
CREATE TABLE regional_sales (
nation_name STRING(MAX),
market_segment STRING(MAX),
order_year INT64,
order_priority STRING(MAX),
total_order_count INT64,
total_revenue NUMERIC,
unique_customer_count INT64
) PRIMARY KEY (nation_name, market_segment, order_year, order_priority);
EOF
)"
Экспорт данных из BigQuery
Это заключительный шаг. После того, как исходные данные подготовлены в таблице BigQuery BigLake, а целевая таблица создана в Spanner, фактическое перемещение данных оказывается на удивление простым. Будет использован всего один SQL-запрос BigQuery: EXPORT DATA .
Этот запрос разработан специально для подобных сценариев. Он эффективно экспортирует данные из таблицы BigQuery (включая внешние, такие как таблица BigLake) во внешнее целевое хранилище. В данном случае целевым хранилищем является таблица Spanner.
bq query --location=$GCP_REGION --use_legacy_sql=false <<EOF
EXPORT DATA OPTIONS (
uri="https://spanner.googleapis.com/projects/${GCP_PROJECT}/instances/${SPANNER_INSTANCE}/databases/${SPANNER_DB}",
format='CLOUD_SPANNER',
spanner_options="""{
"table": "regional_sales",
"priority": "HIGH"
}"""
) AS
SELECT * FROM \`${PROJECT_ID}.codelabs_retl.regional_sales\`
EOF
После завершения запроса в панели результатов должно отобразиться сообщение «Обновление завершено».
7. Проверьте данные в программе Spanner.
Поздравляем! Полностью создан и выполнен конвейер обратного ETL-процесса. Последний шаг — проверка того, что данные поступили в Spanner в соответствии с ожиданиями.
gcloud spanner databases execute-sql \
--instance=$SPANNER_INSTANCE \
$SPANNER_DB \
--sql='SELECT * FROM regional_sales LIMIT 10'
Импортированные данные образца отображаются в соответствии с запросом:
nation_name market_segment order_year order_priority total_order_count total_revenue unique_customer_count ALGERIA AUTOMOBILE 1992 1-URGENT 375 59232423.66 298 ALGERIA AUTOMOBILE 1992 2-HIGH 328 47371891.08 269 ALGERIA AUTOMOBILE 1992 3-MEDIUM 346 52823195.87 262 ALGERIA AUTOMOBILE 1992 4-NOT SPECIFIED 365 52935998.34 288 ALGERIA AUTOMOBILE 1992 5-LOW 380 54920263.68 293 ALGERIA AUTOMOBILE 1993 1-URGENT 394 63145618.78 312 ALGERIA AUTOMOBILE 1993 2-HIGH 340 50737488.4 277 ALGERIA AUTOMOBILE 1993 3-MEDIUM 383 55871057.46 298 ALGERIA AUTOMOBILE 1993 4-NOT SPECIFIED 365 56424662.05 291 ALGERIA AUTOMOBILE 1993 5-LOW 363 54673249.06 283
Разрыв между миром аналитических и оперативных данных успешно преодолен.
8. Уборка
Очистка гаечного ключа
Удалите базу данных и экземпляр Spanner.
gcloud spanner instances delete $SPANNER_INSTANCE
Очистка GCS
Удалите сегмент GCS, созданный для хранения данных.
gcloud storage rm --recursive gs://$GCS_BUCKET_NAME
Очистка BigQuery
bq rm -r codelabs_retl
bq rm --connection --location=$GCP_REGION codelabs-retl-connection
Уберите снежинку
Удалите базу данных
- В меню слева, в разделе Horizon Catalog , наведите курсор на Catalog, затем щелкните Database Explorer.
- Нажмите на значок "..." справа от базы данных
CODELABS_RETL_DB, чтобы развернуть параметры, и выберите "Удалить". - В появившемся диалоговом окне подтверждения выберите «Удалить базу данных» .
Удалить рабочие книги
- В меню слева, в разделе «Работа с данными» , наведите курсор на «Проекты» , затем нажмите «Рабочие пространства».
- В боковой панели «Моя рабочая область» наведите курсор на файлы рабочей области, которые вы использовали для этой лабораторной работы, чтобы отобразить дополнительные параметры, и щелкните по ним.
- Выберите «Удалить» , а затем снова «Удалить» в появившемся диалоговом окне подтверждения.
- Выполните эти действия для всех файлов рабочей области SQL, созданных вами для этой лабораторной работы.
Удалить внешние тома
- В меню слева, в разделе Horizon Catalog , наведите курсор на Catalog , затем нажмите External Data.
- Нажмите
Справа от CODELABS_RETL_EXT_VOLвыберите «Удалить внешний том» , а затем снова выберите «Удалить внешний том» в диалоговом окне подтверждения.
9. Поздравляем!
Поздравляем с завершением практического занятия!
Что мы рассмотрели
- Как загрузить данные в Snowflake
- Как создать сегмент GCS
- Как экспортировать таблицу Snowflake в GCS в формате CSV
- Как настроить экземпляр Spanner
- Как загрузить CSV-таблицы в Spanner с помощью Dataflow