Google BigQuery
Google BigQuery можно использовать как целевую платформу данных в конвейере данных или в задаче репликации. В конвейере данных можно выполнять различные операции ELT на целевой платформе, включая хранение, преобразование, регистрацию данных и создание киосков данных. С другой стороны, задача репликации подразумевает репликацию данных непосредственно из исходной системы в целевую с сохранением базовых функций преобразования, но без поддержки операций ELT.
Настройка Google BigQuery в качестве целевой платформы включает в себя:
- Выполнение предварительных требований
- Настройка подключения к Google BigQuery
Настройка подключения к Google BigQuery
Чтобы настроить коннектор, выполните следующие действия:
-
В разделе Подключения нажмите Создать подключение.
-
Выберите целевой коннектор Google BigQuery и укажите следующие параметры:
Целевая база данных
Шлюз данных
Шлюз движения данных требуется, только если целевая база данных недоступна из Qlik Cloud и доступна только по ссылке PrivateLink (например, если она расположена или в виртуальном частном облаке). В таком случае выберите Шлюз движения данных, через который требуется обращаться к целевой базе данных.
В зависимости от конкретной ситуации это будет либо тот же Шлюз движения данных, развернутый для перемещения данных, либо другой шлюз.
Для получения информации о сценариях применения Шлюз движения данных см. разделы Когда требуется Шлюз движения данных? и Общие случаи использования.
Если целевая база данных доступна напрямую из Qlik Cloud, выберите Нет.
Свойства подключения
Ключ сервисного аккаунта: Загрузите файл JSON, который был загружен при создании ключа сервисного аккаунта BigQuery.
Местоположение: Куда загрузить набор данных, созданный Qlik. Если выбрано Другое, введите имя региона в поле Имя региона. Список поддерживаемых имен регионов см. в разделе Местоположения BigQuery.
Имя
Отображаемое имя для подключения.
Предварительные требования
Разрешения, необходимые для промежуточного хранения данных
Разрешения, необходимые для автоматического создания целевого набора данных:
Если вы хотите, чтобы набор данных создавался автоматически, требуются следующие разрешения:
BigQuery > BigQuery Job User
BigQuery > BigQuery Data Editor
Разрешения, необходимые, если целевой набор данных уже существует:
Если набор данных уже существует, необходимо выполнить следующие действия:
-
Создайте сервисный аккаунт со следующим разрешением:
BigQuery > BigQuery Job User
-
Перейдите к набору данных, который вы хотите использовать, а затем:
-
Добавьте только что созданный сервисный аккаунт в качестве участника.
-
Назначьте роль BigQuery Data Editor.
-
Установка драйвера
Драйвер требуется только в том случае, если доступ к базе данных осуществляется через Шлюз движения данных. В этом случае необходимо установить драйвер на компьютере Шлюз движения данных.
driver можно установить с помощью программы для установки драйверов (рекомендуется) или вручную. Ручную установку следует выполнять только в том маловероятном случае, если возникла проблема с программой для установки драйверов.
Использование утилиты установки драйвера для установки драйвера
В этом разделе описывается процедура установки необходимого driverа. Она включает выполнение скрипта, который автоматически загружает, устанавливает и настраивает необходимый driver. Также можно выполнять скрипты для обновления и удаления driverа по необходимости.
Подготовка к установке
-
Убедитесь, что на сервере шлюза Data Movement установлена версия Python 3.6 или более поздняя.
Python предустанавливается в большинстве дистрибутивов Linux. Чтобы проверить, какая версия Python установлена в системе, выполните следующую команду:
python3 --version
Установка driver
Чтобы загрузить и установить driver, выполните следующие действия.
-
Остановите службу Data Movement Gateway:
sudo systemctl stop repagent
-
Если нужно, подтвердите, что сервис остановлен:
sudo systemctl status repagent
Статус должен быть следующим:
Active: inactive (dead) since <timestamp> ago
-
На компьютере шлюза Data Movement измените рабочую папку на:
opt/qlik/gateway/movement/drivers/bin
-
Выполните следующую команду:
Синтаксис:
./install gbq
Если не удается загрузить driver (из-за ограничений доступа или технических проблем), появится сообщение с указанием места, откуда можно загрузить driver и куда его скопировать на компьютере шлюза Data Movement. После этого выполните команду install gbq еще раз.
В противном случае откроется лицензионное соглашение с конечным пользователем driverа.
-
Выполните одно из следующих действий:
- Нажмите клавишу [Enter] несколько раз, чтобы медленно прокрутить лицензионное соглашение.
- Нажимайте клавишу «Пробел» несколько раз, чтобы быстро прокрутить лицензионное соглашение.
- Нажмите клавишу «q», чтобы закрыть текст лицензионного соглашения и перейти к шагу принятия/отклонения.
-
Выполните одно из следующих действий:
- Введите «y» и нажмите клавишу [Enter], чтобы принять лицензионное соглашение и запустить установку.
- Введите «n» и нажмите клавишу [Enter], чтобы отклонить лицензионное соглашение и отменить установку.
-
Введите «v» и нажмите клавишу [Enter], чтобы снова открыть лицензионное соглашение для просмотра.
-
Дождитесь завершения установки (появится сообщение «Завершено!»), а затем запустите службу Data Movement Gateway:
sudo systemctl start repagent
-
При необходимости подтвердите, что служба запущена.
sudo systemctl status repagent
Статус должен быть следующим:
Active: active (running) since <timestamp> ago
Будет установлен driver.
Обновление driverа
Выполните команду обновления, если требуется удалить предыдущие версии driverа перед установкой предоставленной версии driverа.
Чтобы загрузить и обновить driver, выполните следующие действия.
-
Остановите службу Data Movement Gateway:
sudo systemctl stop repagent
-
Если нужно, подтвердите, что сервис остановлен:
sudo systemctl status repagent
Статус должен быть следующим:
Active: inactive (dead) since <timestamp> ago
-
На компьютере шлюза Data Movement измените рабочую папку на:
opt/qlik/gateway/movement/drivers/bin
-
Выполните следующую команду:
Синтаксис:
./update gbq
Если не удается загрузить driver (из-за ограничений доступа или технических проблем), появится сообщение с указанием места, откуда можно загрузить driver и куда его скопировать на компьютере шлюза Data Movement. После этого выполните команду update gbq еще раз.
В противном случае откроется лицензионное соглашение с конечным пользователем driverа.
-
Выполните одно из следующих действий:
- Нажмите клавишу [Enter] несколько раз, чтобы медленно прокрутить лицензионное соглашение.
- Нажимайте клавишу «Пробел» несколько раз, чтобы быстро прокрутить лицензионное соглашение.
- Нажмите клавишу «q», чтобы закрыть текст лицензионного соглашения и перейти к шагу принятия/отклонения.
-
Выполните одно из следующих действий:
- Введите «y» и нажмите клавишу [Enter], чтобы принять лицензионное соглашение и запустить установку.
- Введите «n» и нажмите клавишу [Enter], чтобы отклонить лицензионное соглашение и отменить установку.
- Введите «v» и нажмите клавишу [Enter], чтобы снова просмотреть лицензионное соглашение от начала.
-
Дождитесь завершения установки (появится сообщение «Завершено!»), а затем запустите службу Data Movement Gateway:
sudo systemctl start repagent
-
При необходимости подтвердите, что служба запущена.
sudo systemctl status repagent
Статус должен быть следующим:
Active: active (running) since <timestamp> ago
Будет удален старый driver и установлен новый driver.
Удаление driverа
Выполните команду удаления, если требуется удалить driver.
Чтобы удалить driver, выполните следующие действия.
-
Остановите все задачи, использующие данный коннектор.
-
На компьютере шлюза Data Movement измените рабочую папку на:
opt/qlik/gateway/movement/drivers/bin
-
Выполните следующую команду:
Синтаксис:
./uninstall gbq
driver будет удален.
Установка драйвера вручную
Установку driver вручную следует пытаться выполнить только в том случае, если автоматическая установка драйвера не завершилась успешно.
Необходимо установить как драйвер ODBC, так и драйвер JDBC.
Установка драйвера ODBC
После установки Шлюз движения данных загрузите файлы SimbaODBCDriverforGoogleBigQuery_<version>-Linux.tar.gz и google-cloud-sdk-<version>-linux-x86_64.tar.gz. Прямые ссылки для загрузки этих файлов можно найти в разделе binary-artifacts в файле /opt/qlik/gateway/movement/drivers/manifests/gbq.yaml. После завершения загрузки скопируйте файлы на компьютер Шлюз движения данных.
-
Остановите службу Data Movement Gateway:
sudo systemctl stop repagent
-
При необходимости убедитесь, что служба остановлена:
sudo systemctl status repagent
-
Извлеките:
SimbaODBCDriverforGoogleBigQuery_<version>.tar.gz
в:
/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux
-
Переместите файлы GoogleBigQueryODBC.did и simba.googlebigqueryodbc.ini в каталог lib в каталоге драйвера Simba ODBC.
Пример:
Переместите файлы из:
/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux/setup
в:
/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux/SimbaODBCDriverforGoogleBigQuery64_<version>/lib
-
Отредактируйте файл simba.googlebigqueryodbc.ini следующим образом:
-
Измените
ErrorMessagesPathна путь к файлу XML, содержащему сообщения ODBC. Расположение по умолчанию:ErrorMessagesPath=/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux/SimbaODBCDriverforGoogleBigQuery64_<version>/ErrorMessages - Измените
DriverManagerEncodingнаUTF-16.
-
-
Добавьте следующий путь в файл site_arep_login.sh, расположенный в каталоге bin Data Movement Gateway:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux/SimbaODBCDriverforGoogleBigQuery64_<version>/lib
-
Отредактируйте файл /etc/odbcinst.ini и добавьте путь к драйверу (т. е. путь, по которому установлен драйвер):
[ODBC Drivers]Simba= InstalledSimba ODBC Driver for Google BigQuery = Installed[Simba ODBC Driver for Google BigQuery]Description=Simba ODBC Driver for Google BigQuery(64-bit)Driver=/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux/SimbaODBCDriverforGoogleBigQuery64_<version>/lib/libgooglebigqueryodbc_sb64.so -
Установите google-cloud-sdk-<version>-linux-x86_64.tar.gz.
-
Запустите службу Data Movement Gateway:
sudo systemctl start repagent
-
При необходимости убедитесь, что служба запущена:
sudo systemctl status repagent
Статус должен быть следующим:
Active: active (running) since <timestamp> ago
Статус должен быть следующим:
Active: inactive (dead) since <timestamp> ago
Установка драйвера JDBC и его зависимостей
-
Загрузите следующий ZIP-файл и JAR-файлы, перечисленные в разделе binary-artifacts в файле /opt/qlik/gateway/movement/drivers/manifests/gbq.yaml:
- https://repo1.maven.org/maven2/com/google/cloud/google-cloud-bigquery/<version>/google-cloud-bigquery-<version>.jar
- https://repo1.maven.org/maven2/com/google/cloud/google-cloud-storage/<version>/google-cloud-storage-<version>.jar
- https://storage.googleapis.com/simba-bq-release/jdbc/SimbaJDBCDriverforGoogleBigQuery<version>.zip
Скопируйте JAR-файлы в следующую папку на компьютере Шлюз движения данных и извлеките JAR-файлы из SimbaJDBCDriverforGoogleBigQuery<version>.zip в ту же папку:
/opt/qlik/gateway/movement/qcs_agents/qdi-db-commands/lib
-
Перезапустите службу Шлюз движения данных, выполнив команду, описанную в разделе Перезапуск службы
Порт
Для исходящего трафика необходимо открыть порт брандмауэра 443.
Типы данных
Длина параметризованного типа данных будет задана значениями по умолчанию:
-
STRING: 8192 (длина)
-
BYTES: 8192 (длина)
-
NUMERIC: Прецизионность: 38, Масштаб: 9
-
BIGDECIMAL: Прецизионность: 76, Масштаб: 38
В следующей таблице показаны типы данных Google BigQuery, которые поддерживаются при использовании Qlik Cloud, и сопоставление по умолчанию из типов данных Qlik Cloud.
Информация о собственном типе данных сохраняется и отображается в столбце Собственный тип данных в видах набора данных. Если этот столбец не отображается, необходимо открыть инструмент «Управление столбцами» в виде набора данных и выбрать столбец Собственный тип данных.
| Типы данных Qlik Cloud | Типы данных Google BigQuery |
|---|---|
|
BOOLEAN |
BOOL |
|
BYTES |
BYTES (длина в байтах) |
|
DATE |
DATE |
|
TIME |
TIME |
|
DATETIME |
TIMESTAMP Если масштаб > 7: STRING(37) В противном случае прецизионность всегда равна 6, даже если во входном столбце используется прецизионность ниже 6. |
|
INT1 |
TINYINT |
| INT2 | SMALLINT |
|
INT4 |
INTEGER |
| INT8 | BIGINT |
|
NUMERIC |
NUMERIC (прецизионность, масштаб) |
|
REAL4 |
FLOAT64 |
|
REAL8 |
FLOAT64 |
|
UINT1 |
TINYINT |
|
UINT2 |
SMALLINT |
|
UINT4 |
INTEGER |
|
UINT8 |
BIGINT |
|
STRING |
STRING Если подтип — JSON, то: JSON |
|
WSTRING |
STRING Если подтип — JSON, то: JSON |
|
BLOB |
BYTES |
|
NCLOB |
STRING Если подтип — JSON, то: JSON |
|
CLOB |
STRING Если подтип — JSON, то: JSON |
| ARRAY | STRING |
| STRUCT | STRING |
| GEOGRAPHY | STRING |
| JSON | JSON |
Ограничения и рекомендации для всех задач данных
- Следующие операции DDL не поддерживаются:
- Удалить столбец
- Переименовать столбец
- Изменить тип данных столбца
-
Захват изменений из исходных таблиц без первичного ключа или уникального индекса не поддерживается. Если вам нужно захватывать изменения из таких таблиц, вы можете добавить первичный ключ с помощью преобразования. Кроме того, столбцы первичного ключа или уникального индекса не могут содержать значения NULL. Если вам известно, что такие столбцы будут заполняться значениями NULL, определите преобразование, чтобы изменить значения NULL на значения, не допускающие NULL.
-
Поля JSON не поддерживаются в качестве первичных ключей.
Ограничения и рекомендации только для задач репликации
- Режим применения изменений Транзакционный не поддерживается.
-
При следующей конфигурации настроек задачи задача репликации будет выполнять операцию DELETE, за которой следует INSERT, вместо UPDATE:
-
Для режима применения изменений установлено значение Оптимизированный для пакетов.
-
Параметр Применять изменения с помощью SQL MERGE не выбран.
-
Для параметра Обработка ошибок UPDATE для конфликтов применения установлено значение: Запись для применения UPDATE не найдена: ВСТАВИТЬ недостающую целевую запись.
Поскольку Google Cloud BigQuery не поддерживает откат, в случае, если задача репликации не сможет вставить обновленную строку, данные будут удалены из целевой системы.
-