透過 Pub/Sub 共用串流

BigQuery 共用功能 (舊稱 Analytics Hub) 可讓您共用 Pub/Sub 主題,在內部和外部組織之間管理及發布即時串流資料。您可以使用資料交換和清單,將大量 Pub/Sub 主題分類及分組,並大規模佈建存取權。

用途

您可以分享串流資料,支援下列產業的用途:

  • 金融服務:
    • 即時分享快速變動的工具價格、報價和訂單。
    • 偵測洗錢和付款詐欺行為。
    • 支援交易風險運算。
  • 零售和民生消費用品業 (CPG):
    • 即時管理商店商品目錄。
    • 提供個人化行銷和客戶服務。
    • 動態調整價格。
    • 監控社群媒體管道。
    • 最佳化實體商店版面配置。
  • 醫療保健:
    • 運用預測演算法,即時監控病患並分析風險。
    • 使用穿戴式醫療器材監控生命徵象。
    • 自動擷取、建構、儲存及處理病患、專業醫護人員和機構管理部門的資料。
  • 電信:
    • 監控網路健康狀態並預測故障。
    • 探索使用者行為模式,更準確地找出裝置和天線的位置。

串流共用角色

共用 Pub/Sub 主題的身分與存取權管理 (IAM) 角色,與共用 BigQuery 資料集的角色類似:

  • 管理員:管理交換作業和清單的權限、瀏覽權限和成員資格。這個角色類似於 Analytics Hub 管理員 (roles/analyticshub.admin) IAM 角色。
  • 共用主題發布者:建立、管理及授予共用 Pub/Sub 主題項目的存取權。這個角色類似於 Analytics Hub 發布者 (roles/analyticshub.publisher) 或 Analytics Hub 清單管理員 (roles/analyticshub.listingAdmin) IAM 角色。發布者是使用者,而非建立訊息並傳送至主題的發布者應用程式。
  • 共用主題訂閱者:訂閱共用主題資訊,並設定 Pub/Sub 傳送主題訊息的方式。這個角色類似於 Analytics Hub 訂閱者 (roles/analyticshub.subscriber) 或 Analytics Hub 訂閱項目擁有者 (roles/analyticshub.subscriptionOwner) IAM 角色。視 Pub/Sub 傳送訊息資料的方式而定,您可能需要額外權限,例如 Pub/Sub 服務帳戶權限,才能將訊息寫入 BigQuery。

架構

下圖顯示 Pub/Sub 資源的發布者和訂閱者如何與 BigQuery 共用功能互動:

顯示共用主題發布端、訂閱端和 BigQuery sharing 之間互動的工作流程。
圖 1:共用主題發布者和訂閱者工作流程與 Pub/Sub 主題。

透過 Pub/Sub 共用串流時,會使用下列元件:

共用主題
共用主題是 BigQuery sharing 中共用 Pub/Sub 主題的單位。共用主題發布者可以建立或使用現有的 Pub/Sub 主題,將訊息資料發布給訂閱者。BigQuery sharing 不會複製來源 Pub/Sub 主題。
清單
發布者將共用主題新增至交換作業時,BigQuery sharing 會建立參照共用主題的清單。
廣告交易平台
交換庫是參照共用主題的清單邏輯分組。
連結的 Pub/Sub 訂閱項目
當訂閱者訂閱含有共用主題的清單時,BigQuery sharing 會在訂閱者的專案中建立連結的 Pub/Sub 訂閱項目。在共用主題發布者的專案中,訂閱項目會同時顯示為 Pub/Sub 訂閱項目和 BigQuery sharing 資訊清單訂閱項目。

限制

透過 Pub/Sub 共用串流有下列限制:

  • 共用主題最多支援 10,000 個 Pub/Sub 訂閱項目。這項限制包含連結的 Pub/Sub 訂閱項目,以及在 BigQuery sharing 以外建立的 Pub/Sub 訂閱項目,例如直接在 Pub/Sub 建立的訂閱項目。
  • 共用主題會編入 Knowledge Catalog 索引,但您無法依資源類型篩選。

  • 系統會擷取用量指標,並在共用 Pub/Sub 主題和訂閱項目的指標資訊主頁中顯示,但 INFORMATION_SCHEMA.SHARED_DATASET_USAGE 檢視畫面不提供這些指標。

    這些指標包括:

    • 發布訊息數
    • 發布要求
    • 發布處理量 (以位元組為單位)
    • 前 5 名訂閱項目
    • 擷取的位元組數

    如要監控指標,請參閱「在 Cloud Monitoring 中監控 Pub/Sub」。

事前準備

在 BigQuery sharing 共用或訂閱 Pub/Sub 主題前,請先啟用必要 API。

啟用 Analytics Hub API

如要啟用 Analytics Hub API,請選取下列其中一個選項:

控制台

前往 Google Cloud 控制台的「API Library」(API 程式庫) 頁面,為 Google Cloud 專案啟用 Analytics Hub API。

啟用 Analytics Hub API

gcloud

使用 gcloud services enable 指令啟用 Analytics Hub API:

gcloud services enable analyticshub.googleapis.com

啟用 Pub/Sub API

如要啟用 Pub/Sub API,請選取下列其中一個選項:

控制台

前往 Google Cloud 控制台的「API Library」(API 程式庫) 頁面,為 Google Cloud 專案啟用 Pub/Sub API。

啟用 Pub/Sub API

gcloud

使用 gcloud services enable 指令啟用 Pub/Sub API:

gcloud services enable pubsub.googleapis.com

共用主題發布者工作流程

共用主題發布者可以執行下列操作:

  • 建立清單,將共用主題新增至資料交換。
  • 更新商店資訊。
  • 刪除產品資訊。
  • 分享商店資訊。
  • 管理產品資訊的訂閱項目。
  • 從清單中移除訂閱者。

其他發布者權限

如要執行共用主題發布者工作,您必須具備交換所或項目的 Analytics Hub 發布者角色 (roles/analyticshub.publisher)。如要查看您在組織內各專案中可存取的所有資料交換,必須具備 resourcemanager.organizations.get 權限。

此外,您還需要具備要列出的 Pub/Sub 主題 pubsub.topics.setIamPolicy 權限。如要共用附加結構定義的主題,您必須將主題附加結構定義的 pubsub.schemas.get 權限,授予 BigQuery sharing 訂閱端。這項權限可讓 BigQuery sharing 訂閱者剖析 Pub/Sub 訂閱項目中的訊息。

建立共用主題清單

如要建立資訊清單,將共用主題新增至資料交換,請選取下列其中一個選項:

控制台

  1. 前往 Google Cloud 控制台的「Sharing (Analytics Hub)」(共用 (Analytics Hub)) 頁面。

    前往「共用 (Analytics Hub)」

    頁面會列出您可以查看的所有資料交換。

  2. 按一下要建立資訊清單的資料交換作業名稱。

  3. 按一下「 建立商店資訊」。

  4. 在「Create listing」(建立產品資訊) 頁面的「Resource type」(資源類型) 清單中,選取「Pub/Sub Topic」(Pub/Sub 主題)。

  5. 在「Shared topic」(共用主題) 清單中,選取現有的 Pub/Sub 主題,或按一下「Create a topic」(建立主題)。

  6. 在「Listing details」(產品資訊詳細資料) 頁面的「Display name」(顯示名稱) 欄位中,輸入產品資訊名稱。

  7. 選用:輸入下列詳細資料:

    • 類別:最多可選取五個最能代表產品資訊的類別。共用主題訂閱者可以根據這些類別篩選清單。

    • 資料相依性:指定要將資料發布至共用主題的區域。共用主題訂閱者可根據這項資訊,從相同區域讀取資料,盡可能降低或避免 Pub/Sub 網路輸出費用。如要進一步瞭解輸出費用,請參閱「資料移轉費用」。

    • 圖示:上傳產品資訊的 PNG 或 JPEG 圖示。圖示必須小於 512 KiB,尺寸不得超過 512 x 512 像素。

    • 說明:輸入產品資訊的簡短說明。共用主題訂閱者可以根據說明搜尋清單。

    • 公開搜尋:在 BigQuery 共用目錄中,啟用清單的公開搜尋功能。建立清單後,您也必須將清單的 Analytics Hub 檢視者角色 (roles/analyticshub.viewer) 授予 allUsers 或 allAuthenticatedUsers。如果資料交換已公開,清單會沿用這些權限,您不需採取任何行動。

    • Documentation > Markdown:輸入其他資訊,例如相關說明文件的連結,以及其他有助於共用主題訂閱者使用主題的詳細資料。

  8. 選用:在「Listing contact information」(產品資訊聯絡資訊) 頁面中,輸入下列詳細資料:

    • 主要聯絡人:輸入產品資訊主要聯絡人的電子郵件地址或網址。

    • 要求存取權聯絡資訊:輸入電子郵件地址或網址,以便共用主題訂閱者使用 intake 表單與您聯絡。

    • Provider:展開「Provider」部分,並在下列欄位中指定詳細資料:

      • Provider name:輸入主題提供者的名稱。
      • 供應商主要聯絡人:輸入主題供應商主要聯絡人的電子郵件地址或網址。

      共用主題訂閱者可以根據資料供應商篩選清單。

    • 發布商:展開「Publisher」(發布商) 區段,並在下列欄位中指定詳細資料:

      • 發布者名稱:輸入您或貴機構的名稱,做為共用主題發布者。
      • 發布者主要聯絡人:輸入共用主題發布者主要聯絡人的電子郵件地址或網址。
  9. 查看「Listing preview」頁面。

  10. 如要發布產品資訊,請按一下「發布」。

API

請使用 projects.locations.dataExchanges.listings.create 方法:

POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataExchanges/DATAEXCHANGE_ID/listings?listingId=LISTING_ID

更改下列內容:

  • PROJECT_ID:資料交換所在專案的 ID。
  • LOCATION:資料交換作業的位置。如要進一步瞭解支援 BigQuery 共用的位置,請參閱「支援的區域」。
  • DATAEXCHANGE_ID:資料交換 ID。
  • LISTING_ID:產品資訊 ID。

在要求主體中提供產品資訊詳細資料。如果要求成功,回應主體會包含產品詳細資料。

如要進一步瞭解如何使用 API 執行產品資訊相關工作,請參閱 projects.locations.dataExchanges.listings 方法。

更新商店資訊

如要更新商店資訊,請選取下列任一選項:

控制台

  1. 前往 Google Cloud 控制台的「Sharing (Analytics Hub)」(共用 (Analytics Hub)) 頁面。

    前往「共用 (Analytics Hub)」

  2. 按一下含有該項目的資料交換作業名稱。

  3. 按一下要更新的商店資訊。

  4. 按一下「 編輯商店資訊」。

  5. 修改欄位值。除了資訊清單的共用主題外,您可以修改所有值。

  6. 按一下「儲存」即可儲存變更。

API

請使用 projects.locations.dataExchanges.listings.patch 方法:

PATCH https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataExchanges/DATAEXCHANGE_ID/listings/LISTING_ID?updateMask=UPDATEMASK

更改下列內容:

  • PROJECT_ID:資料交換所在專案的 ID。
  • LOCATION:資料交換作業的位置。如要進一步瞭解支援 BigQuery 共用的位置,請參閱「支援的區域」。
  • DATAEXCHANGE_ID:資料交換 ID。
  • LISTING_ID:產品資訊 ID。
  • UPDATEMASK:要更新的欄位清單。如要更新多個值,請使用以半形逗號分隔的清單。

在要求主體中指定更新的值。

如要進一步瞭解如何使用 API 執行產品資訊相關工作,請參閱 projects.locations.dataExchanges.listings 方法。

刪除商店資訊

如果 Pub/Sub 主題有有效的訂閱項目,您就無法刪除共用該主題的清單。刪除共用主題資訊前,請先撤銷所有有效訂閱項目。刪除後即無法復原。

如要刪除商家資訊,請選取下列其中一個選項:

控制台

  1. 前往 Google Cloud 控制台的「Sharing (Analytics Hub)」(共用 (Analytics Hub)) 頁面。

    前往「共用 (Analytics Hub)」

  2. 按一下含有該項目的資料交換作業名稱。

  3. 按一下要刪除的產品資訊。

  4. 按一下「刪除」圖示 。

  5. 在「Delete listing?」(要刪除產品資訊嗎?) 對話方塊中,輸入 delete 確認刪除。

  6. 點選「刪除」。

API

請使用 projects.locations.dataExchanges.listings.delete 方法:

DELETE https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataExchanges/DATAEXCHANGE_ID/listings/LISTING_ID

更改下列內容:

  • PROJECT_ID:資料交換所在專案的 ID。
  • LOCATION:資料交換作業的位置。如要進一步瞭解支援 BigQuery 共用的位置,請參閱「支援的區域」。
  • DATAEXCHANGE_ID:資料交換 ID。
  • LISTING_ID:產品資訊 ID。

如要進一步瞭解如何使用 API 執行產品資訊相關工作,請參閱 projects.locations.dataExchanges.listings 方法。

分享商店資訊

如要授予使用者私人產品資訊的存取權,請為該產品資訊設定個人或群組的 IAM 政策。如果是商業產品資訊,資料交換庫必須公開。公開資料交換庫中的項目會顯示在所有Google Cloud 使用者 (allAuthenticatedUsers) 的 BigQuery sharing 中。如要允許使用者要求商業項目的存取權,請授予 Analytics Hub 檢視者角色 (roles/analyticshub.viewer)。

如要授予使用者查看或訂閱產品資訊的權限,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Sharing (Analytics Hub)」(共用 (Analytics Hub)) 頁面。

    前往「共用 (Analytics Hub)」

  2. 按一下含有該項目的資料交換作業名稱。

  3. 按一下要分享的產品資訊。

  4. 按一下「 設定權限」。

  5. 如要新增主體,請按一下 「Add principal」(新增主體)。

  6. 在「New principals」(新增主體) 欄位中,根據產品類型輸入詳細資料:

    • 如果是私人產品,請輸入要授予存取權的主體電子郵件地址。
    • 如要公開產品,請輸入 allAuthenticatedUsers。
  7. 在「Select a role」(選取角色) 選單中,選取「Analytics Hub」,然後根據資訊清單類型選取下列其中一個角色:

    • 如果是商業項目,請選取「Analytics Hub 檢視者」。具備這個角色的使用者可以查看清單並要求存取權。
    • 如果是私人或非商業用途的公開項目,請選取「Analytics Hub Subscriber」(Analytics Hub 訂閱者)。具備這個角色的使用者可以訂閱您的產品資訊。
  8. 點按「儲存」,儲存變更。

管理訂閱項目

如要允許使用者訂閱含有共用主題的清單,您必須授予他們清單的 Analytics Hub 訂閱者 (roles/analyticshub.subscriber) 和 Analytics Hub 訂閱項目擁有者 (roles/analyticshub.subscriptionOwner) 角色。

如要授予清單的這些角色,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Sharing (Analytics Hub)」(共用 (Analytics Hub)) 頁面。

    前往「共用 (Analytics Hub)」

  2. 按一下含有該項目的資料交換作業名稱。

  3. 按一下要管理訂閱項目的產品資訊。

  4. 按一下「 設定權限」。

  5. 如要新增主體,請按一下 「Add principal」(新增主體)。

  6. 在「New principals」(新增主體) 欄位中,輸入要新增的訂閱者使用者名稱或電子郵件地址。

  7. 在「Select a role」(選取角色) 選單中,依序選取 「Analytics Hub」>「Analytics Hub Subscriber」(Analytics Hub 訂閱者)。

  8. 按一下 「Add another role」(新增其他角色)。

  9. 在「Select a role」(請選取角色) 選單中,依序選取 「Analytics Hub」>「Analytics Hub Subscription Owner」(Analytics Hub 訂閱項目擁有者)。

  10. 點按「儲存」,儲存變更。

您隨時可以按一下「Set permissions」(設定權限),更新或刪除訂閱者。

撤銷訂閱

如要從 BigQuery sharing 中移除共用主題資訊的訂閱項目,請選取下列其中一個選項:

控制台

  1. 如要列出資訊項目的共用主題訂閱者,請按照查看所有訂閱項目中的Google Cloud 控制台操作說明進行。

  2. 如要查看資料交換的所有訂閱項目,請按一下「Subscriptions」(訂閱項目) 分頁標籤。

  3. 找出要移除的訂閱項目並勾選旁邊的核取方塊,或選取所有訂閱項目,然後按一下「Revoke」(撤銷)。

  4. 在「Revoke subscription?」(要撤銷訂閱項目嗎?) 對話方塊中,輸入 revoke 確認撤銷。

  5. 按一下 [撤銷]。

API

請使用 projects.locations.subscriptions.revoke 方法:

POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/subscriptions/SUBSCRIPTION_ID:revoke

更改下列內容:

  • PROJECT_ID:專案 ID,用於存放您要移除的訂閱項目。
  • LOCATION:訂閱項目的位置。
  • SUBSCRIPTION_ID:要移除的訂閱項目 ID。

從 BigQuery sharing 撤銷訂閱項目後,共用主題訂閱端就不會再收到共用主題的訊息資料。Pub/Sub 訂閱項目會與共用主題中斷連結。如果直接從 Pub/Sub 刪除訂閱項目,BigQuery sharing 訂閱項目仍會保留,您必須在 BigQuery sharing 中刪除訂閱項目。

訂閱者工作流程

BigQuery sharing 訂閱者可以查看及訂閱產品。訂閱共用主題的清單,會在專案中建立一個連結的 Pub/Sub 訂閱項目。Pub/Sub 訂閱項目會顯示在共用主題發布者的專案中。

其他訂閱者權限

如要執行訂閱者工作,您必須在專案、交換或資訊清單層級,具備 Analytics Hub 訂閱者角色 (roles/analyticshub.subscriber)。

訂閱共用主題清單

如要訂閱含有共用主題的清單,請選取下列其中一個選項:

控制台

  1. 如要查看可用的產品資訊,請按照「查看產品資訊」中的步驟操作。

  2. 瀏覽清單,然後按一下要訂閱的項目。系統會顯示對話方塊,內含商店資訊詳細資料。

  3. 按一下「訂閱」,開啟「建立訂閱項目」對話方塊。

  4. 如果專案尚未啟用 Analytics Hub API,系統會顯示錯誤訊息,並提供啟用 API 的連結。按一下「Enable Analytics Hub API」(啟用 Analytics Hub API)。

  5. 在「Create subscription」(建立訂閱項目) 對話方塊中,指定下列詳細資料:

    • 訂閱項目 ID:指定要建立的訂閱項目名稱。
    • 傳送類型:選取訊息資料的傳送方式。
    • 訊息保留時間:設定訊息保留時間。
    • 到期時間範圍:設定訂閱項目在閒置多久後到期 (如有)。
    • 確認期限:設定確認期限。
    • 訂閱項目篩選器:設定訊息的篩選器語法。
    • 僅傳送一次:啟用「僅傳送一次」功能。
    • 訊息排序:使用排序鍵啟用訊息排序功能。
    • Dead-letter:啟用將無法傳遞的訊息轉送至 dead-letter 主題的功能。
    • 重試政策:設定重試政策。

    如要進一步瞭解 Pub/Sub 訂閱項目屬性,請參閱「訂閱項目屬性」。

  6. 如要儲存變更,請按一下「建立」。BigQuery sharing 會在您的專案中建立連結的 Pub/Sub 訂閱項目。

API

請使用 projects.locations.dataExchanges.listings.subscribe 方法:

POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataExchanges/DATAEXCHANGE_ID/listings/LISTING_ID:subscribe

更改下列內容:

  • PROJECT_ID:專案 ID,用於存放您要訂閱的清單。
  • LOCATION:要訂閱的產品資訊位置。
  • DATAEXCHANGE_ID:資料交換 ID,其中包含您要訂閱的清單。
  • LISTING_ID:要訂閱的清單 ID。

在要求主體中,指定要建立的連結 Pub/Sub 訂閱項目詳細資料。如果要求成功,回應主體會包含訂閱詳細資料。

如要進一步瞭解 Pub/Sub 訂閱項目,請參閱「訂閱項目總覽」。

定價

共用主題發布者透過 BigQuery sharing 列出及共用主題,不需支付額外費用。共用主題發布者須支付發布處理量費用 (即寫入共用主題的總位元組數),以及任何適用的網路輸出費用。共用主題訂閱者須支付訂閱處理量費用 (從連結訂閱項目讀取的總位元組數),以及任何適用的網路輸出費用。詳情請參閱「Pub/Sub 定價」。

VPC Service Controls

如果共用主題來自設有 VPC Service Controls perimeter 的專案,請設定適當的輸入和輸出規則,授予共用主題發布者和訂閱者存取權。

後續步驟