查詢 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.use
bigquery.jobs.create
bigquery.readsessions.create
(只有在使用 BigQuery Storage Read API 讀取資料時才需要)bigquery.tables.get
bigquery.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 配額。