查詢 Amazon S3 資料
本文說明如何查詢儲存在 Amazon Simple Storage Service (Amazon S3) BigLake 資料表中的資料。
事前準備
確認您有 Amazon S3 BigLake 資料表。
必要的角色
如要查詢 Amazon S3 BigLake 資料表,請確認 BigQuery API 的呼叫端具有下列角色:
- BigQuery Connection 使用者 (
roles/bigquery.connectionUser) - BigQuery 資料檢視者 (
roles/bigquery.dataViewer) - BigQuery 使用者 (
roles/bigquery.user)
呼叫者可以是您的帳戶或 Amazon S3 連線服務帳戶。視權限而定,您可以將這些角色授予自己,或請管理員授予您這些角色。如要進一步瞭解如何授予角色,請參閱查看可針對資源授予的角色。
如要查看查詢 Amazon S3 BigLake 資料表所需的確切權限,請展開「必要權限」部分:
所需權限
bigquery.connections.usebigquery.jobs.createbigquery.readsessions.create(只有在使用 BigQuery Storage Read API 讀取資料時才需要)bigquery.tables.getbigquery.tables.getData
查詢 Amazon S3 BigLake 資料表
建立 Amazon S3 BigLake 資料表後,您可以使用 GoogleSQL 語法查詢,就像查詢標準 BigQuery 資料表一樣。
快取的查詢結果會儲存在 BigQuery 暫存資料表中。如要查詢臨時 BigLake 資料表,請參閱「查詢臨時 BigLake 資料表」。如要進一步瞭解 BigQuery Omni 的限制和配額,請參閱限制和配額。
在 BigQuery Omni 區域建立預留容量時,請使用 Enterprise 版。如要瞭解如何使用版本建立預留項目,請參閱建立預留項目。
對 BigLake Amazon S3 資料表執行查詢:
SQL
如要查詢資料表,請按照下列步驟操作:
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
SELECT * FROM DATASET_NAME.TABLE_NAME;
更改下列內容:
DATASET_NAME:您建立的資料集名稱TABLE_NAME:您建立的資料表名稱按一下「執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
Java
在試行這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Java 設定說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
查詢臨時資料表
BigQuery 會建立臨時資料表來儲存查詢結果。如要從臨時資料表擷取查詢結果,可以使用 Google Cloud 控制台或 BigQuery API。
選取下列選項之一:
主控台
查詢參照外部雲端資料的 BigLake 資料表時,您可以在 Google Cloud 控制台中查看查詢結果。
API
如要使用 API 查詢 BigLake 資料表,請按照下列步驟操作:
- 建立職缺物件。
- 呼叫
jobs.insert方法,以非同步方式執行查詢,或呼叫jobs.query方法,以同步方式執行查詢,並傳入Job物件。 - 傳遞指定的工作參考資料,並使用
jobs.getQueryResults讀取資料列;傳遞查詢結果的指定資料表參考資料,並使用tabledata.list方法。
查詢 _FILE_NAME 虛擬資料欄
以外部資料來源為基礎的資料表可提供名為 _FILE_NAME 的虛擬資料欄。這個資料欄含有該列所屬檔案的完整路徑。此資料欄僅適用於參照儲存在 Cloud Storage、Google 雲端硬碟、Amazon S3 和 Azure Blob 儲存體中的外部資料的資料表。
系統會保留 _FILE_NAME 資料欄名稱,這表示您無法在任何資料表中使用該名稱建立資料欄。如要選取 _FILE_NAME 的值,您必須使用別名。下方範例查詢示範如何透過指派別名 fn 給虛擬資料欄的方式來選取 _FILE_NAME。
bq query \
--project_id=PROJECT_ID \
--use_legacy_sql=false \
'SELECT
name,
_FILE_NAME AS fn
FROM
`DATASET.TABLE_NAME`
WHERE
name contains "Alex"' 更改下列內容:
-
PROJECT_ID是有效的專案 ID (如果您使用 Cloud Shell,或是在 Google Cloud CLI 中設定預設專案,則此為選用標記) -
DATASET是儲存永久外部資料表的資料集名稱 -
TABLE_NAME是永久外部資料表的名稱
如果查詢在 _FILE_NAME 虛擬資料欄上設有篩選述詞,BigQuery 會嘗試略過不符合篩選條件的檔案。使用 _FILE_NAME 虛擬資料欄建構查詢述詞時,適用與
使用虛擬資料欄查詢擷取時間分區資料表
類似的建議。
後續步驟
- 瞭解如何在 BigQuery 中使用 SQL。
- 瞭解 BigQuery Omni。
- 瞭解 BigQuery 配額。