Анализируйте и визуализируйте данные о транзакциях по кредитным картам в Bigtable с помощью BigQuery и Looker.

1. Обзор

В этой кодовой лаборатории вы проведете анализ потока данных о транзакциях по кредитным картам, записываемых в Bigtable. Вы узнаете, как использовать потоки изменений Bigtable в шаблоне BigQuery для экспорта данных в режиме реального времени. Затем вы познакомитесь с методами запроса журнала потока изменений и переформатирования данных для создания информационной панели с помощью Looker.

Эта лаборатория кода предназначена для технических пользователей, знакомых с Bigtable, использующих инструменты командной строки и службы потоковой передачи событий.

426dc59200875a20.png

В этой кодовой лаборатории показано, как сделать следующее:

  • Создайте таблицу Bigtable с включенным потоком изменений.
  • Создайте набор данных BigQuery.
  • Разверните Bigtable change streams to BigQuery.
  • Запросите поток событий в BigQuery.
  • Визуализируйте поток событий с помощью Looker.

На этой диаграмме показана архитектура системы, которую вы будете развертывать.

336e940307d0e0a.png

2. Настройка проекта

  1. В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud .

eb5309715175de69.png

  1. Убедитесь, что для вашего проекта Google Cloud включена оплата .
  2. Посетите эту предварительно заполненную страницу включения API , чтобы включить необходимые API для Dataflow, Bigtable, BigQuery, Looker и Cloud Storage.

3. Создайте набор данных BigQuery.

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

  1. В консоли Google Cloud перейдите на страницу BigQuery .
  2. На панели «Проводник» найдите имя своего проекта и щелкните меню переполнения (три вертикальные точки рядом с идентификатором проекта).
  3. Нажмите Создать набор данных .

122bc1a411b8dc63.png

  1. На панели «Создать набор данных» выполните следующие действия:
  • В качестве идентификатора набора данных введите bigtable_bigquery_tutorial .
  • Остальные настройки по умолчанию оставьте такими, какие они есть.
  • Нажмите Создать набор данных .

4. Создайте таблицу Bigtable с включенным потоком изменений.

Bigtable — это горизонтально масштабируемая служба баз данных NoSQL с малой задержкой, и одним из распространенных вариантов ее использования является обслуживание финансовых данных. Здесь вы собираетесь создать таблицу, в которой будут храниться транзакции по кредитным картам. Bigtable может обрабатывать записи транзакций с высокой пропускной способностью по всему миру и даже использовать эти данные для обнаружения мошенничества в режиме реального времени .

  1. В консоли Google Cloud перейдите на страницу Bigtable Instances .
  2. Щелкните идентификатор экземпляра, который вы используете для этого руководства. Если у вас нет доступного экземпляра, создайте экземпляр с выбранным вами именем в ближайшем к вам регионе. Для всего остального вы можете использовать конфигурации по умолчанию.

a2e8de7b66dc42e.png

  1. На левой панели навигации нажмите Таблицы .
  2. Нажмите Создать таблицу .

9c267c00f93747c4.png

  • Назовите таблицу retail-database .
  • Добавьте семейство столбцов с именем transactions .
  • Выберите «Включить поток изменений» .
  • Оставьте для политики сбора мусора и периода хранения значения по умолчанию.
  • Нажмите Создать .

696cd1399c354816.png

5. Инициализируйте конвейер данных для захвата потока изменений.

Производительность Bigtable оптимальна для чтения точек и сканирования диапазона строк, но аналитика в масштабе всей таблицы может создавать нагрузку на обслуживающую мощность и ресурсы ЦП. BigQuery отлично подходит для анализа всей таблицы, поэтому решение, которое вы здесь будете использовать, — двойная запись. Это означает, что вы будете записывать свои данные в Bigtable и BigQuery, что является распространенным методом. Это не потребует дополнительного написания кода, поскольку вы будете использовать Bigtable change streams to BigQuery Dataflow: когда данные записываются в Bigtable, конвейер запишет запись об изменении в BigQuery. Как только данные попадут в BigQuery, вы сможете выполнять оптимизированные запросы ко всему набору данных, которые не повлияют на производительность обслуживания ваших данных в Bigtable.

f4cd9d8faf10ce77.png

  1. На странице Bigtable Tables найдите retail-database вашей таблицы.
  2. В столбце Изменить поток нажмите Подключиться .
  3. В диалоговом окне «Подключение к потоку данных» выберите BigQuery .
  4. Нажмите Создать задание потока данных .
  5. В предоставленные поля параметров введите значения параметров. Вам не нужно предоставлять какие-либо дополнительные параметры.
  • Установите для идентификатора профиля приложения Cloud Bigtable значение default .
  • Установите для набора данных BigQuery значение bigtable_bigquery_tutorial .
  1. Нажмите «Выполнить задание» .
  2. Прежде чем продолжить, подождите, пока статус задания не станет «Запуск» или «Выполняется» . После постановки задания в очередь это может занять около пяти минут. Страница будет автоматически обновляться. Этот шаблон создает потоковое задание, поэтому он может непрерывно обрабатывать новые данные, записываемые в Bigtable, пока задание не будет остановлено вручную.

a04908b37c6fe96b.png

6. Запишите данные в Bigtable.

Теперь вы запишете год транзакций по кредитным картам в свою таблицу Bigtable. Этот пример набора данных включает в себя такую ​​информацию, как номер кредитной карты, название и идентификатор продавца, а также сумму. В реальном приложении для обработки кредитных карт эти данные будут передаваться в вашу базу данных в режиме реального времени при выполнении каждой транзакции.

  1. Откройте Cloud Shell, нажав кнопку в правом верхнем углу облачной консоли.

f6395329b04ecb64.png

  1. При появлении запроса примите запрос на авторизацию Cloud Shell.
  2. Загрузите набор данных.
gsutil cp gs://cloud-bigtable-public-datasets/change-streams-tutorial/cc-transactions-2023.csv .
  1. Установите переменные среды в командной строке
PROJECT_ID=your-project-id
BIGTABLE_INSTANCE_ID=your-bigtable-instance-id
  1. Используйте интерфейс командной строки cbt , чтобы записать количество транзакций по кредитным картам в таблицу retail-database .
cbt -instance=$BIGTABLE_INSTANCE_ID -project=$PROJECT_ID import \
retail-database cc-transactions-2023.csv  column-family=transactions

На выходе будет сказано

Done importing 10000 rows.

7. Просмотрите журналы изменений в BigQuery.

  1. В консоли Google Cloud перейдите на страницу BigQuery .
  2. На панели «Проводник» разверните свой проект и набор данных bigtable_bigquery_tutorial .
  3. Щелкните таблицу retail-database_changelog . Возможно, вам придется обновить набор данных, если таблица отсутствует.
  4. Чтобы просмотреть журнал изменений, нажмите « Предварительный просмотр» .

аа97ff01f944832.png

Попробуйте несколько запросов

Теперь вы можете выполнить несколько запросов к этому набору данных, чтобы получить некоторую информацию. Здесь представлены SQL-запросы, но в разделе «Запросить журнал изменений Bigtable» в документации BigQuery содержится дополнительная информация о том, как писать запросы к данным журнала изменений.

Найти одну транзакцию

Используйте следующий запрос для поиска данных для одной конкретной транзакции.

SELECT *
FROM `bigtable_bigquery_tutorial.retail-database_changelog`
WHERE row_key="3034-442694-3052#2023-03-03T14:50:46.824Z"

Вы увидите, что каждый записанный столбец в BigQuery превратился в отдельную строку.

Найдите количество покупок в каждой категории.

Используйте следующий запрос, чтобы подсчитать количество покупок в каждой категории.

SELECT value as category, count(*) as `number of sales`
FROM `bigtable_bigquery_tutorial.retail-database_changelog`
WHERE column="category"
GROUP BY category

Переформатировать данные

Чтобы реконструировать каждую транзакцию в одну строку таблицы BigQuery, вы сведете данные и сохраните результат в новой таблице. Это более удобный формат для запроса.

CREATE VIEW bigtable_bigquery_tutorial.retail_transactions_view AS (
    SELECT *, parse_numeric(amount) as sales_dollars FROM (
      SELECT row_key, timestamp, column, value
      FROM `bigtable_bigquery_tutorial.retail-database_changelog`
      )
      PIVOT (
      MAX(value)
      FOR column in ("merchant", "amount", "category", "transaction_date")
    )
)

Создайте панель инструментов Looker

  1. Нажмите Перейти к просмотру , чтобы перейти на страницу сведений о новом представлении.
  2. Нажмите «Экспорт» .
  3. Выберите «Исследовать с помощью Looker Studio».

bb45482e9101b0f.png

8. Добавьте диаграммы на панель мониторинга.

Теперь вы можете отображать информацию в виде графика, чтобы ее было легче усваивать и публиковать в виде отчета. Вы добавите на панель мониторинга три диаграммы:

  • Суммы транзакций с течением времени
  • Общее количество транзакций для каждого продавца
  • Процент транзакций по категориям

426dc59200875a20.png

Настроить страницу

  1. Щелкните каждую существующую диаграмму и нажмите «Удалить», чтобы удалить ее.
  2. Выберите «Свойства» в правой части страницы, чтобы изменить данные графика.

Добавьте диаграммы

Суммы транзакций с течением времени

  1. Нажмите Добавить диаграмму и создайте диаграмму временных рядов.
  2. Установите для параметра «Дата_транзакции» значение transaction_date .
  1. Установите показатель sales_dollars .

372bdf2a2bcdb817.png

Общее количество транзакций для каждого продавца

  1. Нажмите Добавить диаграмму и создайте таблицу.
  2. Установите для параметра merchant .
  3. Установите для метрики значение sales_dollars

Процент транзакций по категориям

  1. Нажмите Добавить диаграмму и создайте круговую диаграмму.
  2. Установите для параметра category .
  3. Установите для метрики значение sales_dollars

Смотрите изменения в реальном времени

Потратьте некоторое время и изучите значения на графиках. Вы можете щелкнуть конкретных продавцов в таблице или определенные категории в таблице, что приведет к фильтрации всех диаграмм по этим конкретным значениям, что даст вам больше информации. Далее вы можете записать больше данных и посмотреть, как этот график будет обновляться в реальном времени.

  1. Вернитесь в свою Cloud Shell.
  2. Загрузите и запишите второй набор данных.
gsutil cp gs://cloud-bigtable-public-datasets/change-streams-tutorial/cc-transactions-2024-jan.csv .

cbt -instance=$BIGTABLE_INSTANCE_ID -project=$PROJECT_ID import \
retail-database cc-transactions-2024-jan.csv  column-family=transactions
  1. Вернитесь на панель управления Looker и обновите данные с помощью команды Ctrl+Shift+E или нажмите «Обновить данные» в меню вида . Теперь вы должны увидеть на графиках данные за январь 2024 года.

Помимо этого, вы можете создать множество вариантов графиков и показателей. Подробнее читайте в документации Looker .

9. Очистка

Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом руководстве, либо удалите проект, содержащий ресурсы, либо сохраните проект и удалите отдельные ресурсы.

Остановить конвейер потока изменений

  1. В консоли Google Cloud перейдите на страницу Dataflow Jobs .
  2. Выберите задание потоковой передачи из списка заданий.
  3. В навигации нажмите «Стоп» .
  4. В диалоговом окне «Остановить задание» выберите «Отмена» , а затем нажмите «Остановить задание» .

Удалить ресурсы Bigtable

Если вы создали экземпляр Bigtable для этого руководства, вы можете удалить его или очистить созданную таблицу.

  1. В консоли Google Cloud перейдите на страницу Bigtable Instances .
  2. Щелкните идентификатор экземпляра, который вы используете для этого руководства.
  3. На левой панели навигации нажмите Таблицы .
  4. Найдите таблицу retail-database .
  5. Нажмите «Изменить» .
  6. Снимите флажок Включить поток изменений .
  7. Нажмите Сохранить .
  8. Откройте дополнительное меню для таблицы.
  9. Нажмите «Удалить» и введите имя таблицы для подтверждения.
  10. Необязательно: удалите экземпляр, если вы создали новый для этого руководства.

Удалить набор данных BigQuery

  1. В консоли Google Cloud перейдите на страницу BigQuery .
  2. На панели «Проводник» найдите набор данных bigtable_bigquery_tutorial и щелкните его.
  3. Нажмите «Удалить» , введите «Удалить», а затем нажмите «Удалить» для подтверждения.

Что дальше