Google BigQuery
您可以使用 Google BigQuery 作為資料管道或複寫任務中的目標資料平台。在資料管道中,可以在目標平台執行各種 ELT 操作,包括儲存資料、轉換資料、建立資料超市和註冊資料。另一方面,複寫任務涉及將資料直接從來源系統複寫至具有基本轉換功能但不支援 ELT 操作的目標系統。
設定 Google BigQuery 作為目標涉及:
- 履行先決條件
- 設定連線至 Google BigQuery
設定連線至 Google BigQuery
若要設定連接器,進行下列事項:
-
在連線中,按一下建立連線。
-
選取 Google BigQuery 目標連接器,然後提供下列設定:
資料目標
資料閘道
只有在無法從 Qlik Cloud 存取目標資料庫且只能使用私人連結存取時 (例如若將在虛擬私人雲端中),才需要 資料移動閘道。在此情況下,選取您要用來存取目標資料庫的 資料移動閘道。
根據您的使用情況,這會是為了從資料來源移動資料而部署的相同或不同 資料移動閘道。
如需關於 資料移動閘道 使用案例的資訊,請參閱 何時需要 資料移動閘道? 和 常見使用案例。
若目標資料庫可從 Qlik Cloud 直接存取,請選取無。
連線屬性
服務帳戶金鑰:上傳建立 BigQuery 服務帳戶金鑰時下載的 JSON 檔案。
位置:上傳由 Qlik 建立的資料集的位置。若您選取其他,請在區域名稱欄位中輸入區域名稱。如需支援的區域名稱清單,請參閱 BigQuery 位置。
名稱
連線的顯示名稱。
必要條件
登陸資料所需的權限
自動建立目標資料集所需的權限:
如您要自動建立資料集,需要具備以下權限:
BigQuery > BigQuery 工作使用者
BigQuery > BigQuery 資料編輯者
目標資料集已存在時所需的權限:
如果資料集已存在,您需要執行以下步驟:
-
用以下權限建立服務帳戶:
BigQuery > BigQuery 工作使用者
-
前往您想使用的資料集,接著:
-
將您剛建立的服務帳戶新增為主體。
-
指派 BigQuery 資料編輯者角色。
-
驅動程式的設定
只有在透過 資料移動閘道 存取資料庫時,才需要驅動程式。在這類情況下,您需要將驅動程式安裝在 資料移動閘道 機器。
您可以使用驅動程式安裝公用程式 (建議) 或手動安裝 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 的 EULA。
-
執行下列其中一個動作:
- 重複按下 [Enter] 以緩慢瀏覽 EULA。
- 重複按下空格鍵以快速瀏覽 EULA。
- 按下 q 以結束授權文字並呈現 EULA 接受選項。
-
執行下列其中一個動作:
- 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。
- 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。
-
輸入「v」並按下 [Enter] 以再次檢視 EULA。
-
等待安裝完成 (以「完成!」指示),然後開始 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 的 EULA。
-
執行下列其中一個動作:
- 重複按下 [Enter] 以緩慢瀏覽 EULA。
- 重複按下空格鍵以快速瀏覽 EULA。
- 按下 q 以結束授權文字並呈現 EULA 接受選項。
-
執行下列其中一個動作:
- 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。
- 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。
- 輸入「v」並按下 [Enter] 以從頭檢閱 EULA。
-
等待安裝完成 (以「完成!」指示),然後開始 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 驅動程式
安裝 資料移動閘道 後,下載 SimbaODBCDriverforGoogleBigQuery_<version>-Linux.tar.gz 和 google-cloud-sdk-<version>-linux-x86_64.tar.gz 檔案。您可以在 /opt/qlik/gateway/movement/drivers/manifests/gbq.yaml 的 binary-artifacts 之下找到這些檔案的直接下載連結。下載完成後,將檔案複製到 資料移動閘道 機器。
-
停止 Data Movement gateway 服務:
sudo systemctl stop repagent
-
可自選,確認服務已停止:
sudo systemctl status repagent
-
擷取:
SimbaODBCDriverforGoogleBigQuery_<version>.tar.gz
變更為:
/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux
-
將檔案 GoogleBigQueryODBC.did 和 simba.googlebigqueryodbc.ini 移至 Simba ODBC 驅動程式目錄之下的 lib 目錄。
範例:
自以下位置移動檔案:
/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux/setup
變更為:
/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux/SimbaODBCDriverforGoogleBigQuery64_<version>/lib
-
以如下方式編輯 simba.googlebigqueryodbc.ini 檔案:
-
將
ErrorMessagesPath
變更為內含 ODBC 訊息的 XML 檔案路徑。預設位置是 :ErrorMessagesPath=/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux/SimbaODBCDriverforGoogleBigQuery64_<version>/ErrorMessages
- 將
DriverManagerEncoding
變更為UTF-16
。
-
-
新增前往位於 Data Movement gateway 分級目錄中 site_arep_login.sh 檔案的下列路徑:
匯出 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux/SimbaODBCDriverforGoogleBigQuery64_<version>/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-<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 驅動程式及其相依性
-
下載列於 /opt/qlik/gateway/movement/drivers/manifests/gbq.yaml 的 binary-artifacts 之下的下列 ZIP 檔案和 JAR 檔案:
- 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 檔案複製到 資料移動閘道 機器的下列資料夾,並將 SimbaJDBCDriverforGoogleBigQuery<version>.zip 中的 JAR 檔案擷取到相同資料夾:
/opt/qlik/gateway/movement/qcs_agents/qdi-db-commands/lib
-
執行 重新啟動服務 中描述的命令,以重新啟動 資料移動閘道 服務
連接埠
需開啟防火牆連接埠 443 才能進行輸入通訊。
資料類型
參數化資料類型的長度會以預設值設定:
-
STRING:8192 (長度)
-
BYTES:8192 (長度)
-
NUMERIC:精確度:38,縮放:9
-
BIGDECIMAL:精確度:76,縮放:38
下表顯示使用 Qlik Cloud 時支援的 Google BigQuery 資料類型和來自 Qlik Cloud 資料類型的預設對應。
會保留原生資料類型資訊,並顯示在資料集檢視的原生資料類型欄中。若看不見欄,您需要開啟資料集檢視的欄選擇器並選取原生資料類型欄。
Qlik Cloud 資料類型 | Google BigQuery 資料類型 |
---|---|
布林 |
BOOL |
位元組 |
位元組 (以位元組為單位的長度) |
日期 |
日期 |
時間 |
時間 |
日期時間 |
時間戳記 |
INT1 |
TINYINT |
INT2 | SMALLINT |
INT4 |
整數 |
INT8 | BIGINT |
數字 |
數字 (精確度,縮放) |
REAL4 |
FLOAT64 |
REAL8 |
FLOAT64 |
UINT1 |
TINYINT |
UINT2 |
SMALLINT |
UINT4 |
整數 |
UINT8 |
BIGINT |
字串 |
字串 (以位元組為單位的長度) |
WSTRING |
字串 (以位元組為單位的長度) |
BLOB |
位元組 |
NCLOB |
字串 |
CLOB |
字串 |
下列資料類型會轉換為 STRING:
-
陣列
-
STRUCT
-
JSON
-
地理
只有在自動驅動程式安裝無法成功完成時,才能嘗試手動安裝 driver。
限制和考慮事項
將資料移至 Google BigQuery 目標時,下列限制和考慮事項適用。
所有資料任務的限制和考慮事項
- 不支援下列 DDL:
- 捨棄欄
- 重新命名欄
- 變更欄資料類型
- 重新命名表格
不支援在沒有主要金鑰或唯一索引的情況下從來源表格擷取變更。如果您需要從此類表格中擷取變更,可以新增主要金鑰 使用轉換。此外,主要金鑰或唯一索引欄不能包含 NULL。如果您知道此類欄將填入 NULL 值,請定義轉換以將 NULL 變更為不可為 null 的值。
僅複寫任務的限制和考慮事項
- 不支援交易套用變更模式。
不支援將記錄記錄到例外表格錯誤處理選項,以套用衝突和資料錯誤。
透過下列任務設定配置,複寫任務將執行 DELETE (刪除) 操作,然後執行 INSERT (插入) 而不是 UPDATE (更新):
套用變更模式設定為批次最佳化。
未選取使用 SQL MERGE 套用變更選項。
套用衝突的 UPDATE 錯誤處理設定為:找不到套用 UPDATE 的記錄:INSERT 缺少的目標記錄。
由於 Google Cloud BigQuery 不支援回復,因此如果複寫任務無法插入更新的列,將會從目標刪除資料。