使用遠端函式分析物件資料表

本文說明如何使用遠端函式,分析物件資料表中的非結構化資料。

總覽

您可以使用遠端函式,分析物件資料表所代表的非結構化資料。透過遠端函式,您可以呼叫在 Cloud Run functions 或 Cloud Run 上執行的函式,並編寫程式來存取下列資源:

  • Google 預先訓練的 AI 模型,包括 Cloud Vision API 和 Document AI。
  • 開放原始碼程式庫,例如 Apache Tika
  • 您自己的自訂模型。

如要使用遠端函式分析物件資料表資料,您必須在呼叫遠端函式時,為物件資料表中的物件產生並傳入簽署網址。這些簽署網址會授予遠端函式物件存取權。

所需權限

  • 如要建立遠端函式使用的連線資源,您必須具備下列權限:

    • bigquery.connections.create
    • bigquery.connections.get
    • bigquery.connections.list
    • bigquery.connections.update
    • bigquery.connections.use
    • bigquery.connections.delete
  • 如要建立遠端函式,您需要與 Cloud Functions 開發人員Cloud Run 開發人員角色相關聯的權限。

  • 如要叫用遠端函式,您需要「遠端函式」一文所述的權限。

  • 如要使用遠端函式分析物件資料表,您必須具備物件資料表的 bigquery.tables.getData 權限。

事前準備

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery, BigQuery Connection API, Cloud Run functions APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery, BigQuery Connection API, Cloud Run functions APIs.

    Enable the APIs

  8. 確認 BigQuery 管理員已建立連線,並設定 Cloud Storage 的存取權
  9. 建立遠端函式

    如需建立遠端函式的一般操作說明,請參閱「使用遠端函式」。

    建立遠端函式來分析物件資料表資料時,您必須傳入為物件資料表中的物件產生的簽署網址。如要這麼做,請使用 STRING 資料型別的輸入參數。簽署網址會以 HTTP POST 要求的 calls 欄位中的輸入資料形式,提供給遠端函式。要求範例如下:

    {
      // Other fields omitted.
      "calls": [
        ["https://storage.googleapis.com/mybucket/1.pdf?X-Goog-SignedHeaders=abcd"],
        ["https://storage.googleapis.com/mybucket/2.pdf?X-Goog-SignedHeaders=wxyz"]
      ]
    }
    

    您可以使用向已簽署網址發出 HTTP GET 要求的函式,在遠端函式中讀取物件。遠端函式可以存取物件,因為簽署的網址會在查詢字串中包含驗證資訊。

    指定遠端函式的 CREATE FUNCTION 陳述式時,建議將 max_batching_rows 選項設為 1,以避免 Cloud Run functions 超時,並提高處理平行化程度。

    範例

    下列 Cloud Run functions Python 程式碼範例會讀取儲存空間物件,並將內容長度傳回 BigQuery:

    import functions_framework
    import json
    import urllib.request
    
    @functions_framework.http
    def object_length(request):
      calls = request.get_json()['calls']
      replies = []
      for call in calls:
        object_content = urllib.request.urlopen(call[0]).read()
        replies.append(len(object_content))
      return json.dumps({'replies': replies})
    

    部署後,這個函式的端點會類似 https://us-central1-myproject.cloudfunctions.net/object_length

    下列範例說明如何根據這個 Cloud Run functions 函式建立 BigQuery 遠端函式:

    CREATE FUNCTION mydataset.object_length(signed_url STRING) RETURNS INT64
    REMOTE WITH CONNECTION `us.myconnection`
    OPTIONS(
      endpoint = "https://us-central1-myproject.cloudfunctions.net/object_length",
      max_batching_rows = 1
    );

    如需逐步操作說明,請參閱教學課程:使用遠端函式分析物件資料表

    呼叫遠端函式

    如要對物件資料表資料呼叫遠端函式,請在查詢的 select_list 中參照遠端函式,然後在 FROM 子句中呼叫 EXTERNAL_OBJECT_TRANSFORM 函式,為物件產生已簽署的網址。

    以下範例顯示典型的陳述式語法:

    SELECT uri, function_name(signed_url) AS function_output
    FROM EXTERNAL_OBJECT_TRANSFORM(TABLE my_dataset.object_table, ["SIGNED_URL"])
    LIMIT 10000;

    以下範例說明如何使用遠端函式,只處理物件表格內容的子集:

    SELECT uri, function_name(signed_url) AS function_output
    FROM EXTERNAL_OBJECT_TRANSFORM(TABLE my_dataset.object_table, ["SIGNED_URL"])
    WHERE content_type = "application/pdf";

    後續步驟

    瞭解如何對圖片物件資料表執行推論