管理連線

本文說明如何查看、列出、共用、編輯、刪除及排解 BigQuery 連線問題。

BigQuery 管理員可以建立及管理連線,用於連線至服務和外部資料來源。BigQuery 分析師可使用這些連線,針對外部資料來源提交查詢,不必將資料移至 BigQuery 或複製到 BigQuery。您可以建立下列類型的連結:

如要為專案建立預設連線,請參閱預設連線總覽

事前準備

必要的角色

如要取得管理連線所需的權限,請要求管理員授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

如要瞭解建立及使用預設連線所需的角色,請參閱「必要角色和權限」。

這些預先定義的角色具備執行本文所述工作所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

  • 查看連線詳細資料:bigquery.connections.get
  • 列出所有連線:bigquery.connections.list
  • 編輯及刪除連結:bigquery.connections.update
  • 分享連線:bigquery.connections.setIamPolicy

列出所有連線

選取下列選項之一:

控制台

  1. 前往「BigQuery」頁面

    前往「BigQuery」

    連線會列在專案中,位於「連線」群組。

  2. 點選左側窗格中的 「Explorer」

    醒目顯示的「Explorer」窗格按鈕。

    如果沒有看到左側窗格,請按一下「展開左側窗格」圖示 開啟窗格。

  3. 在「Explorer」窗格中,按一下專案名稱,然後點選「Connections」,即可查看所有連線的清單。

bq

輸入 bq ls 指令並指定 --connection 旗標。您可以視需要指定 --project_id--location 標記,識別要列出的連線專案和位置。

bq ls --connection --project_id=PROJECT_ID --location=REGION

更改下列內容:

  • PROJECT_ID:您的 Google Cloud 專案 ID
  • REGION連線區域

API

使用 REST API 參考資料章節中的 projects.locations.connections.list 方法

Java

在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

import com.google.cloud.bigquery.connection.v1.ListConnectionsRequest;
import com.google.cloud.bigquery.connection.v1.LocationName;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import java.io.IOException;

// Sample to get list of connections
public class ListConnections {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    listConnections(projectId, location);
  }

  static void listConnections(String projectId, String location) throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      LocationName parent = LocationName.of(projectId, location);
      int pageSize = 10;
      ListConnectionsRequest request =
          ListConnectionsRequest.newBuilder()
              .setParent(parent.toString())
              .setPageSize(pageSize)
              .build();
      client
          .listConnections(request)
          .iterateAll()
          .forEach(con -> System.out.println("Connection Id :" + con.getName()));
    }
  }
}

查看連線詳細資料

建立連線後,您可以取得連線設定的相關資訊。這些設定包括您在建立移轉時提供的值。

選取下列選項之一:

控制台

  1. 前往「BigQuery」頁面

    前往「BigQuery」

  2. 連線會列在專案中,位於「連線」群組。

  3. 點選左側窗格中的 「Explorer」

    醒目顯示的「Explorer」窗格按鈕。

  4. 在「Explorer」窗格中,按一下專案名稱,然後點選「Connections」,即可查看所有連線的清單。

  5. 按一下連線即可查看詳細資料。

bq

輸入 bq show 指令並指定 --connection 旗標。(選用) 使用連線的專案 ID 和區域,限定連線 ID。

bq show --connection PROJECT_ID.REGION.CONNECTION_ID

更改下列內容:

  • PROJECT_ID:您的 Google Cloud 專案 ID
  • REGION連線區域
  • CONNECTION_ID:連線 ID

API

使用 REST API 參考資料章節中的 projects.locations.connections.get 方法

Java

在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

import com.google.cloud.bigquery.connection.v1.Connection;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigquery.connection.v1.GetConnectionRequest;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import java.io.IOException;

// Sample to get connection
public class GetConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    getConnection(projectId, location, connectionId);
  }

  static void getConnection(String projectId, String location, String connectionId)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ConnectionName name = ConnectionName.of(projectId, location, connectionId);
      GetConnectionRequest request =
          GetConnectionRequest.newBuilder().setName(name.toString()).build();
      Connection response = client.getConnection(request);
      System.out.println("Connection info retrieved successfully :" + response.getName());
    }
  }
}

與使用者共用連線

您可以授予下列角色,讓使用者查詢資料及管理連線:

  • roles/bigquery.connectionUser:可讓使用者透過連線功能連結外部資料來源,並對其執行查詢。

  • roles/bigquery.connectionAdmin:讓使用者管理連線。

如要進一步瞭解 BigQuery 中的 IAM 角色和權限,請參閱預先定義的角色和權限一文。

選取下列選項之一:

控制台

  1. 前往「BigQuery」頁面

    前往「BigQuery」

    連線會列在專案中,位於「連線」群組。

  2. 點選左側窗格中的 「Explorer」

    醒目顯示的「Explorer」窗格按鈕。

    如果沒有看到左側窗格,請按一下「展開左側窗格」圖示 開啟窗格。

  3. 按一下專案,然後依序點選「連線」和所需連線。

  4. 在「詳細資料」窗格中,按一下「共用」即可共用連線。 接著,按照下列步驟操作:

    1. 在「連線權限」對話方塊中,新增或編輯主體,與其他主體共用連線。

    2. 按一下 [儲存]

bq

您無法使用 bq 指令列工具共用連線。 如要共用連線,請使用 Google Cloud 控制台或 BigQuery Connections API 方法共用連線。

API

請使用 BigQuery Connections REST API 參考資料中的 projects.locations.connections.setIAM 方法,並提供 policy 資源的執行個體。

Java

在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

import com.google.api.resourcenames.ResourceName;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
import java.io.IOException;

// Sample to share connections
public class ShareConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    shareConnection(projectId, location, connectionId);
  }

  static void shareConnection(String projectId, String location, String connectionId)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ResourceName resource = ConnectionName.of(projectId, location, connectionId);
      Binding binding =
          Binding.newBuilder()
              .addMembers("group:example-analyst-group@google.com")
              .setRole("roles/bigquery.connectionUser")
              .build();
      Policy policy = Policy.newBuilder().addBindings(binding).build();
      SetIamPolicyRequest request =
          SetIamPolicyRequest.newBuilder()
              .setResource(resource.toString())
              .setPolicy(policy)
              .build();
      client.setIamPolicy(request);
      System.out.println("Connection shared successfully");
    }
  }
}

編輯連結

連線會使用建立者的憑證。如要變更與連線相關聯的使用者,可以更新使用者的憑證。當建立連結的使用者已不在您的機構時,這個方法十分實用。

您無法編輯連線的下列元素:

  • 連線類型
  • 連線 ID
  • 位置

選取下列選項之一:

控制台

  1. 前往「BigQuery」頁面

    前往「BigQuery」

    連線會列在專案的「Connections」(連線) 群組中。

  2. 點選左側窗格中的 「Explorer」

    醒目顯示的「Explorer」窗格按鈕。

  3. 在「Explorer」窗格中,按一下專案名稱,然後點選「Connections」,即可查看所有連線的清單。

  4. 如要查看詳細資料,請按一下連線。

  5. 在「連線資訊」部分中,按一下「編輯詳細資料」。接著,按照下列步驟操作:

    1. 在「編輯連線」對話方塊中,編輯連線詳細資料,包括使用者憑證。

    2. 按一下「更新連結」

bq

輸入 bq update 指令並提供連線旗標 --connection。必須提供完整的 connection_id

  bq update --connection --connection_type='CLOUD_SQL'
      --properties='{"instanceId" : "INSTANCE",
      "database" : "DATABASE", "type" : "MYSQL" }'
      --connection_credential='{"username":"USERNAME", "password":"PASSWORD"}'
      PROJECT.REGION.CONNECTION_ID
 

更改下列內容:

  • INSTANCE:Cloud SQL 執行個體
  • DATABASE:資料庫名稱
  • :Cloud SQL 資料庫的使用者名稱USERNAME
  • PASSWORD:Cloud SQL 資料庫的密碼
  • PROJECT:專案 ID Google Cloud
  • REGION連線區域
  • CONNECTION_ID:連線 ID

舉例來說,下列指令會更新 ID 為 federation-test 的專案,以及連線 ID 為 test-mysql 的連線。

bq update --connection --connection_type='CLOUD_SQL'
    --properties='{"instanceId" : "federation-test:us-central1:new-mysql",
    "database" : "imdb2", "type" : "MYSQL" }'
    --connection_credential='{"username":"my_username",
    "password":"my_password"}' federation-test.us.test-mysql

API

請參閱 REST API 參考資料章節中的 projects.locations.connections.patch 方法,並提供 connection 的執行個體。

Java

在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

import com.google.cloud.bigquery.connection.v1.Connection;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigquery.connection.v1.UpdateConnectionRequest;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to update connection
public class UpdateConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    String description = "MY_DESCRIPTION";
    Connection connection = Connection.newBuilder().setDescription(description).build();
    updateConnection(projectId, location, connectionId, connection);
  }

  static void updateConnection(
      String projectId, String location, String connectionId, Connection connection)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ConnectionName name = ConnectionName.of(projectId, location, connectionId);
      FieldMask updateMask = FieldMaskUtil.fromString("description");
      UpdateConnectionRequest request =
          UpdateConnectionRequest.newBuilder()
              .setName(name.toString())
              .setConnection(connection)
              .setUpdateMask(updateMask)
              .build();
      Connection response = client.updateConnection(request);
      System.out.println("Connection updated successfully :" + response.getDescription());
    }
  }
}

刪除連線

選取下列選項之一:

控制台

  1. 前往「BigQuery」頁面

    前往「BigQuery」

    連線會列在專案的「Connections」(連線) 群組中。

  2. 點選左側窗格中的 「Explorer」

    醒目顯示的「Explorer」窗格按鈕。

  3. 在「Explorer」窗格中,按一下專案名稱,然後點選「Connections」,即可查看所有連線的清單。

  4. 按一下連線即可查看詳細資料。

  5. 在詳細資料窗格中,按一下「刪除」即可刪除連線。

  6. 在「刪除連結?」對話方塊中輸入 delete,確認要刪除連結。

  7. 按一下「Delete」(刪除)

bq

輸入 bq rm 指令並提供連線旗標 --connection。必須提供完整的 connection_id

bq rm --connection PROJECT_ID.REGION.CONNECTION_ID

更改下列內容:

  • PROJECT_ID:您的 Google Cloud 專案 ID
  • REGION連線區域
  • CONNECTION_ID:連線 ID

API

請參閱 REST API 參考資料章節中的 projects.locations.connections.delete 方法

Java

在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigquery.connection.v1.DeleteConnectionRequest;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import java.io.IOException;

// Sample to delete a connection
public class DeleteConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionName = "MY_CONNECTION_NAME";
    deleteConnection(projectId, location, connectionName);
  }

  static void deleteConnection(String projectId, String location, String connectionName)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ConnectionName name = ConnectionName.of(projectId, location, connectionName);
      DeleteConnectionRequest request =
          DeleteConnectionRequest.newBuilder().setName(name.toString()).build();
      client.deleteConnection(request);
      System.out.println("Connection deleted successfully");
    }
  }
}

後續步驟