連線至 Spanner
BigQuery 管理員可以建立連線,存取 Spanner 資料。資料分析師可透過這個連線查詢 Spanner 中的資料。
事前準備
- 啟用 BigQuery Connection API。
-
如要取得連線至 Spanner 所需的權限,請要求管理員為您授予專案的 BigQuery 連線管理員 (
roles/bigquery.connectionAdmin
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
建立 Spanner 連線
選取下列選項之一:
主控台
前往「BigQuery」頁面
在「Explorer」窗格中,按一下
「新增資料」。「新增資料」對話方塊隨即開啟。
在「Filter By」(依條件篩選) 窗格的「Data Source Type」(資料來源類型) 區段中,選取「Databases」(資料庫)。
或者,您也可以在「Search for data sources」(搜尋資料來源) 欄位中輸入
Spanner
。在「精選資料來源」部分,按一下「Google Cloud Spanner」。
按一下「Google Cloud Spanner:BigQuery Federation」解決方案資訊卡。
在「外部資料來源」窗格中,輸入下列資訊:
- 在「連線類型」部分,選取「Cloud Spanner」。
- 在「Connection ID」(連線 ID) 專區中輸入連線資源的 ID。您可以使用英文字母,數字和底線。
- 在「位置類型」中,選取與外部資料來源區域相容的 BigQuery 位置 (或區域)。
- 選用:在「Friendly name」(好記名稱) 中輸入使用者容易記得的連線名稱,例如
My connection resource
。好記名稱可以是任何資料值,只要您日後需要修改時可以輕鬆識別連線資源即可。 - 選用:在「Description」(說明) 中輸入這項連線資源的說明。
- 在「Database name」(資料庫名稱) 中,輸入 Spanner 資料庫的名稱,格式如下:
"projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE"
- 選用:如要執行平行讀取,請選取「並行讀取資料」。Spanner 可以將特定查詢分成較小的片段 (稱為「分區」),並平行擷取分區。詳情請參閱 Spanner 說明文件中的「平行讀取資料」。這個選項只適用於下列查詢:執行計畫中第一個運算子為分散式聯集運算子。其他查詢則會傳回錯誤。如要查看 Spanner 查詢的查詢執行計畫,請參閱「瞭解 Spanner 如何執行查詢」。
- 選用:在「Database role」(資料庫角色) 中輸入 Spanner 資料庫角色的名稱。如果這個欄位不是空白,這個連線預設會使用這個資料庫角色查詢 Spanner。透過這項連線提交查詢的 Spanner 精細存取權控管使用者,必須由管理員授予這個角色的存取權,且資料庫角色必須對外部查詢中指定的所有結構定義物件具備
SELECT
權限。如要瞭解精細的存取權控管機制,請參閱「關於精細的存取權控管機制」。 - 選用:如要啟用 Data Boost,請選取「使用 Spanner Data Boost」。資料加速 可讓您執行分析查詢和資料匯出作業, 對已佈建的 BigQuery 執行個體現有工作負載幾乎沒有影響。如要啟用 Data Boost,請選取「Data Boost」和「Read data in parallel」(平行讀取資料)。
點選「建立連線」。
bq
如要建立連線,請使用 bq mk
指令搭配 --connection
旗標。
bq mk --connection \ --connection_type=CLOUD_SPANNER \ --properties='PROPERTIES' \ --location=LOCATION \ --display_name='FRIENDLY_NAME' \ --description 'DESCRIPTION' \ CONNECTION_ID
更改下列內容:
PROPERTIES
:包含下列欄位的 JSON 物件:"database"
:連線的 Spanner 資料庫指定為字串,格式如下:
"projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE"
。"use_parallelism"
:(選用) 如果true
,這個連線會執行平行讀取作業預設值為
false
。Spanner 可以將特定查詢分成較小的片段 (稱為「分區」),並平行擷取這些分區。詳情請參閱 Spanner 說明文件中的「平行讀取資料」。這個選項只適用於下列查詢:執行計畫中第一個運算子為分散式聯集運算子。其他查詢則會傳回錯誤。如要查看 Spanner 查詢的查詢執行計畫,請參閱「瞭解 Spanner 如何執行查詢」。"database_role"
:(選用) 如果不為空白,這個連線預設會使用這個資料庫角色查詢 Spanner。透過這項連線提交查詢的 Spanner 精細存取權控管使用者,必須由管理員授予這個角色的存取權,且資料庫角色必須對外部查詢中指定的所有結構定義物件具備SELECT
權限。如未指定,連線會使用 Spanner 的 IAM 預先定義角色進行驗證,且執行這項連線查詢的主體必須已獲授
roles/spanner.databaseReader
IAM 角色。如要瞭解精細的存取權控管機制,請參閱「關於精細的存取權控管機制」。
"useDataBoost"
:(選用) 如果true
,使用者可透過這個連線使用 Data Boost。Data Boost 可讓使用者在與佈建執行個體不同的獨立運算容量中,執行聯合查詢,避免影響現有工作負載。如要啟用資料加速功能,請將"useDataBoost"
設為true
,並將"use_parallelism"
設為true
。如要使用資料加速功能,透過這個連線執行查詢的主體必須已獲授
spanner.databases.useDataBoost
權限。根據預設,roles/spanner.admin
和roles/spanner.databaseAdmin
角色都具備這項權限。
LOCATION
:與外部資料來源區域相容的 BigQuery 位置。CONNECTION_ID
:連線資源的 ID連線 ID 可以包含英文字母、數字和底線。 如果您未提供連線 ID,BigQuery 會自動產生專屬 ID。
以下範例會建立名為
my_connection_id
的新連線資源。bq mk --connection \ --connection_type='CLOUD_SPANNER' \ --properties='{"database":"projects/my_project/instances/my_instance/databases/database1"}' \ --project_id=federation-test \ --location=us \ my_connection_id
API
在 ConnectionService
服務中呼叫 CreateConnection
方法。
與使用者共用連線
您可以授予下列角色,讓使用者查詢資料及管理連線:
roles/bigquery.connectionUser
:可讓使用者透過連線功能連結外部資料來源,並對其執行查詢。roles/bigquery.connectionAdmin
:允許使用者管理連線。
如要進一步瞭解 BigQuery 中的 IAM 角色和權限,請參閱預先定義的角色和權限一文。
選取下列選項之一:
主控台
前往「BigQuery」頁面
連線會列在專案的「External connections」(外部連線) 群組中。
在「Explorer」窗格中,依序點選專案名稱 >「外部連線」>「連線」。
在「詳細資料」窗格中,按一下「分享」即可分享連線。 接著,按照下列步驟操作:
在「連線權限」對話方塊中,新增或編輯主體,與其他主體共用連線。
按一下 [儲存]。
bq
您無法使用 bq 指令列工具共用連線。 如要共用連線,請使用 Google Cloud 控制台或 BigQuery Connections API 方法共用連線。
API
請使用 BigQuery Connections REST API 參考資料中的 projects.locations.connections.setIAM
方法,並提供 policy
資源的執行個體。
Java
在試行這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Java 設定說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
後續步驟
- 瞭解不同連線類型。
- 瞭解如何管理連線。
- 瞭解聯合查詢。
- 瞭解如何查詢 Spanner 資料。