Google BigQuery
Можно использовать Google BigQuery как целевая платформа данных в конвейере данных или в задаче репликации. В конвейере данных можно выполнять различные операции ELT на целевой платформе, включая хранение, преобразование, регистрацию данных и создание киосков данных. С другой стороны, задача репликации подразумевает репликацию данных непосредственно из исходной системы в целевую с сохранением базовых функций преобразования, но без поддержки операций ELT.
Настройка Google BigQuery в качестве цели подразумевает следующее:
- Выполнение предварительных условий
- Настройка подключения к Google BigQuery
Настройка подключения к Google BigQuery
Чтобы настроить коннектор, выполните следующие действия:
-
В виде Подключения нажмите Создать подключение.
-
Выберите коннектор цели Google BigQuery , а затем задайте следующие настройки.
Цель данных
Шлюз данных
Data Movement Gateway требуется, только если целевая база данных недоступна из Qlik Cloud и доступна только по ссылке PrivateLink (например, если она расположена или в виртуальном частном облаке). В таком случае выберите Data Movement Gateway, через который требуется обращаться к целевой базе данных.
В зависимости от конкретной ситуации это будет либо тот же Data Movement Gateway, развернутый для перемещения данных, либо другой шлюз.
Для получения информации о сценариях применения Data Movement Gateway см. разделы Когда требуется Data Movement Gateway? и Общие случаи использования.
Если целевая база данных напрямую доступна из Qlik Cloud, выберите Нет.
Свойства подключения
Service account key (Ключ учетной записи службы): добавьте файл JSON, загруженный при создании ключа учетной записи службы.
Location (Местоположение): место, куда будет загружен набор данных, созданный в Qlik. В случае выбора Other (Другое) введите название региона в поле Region name (Название региона). Для получения списка поддерживаемых названий регионов см. документ BigQuery locations (Местоположения BigQuery).
Имя
Отображаемое имя подключения.
Предварительные требования
Разрешения, необходимые для промежуточного хранения данных
Разрешения, которые должны создаваться в целевом наборе данных автоматически:
Если наборы данных должны создаваться автоматически, требуются следующие разрешения:
BigQuery > BigQuery Job User
BigQuery > BigQuery Data Editor
Разрешения, которые требуются, если наборы данных уже существуют:
Если наборы данных существуют, выполните следующие действия:
-
Создайте учетную запись сервиса со следующим разрешением:
BigQuery > BigQuery Job User
-
Перейдите к набору данных, который планируется использовать, и затем:
-
Добавьте только что созданную учетную запись сервиса в качестве главного пользователя.
-
Присвойте роль BigQuery Data Editor.
-
Настройка драйвера
Драйвер требуется только в случае обращения к базе данных через Data Movement Gateway. В таком случае необходимо установить драйвер на компьютер Data Movement Gateway.
driver можно установить с помощью программы для установки драйверов (рекомендуется) или вручную. Ручную установку следует выполнять только в том маловероятном случае, если возникла проблема с программой для установки драйверов.
Использование программы для установки драйверов для установки драйвера
В этом разделе описывается процедура установки необходимого driverа. Она включает выполнение скрипта, который автоматически загружает, устанавливает и настраивает необходимый driver. Также можно выполнять скрипты для обновления и удаления driverа по необходимости.
Подготовка к установке
-
Убедитесь, что на сервере шлюза Перемещение данных установлена версия 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
-
На компьютере шлюза Перемещение данных измените рабочую папку на:
opt/qlik/gateway/movement/drivers/bin
-
Выполните следующую команду:
Синтаксис:
./install gbq
Если не удается загрузить driver (из-за ограничений доступа или технических проблем), появится сообщение с указанием места, откуда можно загрузить driver и куда его скопировать на компьютере шлюза Перемещение данных. После этого выполните команду 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
-
На компьютере шлюза Перемещение данных измените рабочую папку на:
opt/qlik/gateway/movement/drivers/bin
-
Выполните следующую команду:
Синтаксис:
./update gbq
Если не удается загрузить driver (из-за ограничений доступа или технических проблем), появится сообщение с указанием места, откуда можно загрузить driver и куда его скопировать на компьютере шлюза Перемещение данных. После этого выполните команду 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, выполните следующие действия.
-
Остановите все задачи, использующие данный коннектор.
-
На компьютере шлюза Перемещение данных измените рабочую папку на:
opt/qlik/gateway/movement/drivers/bin
-
Выполните следующую команду:
Синтаксис:
./uninstall gbq
driver будет удален.
Установка драйвера вручную
Установку driver вручную следует пытаться выполнить только в том случае, если автоматическая установка драйвера не завершилась успешно.
Необходимо установить и драйвер ODBC, и драйвер JDBC.
Установка драйвера ODBC
После установки Data Movement Gateway загрузите файлы SimbaODBCDriverforGoogleBigQuery_<версия>-Linux.tar.gz и google-cloud-sdk-<версия>-linux-x86_64.tar.gz. Прямые ссылки для загрузки этих файлов можно найти в разделе binary-artifacts в /opt/qlik/gateway/movement/drivers/manifests/gbq.yaml. После завершения загрузки скопируйте файлы на компьютер Data Movement Gateway.
-
Остановите службу Data Movement Gateway:
sudo systemctl stop repagent
-
Если нужно, подтвердите, что сервис остановлен:
sudo systemctl status repagent
-
Извлеките:
SimbaODBCDriverforGoogleBigQuery_<версия>.tar.gz
на:
/opt/SimbaODBCDriverforGoogleBigQuery_<версия>-Linux
-
Переместите файлы GoogleBigQueryODBC.did и simba.googlebigqueryodbc.ini в каталог lib, находящийся в каталоге драйвера Simba ODBC.
Пример:
Переместите файлы из:
/opt/SimbaODBCDriverforGoogleBigQuery_<версия>-Linux/setup
на:
/opt/SimbaODBCDriverforGoogleBigQuery_<версия>-Linux/SimbaODBCDriverforGoogleBigQuery64_<версия>/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_<версия>-Linux/SimbaODBCDriverforGoogleBigQuery64_<версия>/lib
-
Измените файл /etc/odbcinst.ini и добавьте путь к драйверу (например, путь, где установлен драйвер):
[ODBC Drivers]
Simba= Installed
Simba 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-<версия>-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/<версия>/google-cloud-bigquery-<версия>.jar
- https://repo1.maven.org/maven2/com/google/cloud/google-cloud-storage/<версия>/google-cloud-storage-<версия>.jar
- https://storage.googleapis.com/simba-bq-release/jdbc/SimbaJDBCDriverforGoogleBigQuery<версия>.zip
Скопируйте файлы JAR в следующую папку на компьютере Data Movement Gateway и извлеките файлы JAR из SimbaJDBCDriverforGoogleBigQuery<версия>.zip в ту же папку:
/opt/qlik/gateway/movement/qcs_agents/qdi-db-commands/lib
-
Перезапустите службу Data Movement Gateway, выполнив команду, описанную в Перезапуск службы
Порт
Для исходящего трафика необходимо открыть порт брандмауэра 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 |
INT1 |
TINYINT |
INT2 | SMALLINT |
INT4 |
INTEGER |
INT8 | BIGINT |
NUMERIC |
NUMERIC (точность, масштаб) |
REAL4 |
FLOAT64 |
REAL8 |
FLOAT64 |
UINT1 |
TINYINT |
UINT2 |
SMALLINT |
UINT4 |
INTEGER |
UINT8 |
BIGINT |
STRING |
STRING (длина в байтах) |
WSTRING |
STRING (длина в байтах) |
BLOB |
BYTES |
NCLOB |
STRING |
CLOB |
STRING |
Следующие типы данных преобразуются в тип STRING:
-
ARRAY;
-
STRUCT
-
JSON
-
GEOGRAPHY
Установку driver вручную следует пытаться выполнить только в том случае, если автоматическая установка драйвера не завершилась успешно.
Ограничения и замечания
При перемещении данных в целевой объект Google BigQuery применяются следующие ограничения и замечания:
Ограничения и замечания, связанные со всеми задачами данных
- Следующие DDL не поддерживаются:
- Отбросить столбец
- Переименовать столбец
- Изменить тип данных столбца
- Переименовать таблицу
Захват изменений из исходных таблиц без столбцов «Первичный ключ» или «Уникальный индекс» не поддерживается. Если требуется захватить изменения в таких таблицах, можно добавить столбец «Первичный ключ» с помощью преобразования. Кроме того, столбцы «Первичный ключ» или «Уникальный индекс» не могут содержать значения NULL. Если известно, что такие столбцы будут заполнены значениями NULL, определите преобразование, чтобы заменить их на ненулевые значения.
Ограничения и замечания, связанные только с задачами репликации
- Не поддерживается режим применения изменений Транзакционное.
Не поддерживается вариант обработки ошибок Вносить запись в таблицу исключений для конфликтов применения и ошибок данных.
При следующей конфигурации параметров задачи репликации будет выполняться операция DELETE (УДАЛИТЬ) с последующей операцией INSERT (ВСТАВИТЬ) вместо UPDATE (ОБНОВИТЬ):
Задан режим применения изменений Пакетная оптимизация.
Флажок Применять изменения с помощью операции SQL MERGE не установлен.
Для параметра Обработка ошибок операции UPDATE для конфликтов применения задано значение Не найдено записей для применения операции UPDATE: INSERT (ВСТАВИТЬ) недостающую целевую запись.
Поскольку Google Cloud BigQuery не поддерживает откат, то если задача репликации не сможет вставить обновленную строку, данные будут удалены из цели.