使用遠端函式分析物件資料表
總覽
您可以使用遠端函式,分析物件資料表所代表的非結構化資料。透過遠端函式,您可以呼叫在 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
權限。
事前準備
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, Cloud Run functions APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, Cloud Run functions APIs.
- 確認 BigQuery 管理員已建立連線,並設定 Cloud Storage 的存取權。
建立遠端函式
如需建立遠端函式的一般操作說明,請參閱「使用遠端函式」。
建立遠端函式來分析物件資料表資料時,您必須傳入為物件資料表中的物件產生的簽署網址。如要這麼做,請使用 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";
後續步驟
瞭解如何對圖片物件資料表執行推論。