bq 指令列工具參考資料
本文說明 bq 的語法、指令、旗標和引數。
是 BigQuery 的 Python 指令列工具。
如需使用 bq 指令列工具的教學課程,請參閱「使用 bq 工具載入及查詢資料」。
bq 指令列工具的使用方式
您可以在 Cloud Shell 中輸入 bq 指令列工具指令,方法是透過 Google Cloud 控制台,或從本機安裝的 Google Cloud CLI。
如要透過 Google Cloud 控制台使用 bq 指令列工具,請啟用 Cloud Shell:
如要在本機使用 bq 指令列工具,請安裝並設定 gcloud CLI。如要讓安裝項目保持最新狀態,請參閱 gcloud CLI 說明文件中的「管理安裝項目」。
指令格式
bq 指令列工具使用下列格式:
bq COMMAND [FLAGS] [ARGUMENTS]
部分旗標可與多個 bq 指令列工具指令搭配使用,這些旗標會在「全域旗標」一節中說明。
其他旗標則為指令專用,只能與特定 bq 指令列工具指令搭配使用。指令專屬旗標則會在指令章節中說明。
指定標記的值
指定旗標值時,等號 (=) 為選用。例如,以下兩個指令的作用相同:
bq ls --format prettyjson myDataset bq ls --format=prettyjson myDataset
為求明確,本文使用等號。
部分 bq 指令列工具旗標為布林值,您可以將旗標值設為 true 或 false。bq 指令列工具接受下列格式來設定布林旗標。
| 值 | 格式 | 範例 |
|---|---|---|
true |
--FLAGNAME=true |
--debug_mode=true |
true |
--FLAGNAME |
--debug_mode |
false |
--FLAGNAME=false |
--debug_mode=false |
false |
--noFLAGNAME |
--nodebug_mode |
本文件使用 --FLAGNAME=VALUE 格式表示布林值旗標。
所有布林值旗標都是選用項目;如果沒有布林值旗標,BigQuery 會使用旗標的預設值。
在引數中指定 BigQuery 資源
指定資源的格式取決於情境;在某些情況下,專案和資料集之間的分隔符號是冒號 (:),在某些情況下則是半形句號 (.)。下表說明如何在不同情境中指定 BigQuery 資料表。
| 背景資訊 | 格式 | 範例 |
|---|---|---|
| bq 指令列工具 | PROJECT:DATASET.TABLE |
myProject:myDataset.myTable |
| GoogleSQL 查詢 | PROJECT.DATASET.TABLE |
myProject.myDataset.myTable |
| 舊版 SQL 查詢 | PROJECT:DATASET.TABLE |
myProject:myDataset.myTable |
如未指定專案,BigQuery 會使用目前的專案。舉例來說,如果目前的專案是 myProject,BigQuery 會將 myDataset.myTable 解讀為 myProject:myDataset.myTable (或 myProject.myDataset.myTable)。
部分資源 ID 必須使用反引號 (`) 括住。如果資源 ID 開頭為英文字母或底線字元,且僅包含英文字母、數字和底線字元,則不需括住。不過,如果資源 ID 包含其他類型的字元或保留關鍵字,則須在 ID (或 ID 中含有特殊字元或保留關鍵字的部分) 前後加上反引號。詳情請參閱「ID」。
如何執行指令
請將任何通用旗標放在 bq 指令之前,然後加入指令專屬旗標。您可以加入多個全域或指令專屬旗標。例如:
bq --location=us mk --reservation --project_id=project reservation_name
您可以透過下列方式指定指令引數:
--FLAG ARGUMENT(如前述範例所示)--FLAG=ARGUMENT--FLAG='ARGUMENT'--FLAG="ARGUMENT"--FLAG 'ARGUMENT'--FLAG "ARGUMENT"
更改下列內容:
FLAG:全域或指令專屬旗標ARGUMENT:旗標的引數
部分指令需要使用引號括住引數。如果需要引號,單引號或雙引號皆可。需要引號的引數通常是包含空格、逗號或其他特殊字元的值。如果引數包含 BigQuery 資源,請務必遵循在指令中指定資源名稱的規則。
以下範例說明如何在指令列執行 GoogleSQL 查詢:
bq query --nouse_legacy_sql \ 'SELECT COUNT(*) FROM `bigquery-public-data`.samples.shakespeare'
指定含布林值的標記時,可不用引數。如果指定 true 或 false,則必須使用 FLAG=ARGUMENT 格式。
舉例來說,以下指令在布林值旗標 --use_legacy_sql 前加上 no 藉此指定 false:
bq query --nouse_legacy_sql \ 'SELECT COUNT(*) FROM `bigquery-public-data`.samples.shakespeare'
或者,如要將 false 指定為旗標的引數,可以輸入以下內容:
bq query --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `bigquery-public-data`.samples.shakespeare'
在指令碼中執行指令
您可以在指令碼中執行 bq 指令列工具,就像執行 Google Cloud CLI 指令一樣。以下是 Bash 指令碼中 gcloud 和 bq 指令的範例:
#!/bin/bash
gcloud config set project myProject
bq query --use_legacy_sql=false --destination_table=myDataset.myTable \
'SELECT
word,
SUM(word_count) AS count
FROM
`bigquery-public-data`.samples.shakespeare
WHERE
word LIKE "%raisin%"
GROUP BY
word'
使用服務帳戶
您可以使用服務帳戶,代表您執行已授權的 API 呼叫或查詢工作。如要在 bq 指令列工具中使用服務帳戶,請從服務帳戶授權存取 Google Cloud 。詳情請參閱「gcloud auth activate-service-account」。
如要開始使用服務帳戶模擬執行 bq 指令,請執行下列指令:
gcloud config set auth/impersonate_service_account SERVICE_ACCOUNT_NAME
將 SERVICE_ACCOUNT_NAME 替換為服務帳戶名稱。
您現在執行的 bq 指令會使用服務帳戶憑證。
如要停止透過服務帳戶執行 bq 指令,請執行下列指令:
gcloud config unset auth/impersonate_service_account
設定指令列旗標的預設值
如要設定指令列旗標的預設值,請將這些旗標加入 bq 指令列工具的設定檔 .bigqueryrc。設定預設選項前,您必須先建立 .bigqueryrc 檔案。您可以使用偏好的文字編輯器建立檔案。建立 .bigqueryrc 檔案後,您可以使用 --bigqueryrc 全域旗標指定檔案路徑。
如未指定 --bigqueryrc 旗標,系統會使用 BIGQUERYRC 環境變數。如未指定,則會使用路徑 ~/.bigqueryrc。預設路徑為 $HOME/.bigqueryrc。
如何為.bigqueryrc加上標記
如何將指令列旗標的預設值加入 .bigqueryrc:
- 將全域旗標放在檔案頂端,不加標頭。
- 如要使用指令專屬旗標,請輸入指令名稱 (以括號括住),並在指令名稱後方加入指令專屬旗標 (每行一個)。
例如:
--apilog=stdout --format=prettyjson --location=US [query] --use_legacy_sql=false --max_rows=100 --maximum_bytes_billed=10000000 [load] --destination_kms_key=projects/myproject/locations/mylocation/keyRings/myRing/cryptoKeys/myKey
上述範例會為下列旗標設定預設值:
- 全域旗標
--apilog設為stdout,將偵錯輸出內容輸出至Google Cloud 控制台。 - 全域旗標
--format設為prettyjson,以人類可讀的 JSON 格式顯示指令輸出內容。 - 全域旗標
--location設為US多區域位置。 query指令專屬旗標--use_legacy_sql設為false,將 GoogleSQL 設為預設查詢語法。query指令專屬旗標--max_rows設為100,用於控制查詢輸出中的資料列數量。query指令專屬旗標--maximum_bytes_billed設為 10,000,000 位元組 (10 MB),因此讀取超過 10 MB 資料的查詢會失敗。load指令專屬旗標--destination_kms_key設為projects/myproject/locations/mylocation/keyRings/myRing/cryptoKeys/myKey。
CLI 說明
您可以執行下列指令,取得 bq 指令列工具的說明:
| 說明 | 說明指令格式 | 範例 |
|---|---|---|
| 已安裝的版本 | bq version |
bq version |
| 所有指令清單和範例 | bq help |
bq help |
| 全域旗標說明 | bq --help |
bq --help |
| 特定指令的說明 | bq help COMMAND |
bq help mk |
疑難排解 CLI 指令
- 如要記錄傳送和接收的要求,請按照下列步驟操作:
新增
--apilog=PATH_TO_FILE旗標,將作業記錄儲存至本機檔案。將PATH_TO_FILE替換為要儲存記錄的位置。bq 指令列工具會發出標準 REST 式 API 呼叫,這在疑難排解時很有幫助。向 Cloud Customer Care 回報問題時,也可以附上這份記錄。使用
-或stdout(而非路徑) 會將記錄輸出至 Google Cloud 控制台。將--apilog設為stderr,會輸出至標準錯誤檔案。如要記錄更多要求,請使用--httplib2_debuglevel=LOG_LEVEL旗標。LOG_LEVEL越高,記錄的 HTTP 要求資訊就越多。- 如要排解錯誤,請按照下列步驟操作:
取得工作狀態或查看資料表和資料集等資源的詳細資訊時,請輸入
--format=prettyjson旗標。使用這個旗標會以 JSON 格式輸出回應,包括reason屬性。您可以使用reason屬性查看錯誤訊息。如要進一步瞭解執行指令時發生的錯誤,請使用
--debug_mode旗標。
通用標記
您可以視情況搭配任何 bq 指令使用下列旗標:
--alpha=FEATURE_NAME- 指定要啟用的 Alpha 版功能。
--api=ENDPOINT- 指定要呼叫的 API 端點。預設值為
https://bigquery.googleapis.com。 --api_version=VERSION- 指定要使用的 API 版本。預設值為
v2。 --apilog=FILE將所有 API 要求和回應記錄到
FILE指定的檔案。可能的值如下:- 檔案路徑:記錄會寫入指定檔案
stdout- 記錄到標準輸出內容stderr:將記錄輸出至標準錯誤false:不記錄 API 要求和回應 (預設)
--bigquery_discovery_api_key=API_KEY指定用於導覽文件要求的 API 金鑰。
--bigqueryrc=PATH指定 bq 指令列工具設定檔的路徑。如未指定
--bigqueryrc旗標,指令會使用BIGQUERYRC環境變數。如未設定環境變數,則會使用$HOME/.bigqueryrc。如果該檔案不存在,則會使用~/.bigqueryrc。詳情請參閱「設定指令列旗標的預設值」。--ca_certificates_file=PATH指定憑證授權單位服務 (CA) 檔案的位置。
--dataset_id=DATASET_ID指定要與指令搭配使用的預設資料集。如果不適用的話,系統會忽略這個標記。您可以使用
PROJECT:DATASET或DATASET格式指定DATASET_ID引數。如果缺少PROJECT部分,則會使用預設專案。您可以指定--project_id旗標,覆寫預設專案設定。--debug_mode={true|false}如果設為
true,則會顯示 Python 例外狀況的回溯。預設值為false。--disable_ssl_validation={true|false}如果設為
true,則會停用 HTTPS 憑證驗證。預設值為false。--discovery_file=PATH指定要讀取以進行探索的 JSON 檔案。
--enable_gdrive={true|false}如果設為
false,則會要求不含 Google 雲端硬碟範圍的新 OAuth 權杖。預設值為true,會要求具有雲端硬碟範圍的新 OAuth 權杖。如要在使用使用者帳戶驗證時將這個旗標設為false,則必須將--use_google_auth旗標設為false。--enable_resumable_uploads={true|false}針對從本機檔案載入資料的工作,啟用透過 HTTP 支援續傳的上傳作業。預設值為
true。--fingerprint_job_id={true|false}如要使用衍生自工作設定指紋的工作 ID,請設為
true。這可避免不小心多次執行相同工作。預設值為false。--format=FORMAT指定指令輸出內容的格式,請使用下列其中一個值:
pretty:格式化的資料表輸出內容sparse:簡化的資料表輸出內容prettyjson:容易理解的 JSON 格式json:盡可能壓縮到最小的 JSONcsv:包含標頭的 csv 格式
pretty、sparse和prettyjson應為人類可讀。json和csv應由其他程式使用。如果指定none,指令不會產生任何輸出內容。如果沒有--format旗標,系統會根據指令選擇適當的輸出格式。--headless={true|false}如要在沒有使用者互動的情況下執行
bq工作階段,請設為true。例如,debug_mode不會中斷偵錯工具,且資訊列印的頻率會降低。預設值為false。--httplib2_debuglevel=DEBUG_LEVEL指定是否顯示 HTTP 偵錯資訊。如果
DEBUG_LEVEL大於0,指令除了記錄錯誤訊息,也會將 HTTP 伺服器要求和回應記錄到 stderr。如果DEBUG_LEVEL不大於 0,或未使用--httplib2_debuglevel旗標,則只會提供錯誤訊息。例如:
--httplib2_debuglevel=1
--job_id=JOB_ID指定新工作的 ID。這個旗標僅適用於建立工作的指令:
cp、extract、load和query。如果不使用--job_id旗標,指令會產生專屬工作 ID。詳情請參閱「透過程式輔助方式執行工作」。--job_property=KEY:VALUE要納入工作設定 properties 欄位的鍵/值組合。重複使用這個旗標即可指定其他屬性。
--jobs_query_use_request_id={true|false}如果設為
true,系統會在jobs.query要求中傳送要求 ID。預設值為false。--jobs_query_use_results_from_response={true|false}如果設為
true,則會使用jobs.query回應的結果。預設值為true。--location=LOCATION對應至區域或多區域位置的字串。使用
bq cancel指令時,必須提供位置旗標。使用bq show指令並搭配--jobs旗標顯示工作資訊時,也必須提供位置旗標。下列指令可視需要使用位置標記:querycploadextractpartitionupdatewait- 使用
--dataset、--reservation、--capacity_commitment或--reservation_assignment旗標時,mk - 使用
--reservation、--capacity_commitment或--reservation_assignment旗標時,ls
所有其他指令都會忽略
--location旗標。--max_rows_per_request=MAX_ROWS一個整數,用來指定每次讀取所傳回的資料列數量上限。
--mtls={true|false}如果設為
true,則會在連至 BigQuery 時使用 mTLS 用戶端憑證。預設值為false。--project_id=PROJECT指定要用於指令的專案。
--proxy_address=PROXY指定用於連線至 Google Cloud的 Proxy 主機名稱或 IP 位址。
--proxy_password=PASSWORD指定向 Proxy 主機驗證時要使用的密碼。
--proxy_port=PORT指定連線至 Proxy 主機時使用的通訊埠編號。
--proxy_username=USERNAME指定向 Proxy 主機驗證時要使用的使用者名稱。
--quiet={true|false}或-q={true|false}如要在工作執行期間隱藏狀態更新,請設為
true。預設值為false。--quota_project_id=PROJECT_ID指定 Google Cloud 專案 ID,做為計費和配額限制的配額專案。
--request_reason=REASON指定提出要求的理由,並記錄在稽核記錄中。
--synchronous_mode={true|false}或-sync={true|false}如要建立工作並立即傳回,且完成狀態為成功 (錯誤代碼),請設為
false。如果設為true,指令會等待工作完成後再傳回,並將工作完成狀態傳回為錯誤代碼。預設值為true。--trace=token:TOKEN指定要納入 API 要求的追蹤權杖。
--universe_domain=DOMAIN指定要在可靠合作夥伴雲端 (TPC) 網域中使用的宇宙網域。
--use_gcloud_config={true|false}如果設為
true,則會使用gcloud設定覆寫預設旗標值。預設值為true。--use_gcloud_config_cache={true|false}如果設為
true,則會使用永久快取儲存gcloud設定和憑證。預設值為false。--use_google_auth={true|false}如果設為
true,則可使用 Google Auth 程式庫進行驗證。預設值為true。--use_lep={true|false}如果設為
true,則會根據作業位置使用 LEP 端點。預設值為false。--use_regional_endpoints={true|false}預先發布版。如要連線至區域端點,請將
--use_regional_endpoints旗標設為true,並將--location旗標設為要連線的區域。預設值為false。--use_rep={true|false}如果設為
true,則會根據作業位置使用 REP 端點。預設值為false。
已淘汰的全域旗標
下列用於從檔案指定 bq 指令列工具旗標的全域旗標已淘汰。如要從檔案指定旗標,請使用 --bigqueryrc 旗標。
--flagfile=PATH
如有指定,系統會將所提供檔案中的旗標定義插入 bq 指令列工具。預設值為 ''。詳情請參閱「
設定指令列旗標的預設值」。
指令
以下各節將說明 bq 指令列工具指令,以及指令專屬的旗標和引數。
bq add-iam-policy-binding
使用 bq add-iam-policy-binding 指令,即可在一個步驟中擷取資料表或檢視表的身分與存取權管理 (IAM) 政策,並在政策中新增繫結。
這個指令可替代下列三步驟程序:
- 使用
bq get-iam-policy指令擷取政策檔案 (JSON 格式)。 - 編輯政策檔案。
- 使用
bq set-iam-policy指令,以新的繫結更新政策。
劇情概要
bq add-iam-policy-binding [FLAGS] --member=MEMBER_TYPE:MEMBER --role=ROLE [--table] RESOURCE
範例
bq add-iam-policy-binding --member=user:myAccount@gmail.com \ --role=roles/bigquery.dataViewer myDataset.myTable
旗標和引數
bq add-iam-policy-binding 指令會使用下列旗標和引數:
--member=MEMBER_TYPE:MEMBER這是必要旗標,使用
--member旗標指定 IAM 政策繫結的成員部分。--member旗標必須與--role旗標搭配使用。--member和--role旗標的一種組合等於一個繫結。MEMBER_TYPE值會指定 IAM 政策繫結中的成員類型。請使用下列其中一個值:userserviceAccountgroupdomain
MEMBER值會指定 IAM 政策繫結中成員的電子郵件地址或網域。--role=ROLE這是必要旗標,指定 IAM 政策繫結的角色部分。
--role旗標必須與--member旗標搭配使用。--member和--role旗標的組合等於一個繫結。--table={true|false}如要在
RESOURCE引數不是資料表或檢視表 ID 時傳回錯誤,請將--table旗標設為true。預設值為false。支援這個旗標是為了與其他指令保持一致。RESOURCE要新增政策的資料表或檢視表。
詳情請參閱 IAM 政策參考資料。
bq cancel
使用 bq cancel 指令取消 BigQuery 工作。
劇情概要
bq [--synchronous_mode=false] cancel JOB_ID
範例
bq cancel bqjob_12345
bq --synchronous_mode=false cancel bqjob_12345
旗標和引數
bq cancel 指令會使用下列旗標和引數:
--synchronous_mode=false- 如果不想等待
bq cancel指令執行完畢,請將全域--synchronous_mode旗標設為false。預設為true。 JOB_ID- 要取消的工作。
如要進一步瞭解如何使用 bq cancel 指令,請參閱「管理工作」。
bq cp
使用 bq cp 指令執行下列工作:
劇情概要
bq cp [FLAGS] SOURCE_TABLE DESTINATION_TABLE
範例
bq cp myDataset.myTable myDataset.myTableCopy
旗標和引數
bq cp 指令會使用下列旗標和引數:
--append_table={true|false}或-a={true|false}如要將資料表附加至現有資料表,請設為
true。預設值為false。您無法同時使用旗標設定
--append_table=true和--clone=true。--clone={true|false}如要建立資料表複製作業,請設為
true。基礎資料表可以是標準資料表、資料表複製版本或資料表快照。目的地資料表是資料表複製。預設值為false。如果未指定--clone=true或--snapshot=true,則目的地資料表會與基礎資料表相同。需要--no_clobber旗標。您無法同時使用旗標設定
--append_table=true和--clone=true。--destination_kms_key=KEY指定 Cloud KMS 金鑰資源 ID,用於加密目的地資料表資料。
例如:
--destination_kms_key=projects/myProject/locations/global/keyRings/myKeyRing/cryptoKeys/myKey
--expiration=SECONDS資料表快照到期前的秒數。如未提供,資料表快照到期時間會設為資料集的預設到期時間,其中包含新的資料表快照。與
--snapshot旗標搭配使用。--force={true|false}或-f={true|false}如要覆寫目的地資料表 (如有),請設為
true,系統不會提示。預設值為false。如果目的地資料表已存在,命令提示字元會先提示確認,再覆寫資料表。--no_clobber={true|false}或-n={true|false}如要禁止覆寫目的地資料表 (如有),請設為
true。預設值為false。如果目的地資料表已存在,則會遭到覆寫。--restore={true|false}這個旗標即將淘汰。如要從資料表快照建立可寫入的資料表,請使用
bq cp指令或bq cp --clone指令。--snapshot={true|false}如要為
SOURCE_TABLE引數中指定的資料表建立資料表快照,請設為true。基礎資料表可以是標準資料表、資料表複製版本或其他資料表快照。預設值為false。如果未指定--clone=true或--snapshot=true,則目的地資料表會與基礎資料表相同。需要--no_clobber旗標。SOURCE_TABLE要複製的資料表。
DESTINATION_TABLE要複製到的資料表。
如要進一步瞭解如何使用 cp 指令,請參閱下列內容:
bq extract
使用 bq extract 指令,將資料表資料匯出至 Cloud Storage。
劇情概要
bq extract [FLAGS] RESOURCE DESTINATION
範例
bq extract --compression=GZIP --destination_format=CSV --field_delimiter=tab \ --print_header=false myDataset.myTable gs://my-bucket/myFile.csv.gzip
bq extract --destination_format=CSV --field_delimiter='|' myDataset.myTable \ gs://myBucket/myFile.csv
旗標和引數
bq extract 指令會使用下列旗標和引數:
--compression=COMPRESSION_TYPE指定匯出檔案的壓縮類型。可能的值如下:
GZIPDEFLATESNAPPYNONE
預設值為
NONE。如要瞭解每種壓縮類型支援的格式,請參閱「匯出格式和壓縮類型」。
--destination_format=FORMAT指定匯出資料的格式。可能的值如下:
CSVNEWLINE_DELIMITED_JSONAVROPARQUET
預設值為
CSV。--field_delimiter=DELIMITER如果是 CSV 匯出作業,請指定在輸出檔案中標示資料欄邊界的字元。分隔符號可以是任何 ISO-8859-1 單一位元組字元。您可以使用
\t或tab指定定位點分隔符。--print_header={true|false}如要禁止列印有標頭的格式標頭列,請設為
false。預設值為true,包含標頭列。RESOURCE要匯出資料的資料表。
DESTINATION接收匯出資料的儲存空間位置。
如要進一步瞭解如何使用 bq extract 指令,請參閱「匯出資料表資料」。
bq get-iam-policy
使用 bq get-iam-policy 指令擷取資源的 IAM 政策,並列印至 stdout。資源可以是資料表、檢視表或運算單元預留項目。政策採用 JSON 格式。
劇情概要
bq get-iam-policy [FLAGS] RESOURCE
範例
bq get-iam-policy myDataset.myTable
bq get-iam-policy --reservation myReservation
旗標和引數
bq get-iam-policy 指令會使用下列旗標和引數:
--table={true|false}或--t={true|false}- 如果
RESOURCE不是資料表或檢視表 ID,請將--table旗標設為true,系統就會傳回錯誤。預設值為false。系統支援這個旗標,以便與其他指令保持一致。 --reservation={true|false}- 如要取得預留項目的 IAM 政策,請設為
true(預先發布版)。預設值為false。使用這個旗標時,RESOURCE會視為預留項目 ID。預留項目可包含選用的專案和位置前置字串:myProject:myLocation.myReservation。 RESOURCE- 要取得政策的資料表或檢視表。
如要進一步瞭解 bq get-iam-policy 指令,請參閱「使用 IAM 控管資源存取權」。
bq head
使用 bq head 指令,顯示資料表的指定資料列和資料欄。根據預設,系統會顯示前 100 列的所有資料欄。
劇情概要
bq head [FLAGS] [TABLE]
範例
bq head --max_rows=10 --start_row=50 --selected_fields=field1,field3 \ myDataset.myTable
旗標和引數
bq head 指令會使用下列旗標和引數:
--job=JOB or -j=JOB- 如要讀取查詢工作的結果,請使用有效的工作 ID 指定這個旗標。
--max_rows=MAX or -n=MAX- 一個整數,表示顯示表格資料時要列印的資料列數上限。預設值為
100。 --selected_fields=COLUMN_NAMES or -c=COLUMN_NAMES- 以半形逗號分隔的清單,指定顯示資料表資料時要傳回的欄位子集 (包括巢狀和重複欄位)。如未指定這個旗標,則會傳回所有資料欄。
--start_row=START_ROW or -s=START_ROW- 一個整數,指定在顯示表格資料前要略過的資料列數。預設值為
0,表格資料從第一列開始。 --table={true|false}或-t={true|false}- 如要在指令引數不是資料表或檢視表時傳回錯誤,請設為
true。預設值為false。系統支援這個旗標,以便與其他指令保持一致。 TABLE- 要擷取資料的資料表。
如要進一步瞭解如何使用 bq head 指令,請參閱「管理資料表資料」。
bq help
使用 bq help 指令,在工具中顯示 bq 指令列工具說明文件。
劇情概要
bq help [COMMAND]
旗標和引數
bq help 指令會使用下列旗標和引數:
COMMAND- :指定要取得線上說明的特定 bq 指令列工具指令。
bq insert
使用 bq insert 指令,透過串流資料即時插入,將檔案中以換行符號分隔的 JSON 格式資料列插入資料表。資料類型會轉換為與目的地資料表的資料欄類型相符。這項指令僅供測試。如要將資料串流至 BigQuery,請使用 BigQuery Storage Write API (gRPC)。
劇情概要
bq insert [FLAGS] TABLE FILE
範例
bq insert --ignore_unknown_values --template_suffix=_insert myDataset.myTable /tmp/myData.json
echo '{"a":1, "b":2}' | bq insert myDataset.myTable
旗標和引數
bq insert 指令會使用下列旗標和引數:
--ignore_unknown_values={true|false}或-i={true|false}- 如果設為
true,BigQuery 會忽略與資料表結構定義不符的鍵/值組合,並插入與結構定義相符的資料列。如果設為false,系統就不會插入資料與資料表結構定義不符的資料列。預設值為false。 --skip_invalid_rows={true|false}或-s={true|false}- 設為
true時,即使有無效資料列,BigQuery 也會嘗試插入任何有效資料列。如果設為false,只要有任何無效資料列,指令就會失敗。預設值為false。 --template_suffix=SUFFIX or -x=SUFFIX- 指定後,系統會將目的地資料表 TABLE 視為基礎範本,並將資料列插入名為
{destination}{templateSuffix}的執行個體資料表。BigQuery 會使用基本範本的結構定義建立執行個體資料表。 TABLE- 要插入資料的資料表。
FILE- 含有要插入資料的檔案。
如要進一步瞭解如何使用 bq insert 指令,請參閱「將資料串流至 BigQuery」。
bq load
使用 bq load 指令將資料載入資料表。
劇情概要
bq load [FLAGS] DESTINATION_TABLE SOURCE_DATA [SCHEMA]
範例
bq load myDataset.newTable gs://mybucket/info.csv ./info_schema.json
旗標和引數
bq load 指令會使用下列旗標和引數:
--allow_jagged_rows={true|false}- 如要允許 CSV 資料中缺少結尾的選用資料欄,請設為
true。 --preserve_ascii_control_characters={true|false}- 如要允許在 CSV 資料中嵌入 ASCII 控制字元,請設為
true。 --allow_quoted_newlines={true|false}- 如要允許 CSV 資料中的引用換行符號,請設為
true。 --autodetect={true|false}- 如要為 CSV 和 JSON 資料啟用結構定義自動偵測功能,請設為
true。預設值為false。如果--autodetect為false,且未使用--schema旗標指定結構定義,且目的地資料表存在,則會使用目的地資料表的結構定義。 --clustering_fields=COLUMNS- 以半形逗號分隔的清單,最多包含四個資料欄名稱,用於指定資料表分群的欄位。
--column_name_character_map=SCOPE- 定義資料欄名稱字元的範圍和處理方式,並可選擇啟用彈性資料欄名稱。CSV 檔案需要
--autodetect選項。如需可能的值清單,請參閱load_option_list。 --destination_kms_key=KEY- 指定 Cloud KMS 金鑰資源 ID,用於加密目的地資料表資料。
--encoding=ENCODING_TYPE or -E=ENCODING_TYPE- 資料中使用的字元編碼。請使用下列其中一個值:
ISO-8859-1(也稱為 Latin-1)UTF-8
--field_delimiter=DELIMITER or -F=DELIMITER- 指定用來標示資料欄邊界的字元。分隔符號可以是任何 ISO-8859-1 單一位元組字元。您可以使用
\t或tab指定定位點分隔符。 --ignore_unknown_values={true|false}- 如果 CSV 和 JSON 檔案設為
true,系統會載入含有與資料表結構定義不符的多餘資料欄值的資料列,但會忽略多餘的資料欄。如果 Avro、Parquet 和 ORC 檔案設為true,系統會忽略檔案結構定義中不存在於資料表結構定義的欄位,不會載入。 --json_extension=JSON_TYPE指定要載入的 JSON 檔案類型。僅適用於 JSON 檔案。可能的值如下:
GEOJSON:以換行符號分隔的 GeoJSON 檔案
如要使用這個旗標,
--source_format旗標必須設為NEWLINE_DELIMITED_JSON。詳情請參閱「載入以換行符號分隔的 GeoJSON 檔案」。
--max_bad_records=MAX一個整數,用來指定整個工作失敗前可允許的錯誤記錄數量上限。預設值為
0。無論--max_bad_records值為何,系統最多會傳回五個任何類型的錯誤。這個旗標僅適用於載入 CSV、JSON 和 Google 試算表資料。--null_marker=STRING選用的自訂字串,代表 CSV 資料中的
NULL值。--projection_fields=PROPERTY_NAMES如果將
--source_format設為DATASTORE_BACKUP,這個旗標會指出要從 Datastore 匯出作業載入哪些實體屬性。請以逗號分隔的清單指定屬性名稱。屬性名稱有大小寫之分,且必須參照頂層屬性。這個旗標也適用於 Firestore 匯出作業。--quote=CHARACTER指定引用字元,用於包住 CSV 資料中的欄位。
CHARACTER引數可以是任何單一位元組字元。預設值為雙引號 (")。如要指定沒有引號字元,請使用空字串""。--replace={true|false}如要在載入新資料時清除任何現有資料和結構定義,請設為
true。除非您指定--destination_kms_key旗標,否則所有 Cloud KMS 金鑰也會一併移除。預設值為false。等同於
JobConfigurationLoad.writeDisposition的WRITE_TRUNCATE值。--schema={SCHEMA_FILE|SCHEMA}指定本機 JSON 結構定義檔案的路徑,或以逗號分隔的資料欄定義清單,格式為
FIELD:DATA_TYPE, FIELD:DATA_TYPE。如果使用結構定義檔案,請勿在檔案名稱中加入副檔名。例如:
--schema=/tmp/tabledef
--schema=Region:STRING,Quarter:STRING,Total_sales:INTEGER
如未指定結構定義,且
--autodetect為false,且目的地資料表存在,則會使用目的地資料表的結構定義。--schema_update_option=OPTION附加資料至資料表 (在載入工作或查詢工作中) 或覆寫資料表分區時,指定目標資料表結構定義的更新方式。請使用下列其中一個值:
ALLOW_FIELD_ADDITION:允許新增欄位ALLOW_FIELD_RELAXATION:允許將REQUIRED欄位放寬為NULLABLE
重複這個標記即可指定多個結構定義更新選項。
--skip_leading_rows=NUMBER_OF_ROWS這個整數指定要在來源檔案開頭略過的列數。預設為
0。--file_set_spec_type=FILE_SET_SPEC_TYPE指定如何解讀來源 URI。
FILE_SYSTEM_MATCH:列出物件儲存庫中的檔案,展開來源 URI。如未設定 FileSetSpecType,則預設行為是如此。NEW_LINE_DELIMITED_MANIFEST:表示提供的 URI 是以換行符號分隔的資訊清單檔案,每行一個 URI。資訊清單檔案不支援萬用字元 URI,且所有參照的資料檔案都必須與資訊清單位於同一個 bucket。
舉例來說,如果來源 URI 為
"gs://bucket/path/file",且file_set_spec_type為FILE_SYSTEM_MATCH,則檔案會直接做為資料檔案使用。如果file_set_spec_type為NEW_LINE_DELIMITED_MANIFEST,檔案中的每一行都會解讀為指向資料檔案的 URI。--source_format=FORMAT來源資料的格式,請使用下列其中一個值:
CSVNEWLINE_DELIMITED_JSONAVRODATASTORE_BACKUP(Filestore 請使用這個值)PARQUETORC
--time_partitioning_expiration=SECONDS一個整數,用來指定系統應在經過多少時間後刪除時間分區 (以秒為單位)。到期時間為分區的世界標準時間日期加此整數值。負數表示不會到期。
--time_partitioning_field=COLUMN_NAME指定決定如何建立時間分區的欄位。如果啟用時間分區,但未提供這個值,系統會根據載入時間將資料表分區。
--time_partitioning_type=INTERVAL啟用資料表的時間分區功能,並設定分區類型。請使用下列其中一個值:
DAYHOURMONTHYEAR
時間分區的預設分區類型為
DAY。--use_avro_logical_types={true|false}如果
--source_format旗標設為AVRO,請將這個旗標設為true,將邏輯類型轉換為對應的類型 (例如TIMESTAMP),而不是只使用原始類型 (例如INTEGER)。--decimal_target_types=DECIMAL_TYPE決定如何轉換
Decimal邏輯類型。等同於JobConfigurationLoad.decimalTargetTypes。重複這個旗標,即可指定多個目標類型。--parquet_enum_as_string={true|false}如果
--source_format旗標設為PARQUET,且您希望 BigQuery 將 ParquetENUM邏輯類型推論為STRING值,請將這個旗標設為true。預設為false。--parquet_enable_list_inference={true|false}如果
--source_format旗標設為PARQUET,這個旗標會指出是否要對 ParquetLIST邏輯類型使用結構定義推論。--reference_file_schema_uri=URI指定參照檔案的路徑,其中包含建立外部資料表所需的資料表結構定義。等同於
ExternalDataConfiguration.referenceFileSchemaUri。這個標記適用於 Avro、ORC 和 PARQUET 格式。DESTINATION_TABLE要載入資料的資料表。
SOURCE_DATA要載入的資料所在檔案的 Cloud Storage URI。
SCHEMA目的地資料表的結構定義。
如要進一步瞭解如何使用 bq load 指令從 Cloud Storage 載入資料,請參閱下列內容:
如要進一步瞭解如何使用 bq load 指令從本機來源載入資料,請參閱下列內容:
bq ls
使用 bq ls 指令列出集合中的物件。
劇情概要
bq ls [FLAGS] [RESOURCE]
範例
bq ls myDataset
旗標和引數
bq ls 指令會使用下列旗標和引數:
--all={true|false}或-a={true|false}- 如要顯示所有結果,請設為
true。顯示所有使用者或所有資料集的工作,包括隱藏的工作。列出移轉設定或移轉作業時,不需要使用這個旗標。預設值為false。 --capacity_commitment={true|false}如要列出容量承諾使用合約,請設為
true,並使用--location旗標指定位置。詳情請參閱「查看已購買的承諾使用合約」。例如:
bq ls --capacity_commitment=true --location='us'--datasets={true|false}或-d={true|false}如要列出資料集,請設為
true。預設值為false。--filter="FILTER"篩選列出的資源,以符合
FILTER引數。如果是資料集,
FILTER包含一或多個以空格分隔的三元組,格式為labels.KEY:VALUE。如果提供多個三元組,指令只會傳回符合「所有」三元組的資料集 (也就是說,指令會使用AND邏輯運算子,而非OR)。如要指定多個三元組,請在FILTER值前後加上引號。如要根據資料集標籤進行篩選,請使用您套用至資料集的鍵和值。
例如:
--filter "labels.department:marketing labels.team:sales"
如果是移轉設定,請使用
dataSourceIds做為索引鍵,並使用下列其中一個資料來源做為值:
amazon_s3- Amazon S3 資料移轉azure_blob_storage- Azure Blob 儲存體資料移轉dcm_dt- Campaign Manager 資料移轉google_cloud_storage- Cloud Storage 資料移轉cross_region_copy- 資料集複製dfp_dt- Google Ad Manager 資料移轉displayvideo- Display & Video 360 資料移轉google_ads- Google Ads 廣告資料移轉merchant_center- Google Merchant Center 資料移轉作業mysql- MySQL 資料移轉play- Google Play 資料移轉scheduled_query- 排定查詢資料移轉作業search_ads- Search Ads 360 資料移轉youtube_channel- YouTube 頻道資料移轉youtube_content_owner- YouTube 內容擁有者資料移轉redshift- Amazon Redshift 遷移on_premises- Teradata 遷移snowflake_migration- Snowflake 遷移
例如:
--filter labels.dataSourceIds:dcm_dt
如要篩選移轉作業執行作業,請使用 states 做為鍵,並使用下列一或多個移轉狀態做為值:
SUCCEEDEDFAILEDPENDINGRUNNINGCANCELLED
例如:
--filter="states:FAILED"
如果是工作,請使用 states 做為鍵,並使用下列一或多個工作狀態做為值:
RUNNINGPENDINGDONE
例如:
bq ls --jobs --filter="states:RUNNING" bq ls --jobs --filter="states:RUNNING,PENDING"
--jobs={true|false}或-j={true|false}- 如要列出工作,請設為
true。預設值為false。根據預設,結果數量上限為 100,000 筆。 --max_creation_time=MAX_CREATION_TIME_MS- 整數,代表 Unix 紀元時間戳記 (以毫秒為單位)。如果與
--jobs旗標一起指定,這個旗標只會列出在時間戳記之前建立的工作。 --max_results=MAX_RESULTS or -n=MAX_RESULTS- 代表結果數量上限的整數。預設值為 50,最大值為 1000。如果工作超過 1000 項,可以使用
page_token旗標,透過分頁功能列出所有工作。 - --
min_creation_time=MIN_CREATION_TIME_MS - 整數,代表 Unix 紀元時間戳記 (以毫秒為單位)。如果與
--jobs旗標一起指定,這個旗標只會列出在時間戳記之後建立的工作。 --message_type=messageTypes:MESSAGE_TYPE如要僅列出特定類型的移轉作業執行記錄訊息,請指定
messageTypes:MESSAGE_TYPE。可能的值如下:INFOWARNINGERROR
--models={true|false}或-m={true|false}如要列出 BigQuery ML 模型,請設為
true。預設值為false。--page_token=TOKEN或-k=TOKEN列出從指定頁面權杖開始的項目。
--projects={true|false}或-p={true|false}如要顯示所有專案,請設為
true。預設值為false。--reservation={true|false}如要列出指定專案和位置的所有預留項目,請設為
true。預設值為false。與--project_id和--location旗標搭配使用。例如:
bq ls --reservation=true --project_id=myProject --location=us
--reservation_assignment={true|false}如要列出指定專案和位置的所有預留項目指派作業,請設為
true。預設值為false。與--project_id和--location旗標搭配使用。--routines={true|false}如要列出指定資料集中的所有常式,請設為
true。預設值為false。常式包括永久使用者定義函式、資料表函式 (預先發布版) 和預存程序。--row_access_policies指定後,系統會列出資料表的所有資料列層級存取權政策。資料列層級存取權政策用於資料列層級安全性。您必須以
dataset.table格式提供資料表名稱。--run_attempt=RUN_ATTEMPT與
--transfer_run旗標搭配使用。如要列出指定移轉作業執行的所有執行嘗試,請設為RUN_ATTEMPT_UNSPECIFIED。如要僅列出最近一次執行嘗試,請設為LATEST。預設值為LATEST。--transfer_config={true|false}如要列出指定專案和位置的移轉設定,請設為
true。與--transfer_location和--project_id旗標搭配使用。預設值為false。--transfer_location=LOCATION列出指定位置的移轉設定。移轉位置是您在建立移轉作業時所設定的。
--transfer_log={true|false}與
--transfer_run旗標搭配使用。如要列出指定移轉作業執行的移轉記錄訊息,請設為true。預設值為false。--transfer_run={true|false}列出指定移轉設定的移轉作業。
例如:
bq ls --transfer_run=true projects/myProject/locations/us/transferConfigs/12345
RESOURCE要列出物件的集合。資源可以是資料集、專案、預留項目或移轉設定。
如要進一步瞭解如何使用 bq ls 指令,請參閱下列內容:
bq mk
使用 bq mk 指令建立 BigQuery 資源。
劇情概要
bq mk TYPE_FLAG [OTHER FLAGS] [ARGS]
旗標和引數
bq mk 指令會使用 type 旗標指定要建立的資源類型,以及其他取決於資源類型的旗標。
TYPE_FLAG:將下列其中一個旗標設為 true。您選取的項目會指定要建立的資源類型。
--capacity_commitment:購買運算資源承諾使用合約。--connection:建立連線。--dataset或-d:建立資料集。--materialized_view:建立 materialized view。--reservation:建立預留項目。--reservation_assignment:將資料夾、專案或組織指派給預留項目。--reservation-group:建立預留項目群組。--table或-t:建立表格。--transfer_config:建立移轉設定。--transfer_run:建立特定日期範圍的移轉作業。--view:建立檢視表。
bq mk 指令支援下列旗標,適用於所有類型的資源:
--force={true|false}或-f={true|false}- 如要忽略已有名稱相同資源的錯誤,請設為
true。如果資源已存在,結束代碼會是 0,但將這個旗標設為true不會導致bq mk指令覆寫資源。預設值為false。
bq mk 指令支援其他旗標,具體取決於您建立的資源類型,詳情請參閱下列各節。
bq mk --capacity_commitment
如要購買容量承諾使用合約,請將 --capacity_commitment 設為 true,並使用下列旗標:
--location=LOCATION- 指定承諾使用合約的位置。
--plan=PLAN_TYPE指定承諾使用方案類型。必須是下列其中一個值:
ANNUALTHREE_YEAR
使用舊版固定費率定價的客戶,也可以使用下列其中一個值:
FLEXMONTHLYANNUAL
--renewal_plan=RENEWAL_TYPE指定續訂方案類型。
ANNUAL或THREE_YEAR承諾使用方案的必要欄位。 必須是下列其中一個值:ANNUALTHREE_YEARNONE
使用舊版固定費率定價的客戶,也可以使用下列其中一個值:
FLEXMONTHLYANNUAL
--project_id=PROJECT_ID指定管理運算單元的專案。
--slots=NUMBER_OF_BASELINE_SLOTS指定要購買的基準運算單元數量。
--edition=EDITION與承諾使用資源相關聯的版本。必須是下列其中一項:
ENTERPRISEENTERPRISE_PLUS
詳情請參閱「購買承諾使用合約」。
bq mk --connection
建立連線。支援的旗標如下:
--connection_type=CONNECTION_TYPE- 連線類型,例如 Cloud SQL 連線的
CLOUD_SQL。 --properties=PROPERTIESJSON 格式的連線專屬參數。必須指定
instanceId、database和type。如果您建立 Spanner 連線,並想使用 Data Boost,請加入
"useParallelism":true和"useDataBoost":true組合。--connection_credential=CONNECTION_CREDENTIALJSON 格式的連線憑證。必須指定
username和password。--project_id=PROJECT_ID指定連線所屬專案的 ID。
--location=LOCATION指定連線的儲存位置。
--display_name=DISPLAY_NAME指定連線的好記名稱 (選用)。
--description=DESCRIPTION指定連線說明 (選填)。
--iam_role_id=ROLE_ID如果是 AWS 上的 BigQuery Omni,請指定允許存取資源的 IAM 角色。
請使用下列格式:
"arn:aws:iam::AWS_ACCOUNT_ID:role/POLICY_NAME",其中:- AWS_ACCOUNT_ID 是連線 AWS IAM 使用者的 ID 號碼。
- POLICY_NAME 是政策名稱。
範例:
"arn:aws:iam::0123456789AB:policy/s3-read-role"--tenant_id=TENANT_ID如果是 Microsoft Azure 上的 BigQuery Omni,請指定包含 Microsoft Azure 儲存體帳戶的 Microsoft Azure 目錄租用戶 ID。
CONNECTION_ID指定連線的選用連線 ID。如未提供連線 ID,系統會自動產生專屬 ID。連線 ID 可以包含英文字母、數字和底線。
詳情請參閱「連線簡介」。
bq mk --dataset
建立資料集。支援的旗標如下:
--add_tags=TAGS- 指定要附加至新資料集的標記,並以半形逗號分隔。例如:
556741164180/env:prod,myProject/department:sales。每個標記都必須有命名空間限定鍵名稱和值簡稱。 --default_kms_key=KEY- 指定預設 Cloud KMS 金鑰資源 ID,用於加密資料集中的資料表資料 (如果在建立資料表或查詢時未提供明確金鑰)。
--default_partition_expiration=SECONDS- 一個整數,指定資料集中新建立的分區資料表內所有分區的預設到期時間 (以秒為單位)。分區的到期時間會設定為分區的世界標準時間日期加此整數值。如果設定這項屬性,其值會覆寫資料集層級的預設資料表到期時間 (如有)。如果您在建立或更新分區資料表時提供
--time_partitioning_expiration旗標,則資料表層級分區到期時間的優先順序會高於資料集層級預設分區到期時間。 --default_table_expiration=SECONDS- 一個整數,指定資料集中新建立資料表的預設生命週期 (以秒為單位)。到期時間會設為當下的世界標準時間加上這個值。
--description=DESCRIPTION- 指定資料集的說明。
--external_source=EXTERNAL_SOURCE- 建立聯合資料集時,指定外部資料來源。
--label=KEY:VALUE- 指定資料集的標籤。重複使用這個旗標,即可指定多個標籤。
--location=LOCATION或--data_location=LOCATION- 指定資料集的位置。建議使用
--location旗標;--data_location旗標是舊版旗標。 --max_time_travel_hours=HOURS- 指定資料集時間回溯期的時數。
--max_time_travel_hours值必須是 24 的倍數 (48、72、96、120、144、168),介於 48 (2 天) 和 168 (7 天) 之間。如未指定這個旗標,預設值為 168 小時。 --storage_billing_model=BILLING_MODEL指定資料集的儲存空間計費模式。將
--storage_billing_model值設為PHYSICAL,即可在計算儲存空間費用時使用實體位元組,或設為LOGICAL,即可使用邏輯位元組。預設值為LOGICAL。變更資料集的計費模式後,需要 24 小時才會生效。
變更資料集的儲存空間計費模式後,必須等待 14 天才能再次變更。
詳情請參閱「建立資料集」。
bq mk --materialized_view
建立 materialized view。支援的旗標如下:
--enable_refresh={true|false}- 如要停用 materialized view 的自動重新整理功能,請設為
false。建立 materialized view 時,預設值為true。 --refresh_interval_ms=MILLISECONDS- 指定 materialized view 的重新整理間隔時間 (以毫秒為單位)。如未指定這個旗標,則已啟用重新整理功能的 materialized view,預設重新整理間隔為 1,800,000 毫秒,也就是 30 分鐘。
詳情請參閱「建立及使用 materialized view」。
bq mk --reservation
建立具有專屬運算單元的預留項目。支援的旗標如下:
--target_job_concurrency=CONCURRENCY- 指定同時執行的查詢目標數量。預設值為 0,表示系統會根據預留大小自動計算並行數量。詳情請參閱「使用查詢佇列」。
--ignore_idle_slots={true|false}- 如要限制在這個預留項目中執行的工作,只使用分配給預留項目的運算單元,請設為
true。預設值為false,這個預留項目中的工作可以使用其他預留項目的閒置運算單元,或未分配給任何預留項目的運算單元。詳情請參閱「閒置運算單元」。 --location=LOCATION- 指定預留項目的位置。
--project_id=PROJECT_ID- 指定預留項目所屬的專案。
--slots=NUMBER_OF_BASELINE_SLOTS- 指定要分配給這個預留項目的基準運算單元數量。
--edition=EDITION- 與運算資源承諾使用合約相關聯的版本。必須是下列其中一項:
STANDARDENTERPRISEENTERPRISE_PLUS
--autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS- 指派給預留項目的自動調度資源運算單元數量。這個值等於預留項目大小上限減去基準運算單元數量。
--max_slots=MAXIMUM_NUMBER_OF_SLOTS- 預留項目會使用的運算單元數量上限。必須使用
--scaling_mode旗標 (預先發布版) 設定。 --scaling_mode=SCALING_MODE預留項目的資源調度模式。必須是下列其中一項:
IDLE_SLOTS_ONLYALL_SLOTSAUTOSCALE_ONLYSCALING_MODE_UNSPECIFIED
必須使用
--max_slots旗標設定 (預先發布版)。
詳情請參閱「建立專屬運算單元的預留項目」。
bq mk --reservation_assignment
將專案、資料夾或組織指派給預留項目。支援的旗標如下:
--assignee_id=ASSIGNEE_ID- 指定資料夾、組織或專案的 ID。
--assignee_type=ASSIGNEE_TYPE- 指定要指派給預留項目的實體類型。下列其中一項:
FOLDERORGANIZATIONPROJECT
--job_type=JOB_TYPE- 指定要指派給預留項目的工作類型。下列其中一項:
QUERYPIPELINEML_EXTERNALBACKGROUND
--location=LOCATION- 指定預留項目的位置。
--project_id=PROJECT_ID- 指定預留項目所屬的專案。
--reservation_id=RESERVATION_ID- 指定預留項目的 ID。
詳情請參閱「使用預留項目指派作業」。
bq mk --reservation-group
建立預留項目群組。支援的旗標如下:
--location=LOCATION- 指定預留項目的位置。
--project_id=PROJECT_ID- 指定擁有預留項目的專案。
詳情請參閱「使用預留項目群組」。
bq mk --table
建立資料表。支援的旗標如下:
--add_tags=TAGS- 指定要附加至新資料表的標記,並以半形逗號分隔。例如:
556741164180/env:prod,myProject/department:sales。每個標記都必須有命名空間限定鍵名稱和值簡稱。 --clustering_fields=COLUMNS- 以半形逗號分隔的清單,最多包含四個資料欄名稱,指定要用於資料表分群的欄位。如果與分區一併指定,系統會先將資料表分區,然後使用提供的資料欄將每個分區分群。
--description=DESCRIPTION- 指定資料表的說明。
--destination_kms_key=KEY- 指定 Cloud KMS 金鑰資源 ID,用於加密目的地資料表資料。
--expiration=SECONDS- 指定資料表的生命週期。如未指定
--expiration旗標,BigQuery 會使用資料集的預設資料表生命週期建立資料表,或資料表不會過期。 --external_table_definition=STRING指定用於建立外部資料表的資料表定義。
Cloud Storage 和 Google 雲端硬碟外部資料表:
-
--external_table_definition={PATH_TO_FILE|DEFINITION} - 這個值可以是包含資料表定義 (
PATH_TO_FILE) 的檔案路徑,也可以是內嵌資料表定義 (DEFINITION)。
DEFINITION欄位的格式為SCHEMA@FORMAT=URI。SCHEMA值的格式是以逗號分隔的資料欄定義清單,格式為FIELD:DATA_TYPE, FIELD:DATA_TYPE。如果資料格式為自我描述 (例如 Avro),或您使用結構定義自動偵測功能,則可省略SCHEMA值。FORMAT值會指定資料格式,可以是下列其中一項:AVROCSVDATASTORE_BACKUP(Filestore 請使用這個值)ICEBERGNEWLINE_DELIMITED_JSONORCPARQUET
如果指定資料表定義檔案,請勿在檔案名稱中加入副檔名。
例如:
--external_table_definition=/tmp/tabledef
--external_table_definition=Region:STRING,Quarter:STRING,Total_sales:INTEGER@CSV=gs://mybucket/sales.csv
Bigtable 外部資料表和以 AWS 和 Azure 為基礎的 BigLake 資料表:
--external_table_definition=PATH_TO_FILE- 值必須是包含資料表定義的檔案路徑。
以 Cloud Storage 為基礎的 BigLake 資料表:
--external_table_definition=FORMAT=BUCKET_PATH@REGION.CONNECTION_NAME:FORMAT值會指定資料格式,可以是下列其中一項:AVROCSVNEWLINE_DELIMITED_JSONICEBERGORCPARQUET
BUCKET_PATH是 Cloud Storage 中一或多個檔案的路徑,這些檔案包含 BigLake 資料表資料。您可以使用下列格式指定BUCKET_PATH:- 單一檔案:
gs://bucket_name/[folder_name/]file_name。 - 如要指定單一值區中的多個檔案,請使用
gs://bucket_name/[folder_name/]*。 如要處理多個 bucket 中的多個檔案,請使用:
gs://mybucket1/*,gs://mybucket2/folder5/*。您可以使用萬用字元,限制 BigLake 資料表包含的檔案。舉例來說,如果 bucket 包含多種資料,您可以指定
gs://bucket_name/*.parquet,讓資料表僅使用 PARQUET 檔案。如要進一步瞭解如何使用萬用字元,請參閱「URI 萬用字元」。
- 單一檔案:
REGION值會指定連線所在的區域或多區域。CONNECTION_NAME值會指定要與這個外部資料表搭配使用的 Cloud 資源連結名稱。連線會決定要使用哪個服務帳戶,從 Cloud Storage 讀取資料。
--external_table_definition=BUCKET_PATH@REGION.CONNECTION_NAME:BUCKET_PATH是 Cloud Storage bucket 的路徑,其中包含物件資料表代表的物件,格式為gs://bucket_name/[folder_name/]*。您可以提供多個路徑來指定多個 bucket,例如gs://mybucket1/*,gs://mybucket2/folder5/*。您可以使用萬用字元,限制物件資料表中的物件。舉例來說,如果 bucket 包含多種非結構化資料,您可以指定
gs://bucket_name/*.pdf,只針對 PDF 物件建立物件資料表。如要進一步瞭解如何使用萬用字元,請參閱「URI 萬用字元」。REGION值會指定連線所在的區域或多區域。CONNECTION_NAME值會指定要與這個外部資料表搭配使用的 Cloud 資源連結名稱。連線會決定要使用哪個服務帳戶,從 Cloud Storage 讀取資料。
-
--file_set_spec_type=FILE_SET_SPEC_TYPE指定如何解讀來源 URI。
FILE_SYSTEM_MATCH:列出物件儲存庫中的檔案,展開來源 URI。如未設定 FileSetSpecType,則預設行為是如此。NEW_LINE_DELIMITED_MANIFEST:表示提供的 URI 是以換行符號分隔的資訊清單檔案,每行一個 URI。資訊清單檔案不支援萬用字元 URI,且所有參照的資料檔案都必須與資訊清單位於同一個 bucket。
舉例來說,如果來源 URI 為
"gs://bucket/path/file",且file_set_spec_type為FILE_SYSTEM_MATCH,則檔案會直接做為資料檔案使用。如果file_set_spec_type為NEW_LINE_DELIMITED_MANIFEST,檔案中的每一行都會解讀為指向資料檔案的 URI。--reference_file_schema_uri=URI指定參照檔案的路徑,其中包含建立外部資料表所需的資料表結構定義。等同於
ExternalDataConfiguration.referenceFileSchemaUri。這個標記適用於 Avro、ORC 和 PARQUET 格式。--label=KEY:VALUE指定資料表的標籤。重複這個旗標,即可指定多個標籤。
--max_staleness=INTERVAL指定對資料表執行的作業是否使用快取中繼資料,以及快取中繼資料必須有多新,作業才能使用。
適用於 BigLake 資料表和物件資料表。
如要停用中繼資料快取功能,請指定 0。這是目前的預設做法。
如要啟用中繼資料快取功能,請指定 30 分鐘到 7 天之間的時間間隔值,並使用
INTERVAL資料類型說明文件中所述的Y-M D H:M:S格式。例如,指定0-0 0 4:0:0可將過時時間間隔設為 4 小時。如果中繼資料在過去 4 小時內重新整理過,則對資料表執行的作業會使用快取的中繼資料。如果快取的中繼資料超過這個時間,作業就會改為從 Cloud Storage 擷取中繼資料。--object_metadata=STRING建立物件資料表時,請將這個旗標的值設為
SIMPLE。只有在建立物件資料表時才需要。
--range_partitioning=COLUMN_NAME,START,END,INTERVAL指定整數範圍分區的選項,如下所示:
column_name是用來建立整數範圍分區的資料欄。start是範圍分區的起始值 (包含)。end是範圍分區的結束值 (不含)。interval是分區中各範圍的間隔。
例如:
--range_partitioning=customer_id,0,10000,100
--require_partition_filter={true|false}如要針對所提供資料表的查詢要求分區篩選器,請設為
true。此旗標僅適用於分區資料表。預設值為false。--schema={SCHEMA_FILE|SCHEMA}指定本機 JSON 結構定義檔案的路徑,或以逗號分隔的資料欄定義清單,格式為
FIELD:DATA_TYPE, FIELD:DATA_TYPE。如果使用結構定義檔案,請勿在檔案名稱中加入副檔名。範例:
--schema=/tmp/tabledef
--schema=Region:STRING,Quarter:STRING,Total_sales:INTEGER
--time_partitioning_expiration=SECONDS一個整數,用來指定系統應在經過多少時間後刪除時間分區 (以秒為單位)。到期時間為分區的世界標準時間日期加此整數值。負數表示不會到期。
--time_partitioning_field=COLUMN_NAME指定用於決定如何建立時間分區的欄位。如果啟用時間分區,但未提供這個值,則會根據載入時間進行資料表分區。
--time_partitioning_type=INTERVAL啟用資料表的時間分區功能,並設定分區類型。請使用下列其中一個值:
DAYHOURMONTHYEAR
--use_avro_logical_types={true|false}如果
--external_table_definition旗標的FORMAT部分設為AVRO,則這個旗標會指定是否要將邏輯類型轉換為對應的類型 (例如TIMESTAMP),而不是只使用原始類型 (例如INTEGER)。--parquet_enable_list_inference={true|false}如果
--external_table_definition旗標的FORMAT部分設為PARQUET,則這個旗標會指定是否要對 ParquetLIST邏輯類型使用結構定義推論。--parquet_enum_as_string={true|false}如果
--external_table_definition旗標的FORMAT部分設為PARQUET,則這個旗標會指定是否要將 ParquetENUM邏輯類型推論為STRING值。
詳情請參閱「建立及使用資料表」。
bq mk --transfer_config
建立移轉設定。支援的旗標如下:
--data_source=DATA_SOURCE- 指定資料來源。建立移轉設定時,必須提供這項資訊。請使用下列其中一個值:
amazon_s3- Amazon S3 資料移轉azure_blob_storage- Azure Blob 儲存體資料移轉dcm_dt- Campaign Manager 資料移轉google_cloud_storage- Cloud Storage 資料移轉cross_region_copy- 資料集複製dfp_dt- Google Ad Manager 資料移轉displayvideo- Display & Video 360 資料移轉google_ads- Google Ads 廣告資料移轉merchant_center- Google Merchant Center 資料移轉作業mysql- MySQL 資料移轉play- Google Play 資料移轉scheduled_query- 排定查詢資料移轉作業search_ads- Search Ads 360 資料移轉youtube_channel- YouTube 頻道資料移轉youtube_content_owner- YouTube 內容擁有者資料移轉redshift- Amazon Redshift 遷移on_premises- Teradata 遷移snowflake_migration- Snowflake 遷移
--display_name=DISPLAY_NAME- 指定移轉設定的顯示名稱。
--no_auto_scheduling={true|false}- 停用這項設定的資料移轉作業自動排程功能。
預設值為
false。 --params={"PARAMETER":"VALUE"}或-p={"PARAMETER":"VALUE"}- 以 JSON 格式指定移轉設定的參數。參數會因資料來源而異。
--refresh_window_days=DAYS- 整數,指定移轉設定的重新整理時間範圍 (以天為單位)。預設值為
0。 --service_account_name=SERVICE_ACCOUNT- 指定要用做移轉設定憑證的服務帳戶。
--target_dataset=DATASET- 指定移轉設定的目標資料集。
--table_filter=TABLES- 僅與
google_ads資料來源搭配使用。TABLES參數是以半形逗號分隔的清單,列出要轉移的資料表。如要排除資料表,請在資料表名稱前加上連字號 (-)。預設值會包含移轉作業中的所有資料表。 --destination_kms_key=KEY- 指定 Cloud KMS 金鑰資源 ID,用於加密目的地資料表資料。
如要瞭解如何搭配使用 bq mk 指令和 BigQuery 資料移轉服務,請參閱下列內容:
- 設定 Amazon S3 移轉作業
- 設定 Campaign Manager 移轉作業
- 設定 Cloud Storage 移轉作業
- 設定 Google Ad Manager 移轉作業
- 設定 Google Ads 移轉作業
- 設定 Google Merchant Center 移轉作業 (Beta 版)
- 設定 Google Play 移轉作業
- 設定 Search Ads 360 移轉作業 (Beta 版)
- 設定 YouTube 頻道轉移作業
- 設定 YouTube 內容擁有者轉移作業
- 從 Amazon Redshift 遷移資料
- 從 Teradata 遷移資料
- 從 Snowflake 遷移資料
bq mk --transfer_run
使用指定的資料移轉設定,在指定時間或日期範圍內建立資料移轉執行作業。
劇情概要
bq mk --transfer_run [--run_time=RUN_TIME | --start_time=START_TIME --end_time=END_TIME] CONFIG
支援的旗標如下:
--run_time=RUN_TIME- 時間戳記,指定排定資料移轉作業執行的時間。
--start_time=START_TIME- 時間戳記,指定一系列資料移轉工作的開始時間。
--end_time=END_TIME- 時間戳記,指定一系列資料移轉作業的結束時間。
時間戳記的格式為 RFC3339 UTC「Zulu」。
CONFIG 引數會指定預先存在的資料移轉設定。
範例
bq mk --transfer_run \ --run_time=2021-01-20T17:00:00.00Z \ projects/p/locations/l/transferConfigs/c
bq mk --transfer_run \ --start_time=2020-12-19T16:39:57-08:00 \ --end_time=2020-12-19T20:39:57-08:00 \ projects/p/locations/l/transferConfigs/c
bq mk --view
建立檢視表。支援的旗標如下:
--add_tags=TAGS- :指定要附加至新檢視畫面的標記,並以半形逗號分隔。例如:
556741164180/env:prod,myProject/department:sales。每個標記都必須有命名空間限定鍵名稱和值簡稱。 --description=DESCRIPTION- 指定檢視表的說明。
--expiration=SECONDS- 指定檢視畫面的生命週期。如果
SECONDS為0,則檢視表不會過期。如未指定--expiration旗標,BigQuery 會使用資料集的預設資料表生命週期建立檢視表。 --label=KEY:VALUE- 指定檢視畫面的標籤。重複使用這個旗標,即可指定多個標籤。
--use_legacy_sql={true|false}- 設為
false,即可使用 GoogleSQL 查詢建立檢視表。預設值取決於配置設定。如未指定設定,預設值為true,會使用舊版 SQL。 --view_udf_resource=FILE- 指定 Cloud Storage URI 或本機程式碼檔案的路徑,該檔案會立即載入並評估為檢視表 SQL 查詢使用的 user-defined function 資源。重複這個標記即可指定多個檔案。
詳情請參閱「建立檢視表」。
bq mkdef
使用 bq mkdef 指令,為儲存在 Cloud Storage 或 Google 雲端硬碟中的資料,建立 JSON 格式的資料表定義。
劇情概要
bq mkdef [FLAGS] URI [ > FILE ]
旗標和引數
bq mkdef 指令會使用下列旗標和引數:
--autodetect={true|false}- 指定是否要對 CSV 和 JSON 資料使用結構定義自動偵測功能。預設值為
false。 --connection_id=CONNECTION_ID- 用於驗證的連線資源 ID。
--hive_partitioning_mode指定 BigQuery 讀取資料時,如何判斷分區架構。支援的模式如下:
AUTO:自動推論分區索引鍵名稱和類型。STRINGS:自動推測分區索引鍵名稱。所有類型都會視為字串。CUSTOM:在來源 URI 前置字串中指定分區結構定義。
預設值為
AUTO。--hive_partitioning_source_uri_prefix指定來源 URI 的通用前置字元。通用前置字串值是 URI 中緊接在分區鍵編碼前面的部分。如果將模式指定為
CUSTOM,則必須一併指定分區結構定義。舉例來說,假設檔案結構如下:
gs://bucket/path_to_table/dt=2019-06-01/country=USA/id=7/file.avrogs://bucket/path_to_table/dt=2019-05-31/country=CA/id=3/file.avro
如果使用
AUTO或STRINGS模式,則可接受下列值:gs://bucket/path_to_tablegs://bucket/path_to_table/
如果使用
CUSTOM模式,則可接受下列值:gs://bucket/path_to_table/{dt:DATE}/{country:STRING}/{id:INTEGER}gs://bucket/path_to_table/{dt:STRING}/{country:STRING}/{id:INTEGER}gs://bucket/path_to_table/{dt:DATE}/{country:STRING}/{id:STRING}
如要進一步瞭解如何使用 bq mkdef 指令,請參閱「為外部資料來源建立資料表定義檔」。
--ignore_unknown_values={true|false}或-i={true|false}- 指定是否忽略資料列中未出現在結構定義中的任何值。預設值為
false。 --metadata_cache_mode=STRING指定資料表的中繼資料快取要自動或手動重新整理。
設為
AUTOMATIC,中繼資料快取就會按照系統定義的間隔重新整理,通常介於 30 到 60 分鐘之間。如要按照指定時間表重新整理中繼資料快取,請設為
MANUAL。在這種情況下,您可以呼叫BQ.REFRESH_EXTERNAL_METADATA_CACHE系統程序來重新整理快取。如果您使用
bq mk指令設定--max_staleness旗標,則必須設定--metadata_cache_mode旗標。--parquet_enable_list_inference={true|false}如果
source_format設為PARQUET,這個旗標會指定是否要對 ParquetLIST邏輯類型使用結構定義推論。預設值為false。--parquet_enum_as_string={true|false}如果
source_format設為PARQUET,這個旗標會指定是否要將 ParquetENUM邏輯類型推論為STRING值。預設值為false。--file_set_spec_type=FILE_SET_SPEC_TYPE指定如何解讀來源 URI。
FILE_SYSTEM_MATCH:列出物件儲存庫中的檔案,展開來源 URI。如未設定 FileSetSpecType,則預設行為是如此。NEW_LINE_DELIMITED_MANIFEST:表示提供的 URI 是以換行符號分隔的資訊清單檔案,每行一個 URI。資訊清單檔案不支援萬用字元 URI,且所有參照的資料檔案都必須與資訊清單位於同一個 bucket。
舉例來說,如果來源 URI 為
"gs://bucket/path/file",且file_set_spec_type為FILE_SYSTEM_MATCH,則檔案會直接做為資料檔案使用。如果file_set_spec_type為NEW_LINE_DELIMITED_MANIFEST,檔案中的每一行都會解讀為指向資料檔案的 URI。--source_format=FORMAT指定來源資料的格式。請使用下列其中一個值:
AVROCSVDATASTORE_BACKUP(Filestore 請使用這個值)GOOGLE_SHEETSNEWLINE_DELIMITED_JSONORCPARQUET
預設值為
CSV。--use_avro_logical_types={true|false}如果
--source_format旗標設為AVRO,這個旗標會指定是否要將邏輯類型轉換為對應的類型 (例如TIMESTAMP),而非僅使用原始類型 (例如INTEGER)。預設值為false。
bq partition
使用 bq partition 指令,將一組具有時間單位後置字串的資料表 (例如以 YYYYMMDD 結尾的日期分區資料表) 轉換為分區資料表。
劇情概要
bq partition [FLAGS] SOURCE_TABLE_BASE_NAME PARTITION_TABLE
旗標和引數
bq partition 指令會使用下列旗標和引數:
--no_clobber={true|false}或-n={true|false}- 如要禁止覆寫現有分區,請設為
true。預設值為false;如果分區存在,則會遭到覆寫。 --time_partitioning_expiration=SECONDS- 此整數值是用來指定系統應在經過多少時間後刪除時間分區 (以秒為單位)。到期時間為分區的世界標準時間日期加此整數值。負數表示不會到期。
--time_partitioning_type=INTERVAL指定分區類型。下表列出
INTERVAL旗標的可能值,以及各值的預期時間單位後置字串格式:INTERVAL字尾 HOURYYYYMMDDHHDAYYYYYMMDDMONTHYYYYMMYEARYYYYSOURCE_TABLE_BASE_NAME一組資料表的基本名稱,後置字串為時間單位。
PARTITION_TABLE目的地分區資料表的名稱。
如要進一步瞭解如何使用 bq partition 指令,請參閱「將日期分區資料表轉換為擷取時間分區資料表」。
bq query
使用 bq query 指令建立查詢工作,執行指定的 SQL 查詢。
劇情概要
bq query [FLAGS] 'QUERY'
旗標和引數
bq query 指令會使用下列旗標和引數:
--allow_large_results={true|false}- 如要為舊版 SQL 查詢啟用大型目的地資料表大小,請設為
true。預設值為false。 --append_table={true|false}- 如要將資料附加至目的地資料表,請設為
true。預設值為false。 --batch={true|false}- 如要以批次模式執行查詢,請設為
true。預設值為false。 --clustering_fields=COLUMNS- :以半形逗號分隔的清單,最多包含四個資料欄名稱,指定要用於分群查詢中目的地資料表的欄位。如果與分區一併指定,系統會先將資料表分區,然後使用提供的資料欄將每個分區分群。
--connection_property=KEY=VALUE鍵/值組合,可讓您指定連線層級屬性,自訂查詢行為。重複使用這個旗標,即可指定其他屬性。
支援的連線屬性如下:
dataset_project_id:代表查詢中使用的資料集預設專案,類似於@@dataset_project_id系統變數。query_label:將查詢與指定的工作標籤建立關聯。設定後,指令碼或工作階段中的所有後續查詢都會有這個標籤。如要進一步瞭解查詢標籤格式規定,請參閱JobConfiguration資源中的labels欄位。service_account:指定要用來執行查詢的服務帳戶。例如:--connection_property=service_account=myserviceaccount@project.iam.gserviceaccount.com。session_id:將查詢與指定工作階段建立關聯。time_zone:代表執行查詢時使用的預設時區。
--continuous={true|false}如要執行持續查詢,請設為
true。預設值為false。--destination_kms_key=KEY指定 Cloud KMS 金鑰資源 ID,用於加密目的地資料表資料。
--destination_schema={PATH_TO_FILE|SCHEMA}本機 JSON 結構定義檔案的路徑,或以半形逗號分隔的資料欄定義清單,格式為
FIELD:DATA_TYPE, FIELD:DATA_TYPE。結構定義變更與查詢執行作業分開進行。如果您指定
--destination_table旗標,將查詢結果寫入資料表,而查詢隨後引發例外狀況,則系統可能會略過任何結構定義變更。如果發生這種情況,請檢查目的地資料表結構定義,並視需要手動更新。--destination_table=TABLE指定後,查詢結果會儲存至
TABLE。請使用下列格式指定TABLE:PROJECT:DATASET.TABLE。如未指定PROJECT,系統會假設為目前專案。如未指定--destination_table旗標,查詢結果會儲存至臨時資料表。範例:
--destination_table myProject:myDataset.myTable
--destination_table myDataset.myTable
--dry_run={true|false}如果有指定,系統就會驗證查詢 (但不執行查詢)。
--external_table_definition={TABLE::PATH_TO_FILE|TABLE::DEFINITION}指定外部資料表查詢的資料表名稱和資料表定義。資料表定義可以是本機 JSON 結構定義檔案的路徑,也可以是內嵌資料表定義。提供內嵌資料表定義的格式為
SCHEMA@SOURCE_FORMAT=CLOUD_STORAGE_URI。SCHEMA值的格式是以逗號分隔的資料欄定義清單,格式為FIELD:DATA_TYPE, FIELD:DATA_TYPE。如果使用資料表定義檔,請勿在檔案名稱中加入副檔名。例如:
--external_table_definition=myTable::/tmp/tabledef
--external_table_definition=myTable::Region:STRING,Quarter:STRING,Total_sales:INTEGER@CSV=gs://mybucket/sales.csv
重複使用這個旗標,即可查詢多個資料表。
--flatten_results={true|false}如要禁止在舊版 SQL 查詢結果中簡維巢狀和重複欄位,請設為
false。預設值為true。--label=KEY:VALUE指定查詢工作的標籤。重複這個旗標,即可指定多個標籤。
--max_rows=MAX_ROWS或-n=MAX_ROWS一個整數,用來指定要在查詢結果中傳回的資料列數量。預設值為
100。--maximum_bytes_billed=MAX_BYTES一個整數,用來針對查詢指定會產生費用的位元組上限。如果查詢超出上限,就會失敗 (不會產生費用)。如未指定這個旗標,計費位元組數會設為專案預設值。
--max_statement_results=VALUE指定查詢結果顯示的指令碼陳述式數量上限,預設值為
100。--min_completion_ratio=RATIO(實驗功能) 介於 0 到 1.0 之間的數字,指定查詢傳回前必須掃描的資料最小比例。如未指定旗標,則會使用預設伺服器值
1.0。--parameter={PATH_TO_FILE|PARAMETER}包含查詢參數清單的 JSON 檔案,或
NAME:TYPE:VALUE格式的查詢參數。如果名稱留空,系統會建立位置參數。如果省略TYPE,系統會假設為STRING類型。NULL指定空值。重複這個旗標,即可指定多個參數。例如:
--parameter=/tmp/queryParams
--parameter=Name::Oscar
--parameter=Count:INTEGER:42
--range_partitioning=COLUMN_NAME,START,END,INTERVAL與
--destination_table旗標搭配使用。指定目的地資料表中整數範圍分區的選項。值是以逗號分隔的清單,格式為column_name,start,end,interval,其中column_name是用來建立整數範圍分區的資料欄。start是範圍分區的起始值 (包含)。end是範圍分區的結束值 (不含)。interval是分區中各範圍的間隔。
例如:
--range_partitioning=customer_id,0,10000,100
--replace={true|false}如要使用查詢結果覆寫目的地資料表,請設為
true。所有現有資料和結構定義都會遭到清除。除非您指定--destination_kms_key旗標,否則所有 Cloud KMS 金鑰也會一併移除。預設值為false。--require_cache={true|false}如果指定,則只有在可以從快取擷取結果時,才執行查詢。
--require_partition_filter={true|false}如果指定,則查詢提供的資料表時,必須使用分區篩選器。這個標記只能與分區資料表搭配使用。
--reservation_id=RESERVATION如果指定,則為查詢執行的預留項目。如要強制查詢使用隨選計費模式,請將這個值設為
none。這需要將專案或組織的reservation_override_mode設定設為ALLOW_ANY_OVERRIDE。--rpc={true|false}如要使用 RPC 樣式的查詢 API,而非 REST API
jobs.insert方法,請設為true。預設值為false。--schedule="SCHEDULE"讓查詢成為重複發生的排定查詢。必須設定查詢執行頻率。
範例:
--schedule="every 24 hours"
--schedule="every 3 hours"
如需排程語法的說明,請參閱「設定排程格式」。
--schema_update_option=OPTION在載入工作或查詢工作中將資料附加至資料表,或覆寫資料表分區時,指定如何更新目的地資料表的結構定義。請使用下列其中一個值:
ALLOW_FIELD_ADDITION:允許新增欄位。ALLOW_FIELD_RELAXATION:允許將REQUIRED欄位放寬為NULLABLE。
重複這個標記即可指定多個結構定義更新選項。
--start_row=ROW_NUMBER或-s=ROW_NUMBER一個整數,用來指定要在查詢結果中傳回的第一個資料列。預設值為
0。--target_dataset=DATASET如果指定此旗標時搭配使用
--schedule,系統會更新排定查詢的目的地資料集。查詢必須是 DDL 或 DML。--time_partitioning_expiration=SECONDS與
--destination_table旗標搭配使用。整數,指定應刪除時間分區的時間 (以秒為單位)。到期時間的計算方式為分區的世界標準時間日期加上整數值。負數表示不會過期。--time_partitioning_field=COLUMN_NAME與
--destination_table旗標搭配使用。指定時間分區的分區資料欄。如果啟用以時間為準的分區,但未設定這個值,系統會根據擷取時間將資料表分區。--time_partitioning_type=INTERVAL與
--destination_table旗標搭配使用。指定目的地資料表的分區類型。請使用下列其中一個值:DAYHOURMONTHYEAR
--udf_resource=FILE這個旗標僅適用於舊版 SQL 查詢。指定 Cloud Storage URI 或本機檔案的路徑,其中包含舊版 SQL 查詢要使用的 user-defined function 資源。重複這個標記即可指定多個檔案。
--use_cache={true|false}如要禁止快取查詢結果,請設為
false。預設值為true。--use_legacy_sql={true|false}如要執行 GoogleSQL 查詢,請設為
false。預設值取決於配置設定。如未指定設定,預設值為true,指令會使用舊版 SQL。--job_timeout_ms={string (Int64Value)}指定執行查詢的時間上限 (以毫秒為單位)。如果超過這個時間限制,BigQuery 會嘗試停止工作。
QUERY要執行的查詢。您可以使用下列其中一種方法指定查詢:
指定包含查詢的字串。
如需在查詢中使用其他字串常值,請務必遵循所用殼層的引號規則,例如 Bash 或 PowerShell。
以下範例說明 Bash 中的典型做法,即使用雙引號表示查詢中的字串文字,然後用單引號括住查詢本身:
'SELECT * FROM mydataset.mytable WHERE column1 = "value";'
如果您是從其他位置複製查詢,也必須移除查詢中的所有註解。
傳入含有查詢的 SQL 指令碼。以下範例說明如何在 Bash 殼層中傳入 SQL 指令碼:
bq query --use_legacy_sql=false < query.sql
如要進一步瞭解如何使用 bq query 指令,請參閱「執行查詢」。
bq remove-iam-policy-binding
使用 bq remove-iam-policy-binding 指令,即可在一個步驟中擷取資源的 IAM 政策,並從政策中移除繫結。資源可以是資料表或檢視表。
這個指令可替代下列三步驟程序:
- 使用
bq get-iam-policy指令擷取政策檔案 (JSON 格式)。 - 編輯政策檔案。
- 使用
bq set-iam-policy指令更新政策,但不含繫結。
劇情概要
bq remove-iam-policy-binding FLAGS --member=MEMBER_TYPE:MEMBER --role=ROLE RESOURCE
旗標和引數
bq remove-iam-policy-binding 指令會使用下列旗標和引數:
--member=MEMBER_TYPE:MEMBER這是必要旗標,使用
--member旗標指定 IAM 政策繫結的成員部分。--member旗標必須與--role旗標搭配使用。--member和--role旗標的一種組合等於一個繫結。MEMBER_TYPE值會指定 IAM 政策繫結中的成員類型。請使用下列其中一個值:userserviceAccountgroupdomain
MEMBER值會指定 IAM 政策繫結中成員的電子郵件地址或網域。--role=ROLE這是必要旗標,指定 IAM 政策繫結的角色部分。
--role旗標必須與--member旗標搭配使用。--member和--role旗標的組合等於一個繫結。--table={true|false}或-t={true|false}選用。如要從資料表或檢視表的 IAM 政策中移除繫結,請設為
true。預設值為false。
RESOURCE 是要移除政策繫結的資料表或檢視表。
詳情請參閱 IAM 政策參考資料。
bq rm
使用 bq rm 指令刪除 BigQuery 資源。
劇情概要
bq rm [FLAGS] RESOURCE
旗標和引數
bq rm 指令會使用下列旗標和引數:
--capacity_commitment={false|true}- 如要刪除運算資源承諾使用合約,請設為
true,使用--location旗標指定要移除的承諾使用合約位置,並將RESOURCE替換為要移除的承諾使用合約 ID。 --dataset={true|false}或-d={true|false}- 如要刪除資料集,請設為
true。預設值為false。 --force={true|false}或-f={true|false}- 如要刪除資源而不提示,請設為
true。刪除資料集、資料表、工作、模型、常式、連線或移轉設定時,如果將這個旗標設為true,則在資源不存在時,也會忽略Not found錯誤。預設值為false。 --job={true|false}或-j={true|false}- 如要刪除工作,請設為 true。預設值為 false。
--model={true|false}或-m={true|false}- 如要刪除 BigQuery ML 模型,請設為
true。預設值為false。 --recursive={true|false}或-r{true|false}- 如要刪除資料集和其中的任何資料表、資料表資料或模型,請設為
true。預設值為false。 --reservation={true|false}- 如要刪除預留項目,請設為
true。預設值為false。 --reservation_assignment={true|false}- 如要刪除預留項目指派作業,請設為
true。預設值為false。 --routine={true|false}- 如要刪除日常安排,請設為
true。預設值為false。常式可以是永久使用者定義函式、資料表函式 (預先發布版) 或預存程序。 --table={true|false}或-t={true|false}- 如要刪除資料表或檢視表,請設為
true。預設值為false。 --transfer_config={true|false}- 如要刪除移轉設定,請設為
true。預設值為false。 RESOURCE- 要移除的資源。
如要進一步瞭解如何使用 bq rm 指令,請參閱下列內容:
bq set-iam-policy
使用 bq set-iam-policy 指令,指定或更新資源的 IAM 政策。資源可以是資料表、檢視表或運算單元預留項目。設定政策後,新政策會輸出至 stdout。政策採用 JSON 格式。
更新後政策中的 etag 欄位必須與目前政策的 etag 值相符,否則更新會失敗。這項功能可避免同時更新。
您可以使用 bq get-iam-policy 指令,取得資源目前的政策和 etag 值。
劇情概要
bq set-iam-policy [FLAGS] RESOURCE FILE_NAME
範例
bq set-iam-policy myDataset.myTable policy.json
bq set-iam-policy --reservation myReservation policy.json
旗標和引數
bq set-iam-policy 指令會使用下列旗標和引數。
--table={true|false}或-t={true|false}- 選用。如要設定資料表或檢視表的 IAM 政策,請設為
true。預設值為false。 --reservation={true|false}- 如要設定預留項目的 IAM 政策,請設為
true(預先發布版)。預設值為false。使用這個旗標時,RESOURCE會視為預留項目 ID。預留項目可包含選用的專案和位置前置字串:myProject:myLocation.myReservation。
RESOURCE 是要更新政策的資料表或檢視表。
FILE_NAME 是含有 JSON 格式政策的檔案名稱。
如要進一步瞭解 bq set-iam-policy 指令,請參閱「使用 IAM 控管資源存取權」。
bq show
使用 bq show 指令顯示資源相關資訊。
劇情概要
bq show [FLAGS] [RESOURCE]
旗標和引數
bq show 指令會使用下列旗標和引數:
--assignee_id=ASSIGNEE- 與
--reservation_assignment旗標搭配使用時,可指定資料夾、組織或專案的 ID。使用--assignee_type旗標指定要顯示的指派對象類型。 --assignee_type=TYPE- 與
--reservation_assignment旗標搭配使用時,可指定要顯示的實體類型。請使用下列其中一個值:FOLDERORGANIZATIONPROJECT
--connection={true|false}- 如要顯示連線相關資訊,請設為
true。預設值為false。詳情請參閱「查看連線資源」。 --dataset={true|false}或-d={true|false}- 如要顯示資料集相關資訊,請設為
true。預設值為false。 --encryption_service_account={true|false}- 如要顯示專案的加密服務帳戶 (如有),或建立帳戶 (如無),請設為
true。預設值為false。請與--project_id旗標搭配使用。 --job={true|false}或-j={true|false}- 如要顯示工作相關資訊,請設為
true。預設值為false。 --job_type=JOB_TYPE- 與
--reservation_assignment旗標搭配使用時,可指定要顯示的預留項目指派作業工作類型。請使用下列其中一個值:QUERYPIPELINEML_EXTERNAL
--model={true|false}或-m={true|false}- 如要顯示 BigQuery ML 模型的相關資訊,請設為
true。預設值為false。 --reservation={true|false}- 如要顯示預訂資訊,請設為
true。預設值為false。 --reservation_assignment={true|false}- 設為
true時,指令會顯示指定資料夾、組織或專案的預留項目指派作業。這個指令會顯示目標資源的明確指派項目 (如有),否則會顯示從父項資源繼承的指派項目。例如,專案可能會繼承上層資料夾的指派項目。使用這個旗標時,--job_type、--assignee_type和--assignee_id旗標會套用。預設值為false。 --routine={true|false}- 如要顯示日常安排的相關資訊,請設為
true。預設值為false。常式可以是永久使用者定義函式、資料表函式 (預先發布版) 或預存程序。 --schema={true|false}- 如要只顯示資料表的結構定義,請設為
true。預設值為false。 --transfer_config={true|false}- 如要顯示移轉設定的相關資訊,請設為
true。預設值為false。 --transfer_run={true|false}- 如要顯示移轉作業執行的相關資訊,請設為
true。預設值為false。 --view={true|false}- 如要顯示檢視畫面的相關資訊,請設為
true。預設值為false。 RESOURCE- :要顯示資訊的資源。
如要進一步瞭解如何使用 bq show 指令,請參閱下列內容:
bq update
使用 bq update 指令變更資源。
劇情概要
bq update [FLAGS] [RESOURCE]
旗標和引數
bq update 指令會使用下列旗標和引數:
--add_tags=TAGS- 僅適用於資料集和資料表。指定要附加至資源的標記,並以半形逗號分隔。例如:
556741164180/env:prod,myProject/department:sales。每個標記都必須有命名空間限定鍵名稱和值簡稱。 --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS- 指派給預留項目的自動調度資源運算單元數量。這個值等於預留項目大小上限減去基準運算單元數量。只有在
--reservation旗標和預留項目是以版本建立時,才可使用。 --capacity_commitment={true|false}- 如要更新運算資源承諾使用合約,請設為
true。這個旗標可與--merge、--plan、--renewal_plan、--split和--slots旗標搭配使用。 --clear_all_tags={true|false}- 僅適用於資料集和資料表。如要清除資源的所有標記,請設為
true。預設值為false。 --clear_label=KEY:VALUE- 從資源中移除標籤。請使用
KEY:VALUE格式指定要移除的標籤。重複這個旗標,即可移除多個標籤。 --clustering_fields=COLUMNS- 更新資料表的叢集規格。COLUMNS 值是以半形逗號分隔的清單,列出要用於分群的資料欄名稱。如要移除叢集,請將 COLUMNS 設為
""(空字串)。詳情請參閱「修改叢集規格」。 --target_job_concurrency=CONCURRENCY- 與
--reservation旗標搭配使用時,可指定同時執行的查詢目標數量。預設值為 0,表示系統會根據預留項目大小自動設定並行數量。詳情請參閱「使用查詢佇列」。 --dataset={true|false}或-d={true|false}- 如要更新資料集,請設為
true。預設值為false。 --default_kms_key=KEY- 指定預設 Cloud KMS 金鑰資源 ID,用於加密資料集中的資料表資料。如果建立資料表或查詢時未提供明確金鑰,系統會使用預設金鑰。
--default_partition_expiration=SECONDS這個整數會指定資料集中新建立分區資料表的所有分區預設到期時間 (以秒為單位)。此標記沒有最小值。
分區的到期時間會設定為分區的世界標準時間日期加此整數值。如果設定這項屬性,則會覆寫資料集層級的預設資料表到期時間 (如有)。如果您在建立或更新分區資料表時提供
--time_partitioning_expiration旗標,則資料表層級的分區到期時間會優先於資料集層級的預設分區到期時間。指定0可移除現有的到期時間。--default_table_expiration=SECONDS這個整數會更新資料集中新建立資料表的預設生命週期 (以秒為單位)。到期時間會設為目前世界標準時間加此值。指定
0可移除現有的到期時間。--description=DESCRIPTION更新資料集、資料表、資料表快照、模型或檢視表的說明。
--destination_reservation_id=RESERVATION_ID與
--reservation_assignment旗標搭配使用時,可將現有的預留項目指派作業移至指定的預留項目。值為目的地預留項目的 ID。詳情請參閱「將指派作業移至其他預留項目」。--display_name=DISPLAY_NAME更新移轉設定的顯示名稱。
--etag=ETAG做為篩選器;只有在資源的 ETag 與
ETAG引數中指定的字串相符時,才會更新資源。--expiration SECONDS如要更新資料表、模型、資料表快照或檢視表的到期時間,請加入這個旗標。將
SECONDS替換為從更新時間到到期時間的秒數。如要移除資料表、模型、資料表快照或檢視表的到期時間,請將SECONDS引數設為 0。--external_table_definition={TABLE::PATH_TO_FILE|TABLE::DEFINITION}使用指定的資料表定義更新外部資料表。資料表定義可以是本機 JSON 資料表定義檔案的路徑,也可以是
SCHEMA@SOURCE_FORMAT=CLOUD_STORAGE_URI格式的內嵌資料表定義。SCHEMA值是以逗號分隔的資料欄定義清單,格式為FIELD:DATA_TYPE, FIELD:DATA_TYPE。如果使用資料表定義檔,請勿在檔案名稱中加入副檔名。例如:
--external_table_definition=myTable::/tmp/tabledef
--external_table_definition=myTable::Region:STRING,Quarter:STRING,Total_sales:INTEGER@CSV=gs://mybucket/sales.csv
--ignore_idle_slots={true|false}與
--reservation旗標搭配使用。如要限制在指定預留項目中執行的工作,僅使用分配給該預留項目的運算單元,請設為true。預設值為false,指定預留項目中的工作可以使用其他預留項目的閒置運算單元,或未分配給任何預留項目的運算單元。詳情請參閱「閒置運算單元」。--max_staleness=INTERVAL指定 INTERVAL 值,決定查詢 materialized view 或外部資料表時,允許的最大過時程度。預設值為
0-0 0 0:0:0。例如:
- 1 天:
0-0 1 0:0:0 - 1 小時:
0-0 0 1:0:0
如要使用這個旗標,您必須使用
--external_table_definition旗標指定資料表定義。- 1 天:
--max_time_travel_hours=HOURS指定資料集時間旅行窗口的時長 (以小時為單位)。
--max_time_travel_hours值必須是 24 的倍數 (48、72、96、120、144、168),介於 48 (2 天) 和 168 (7 天) 之間。--merge={true|false}如要合併兩項運算資源承諾使用合約,請將
--merge設為true。將--capacity_commitment旗標設為true,使用--location旗標指定要合併的承諾使用合約位置,並將RESOURCE替換為要合併的兩項承諾使用合約 ID,並以半形逗號分隔。詳情請參閱「合併兩項承諾使用合約」。--metadata_cache_mode=METADATA_CACHE_MODE為具有連線的外部資料表啟用中繼資料快取。請使用下列其中一個值:
AUTOMATICMANUAL
指定
AUTOMATIC即可自動重新整理快取的中繼資料。指定MANUAL即可停止自動重新整理。如要使用這個旗標,您必須使用--external_table_definition旗標指定資料表定義。--model={true|false}或-m={true|false}如要更新 BigQuery ML 模型的中繼資料,請設為
true。預設值為false。--params={"PARAMETER":"VALUE"} or -p={"PARAMETER":"VALUE"}更新移轉設定的參數。參數會因資料來源而異。詳情請參閱 BigQuery 資料移轉服務簡介一文。
--plan=PLAN與
--capacity_commitment旗標搭配使用時,可將運算資源承諾使用合約轉換為指定的較長合約方案。將PLAN替換為下列其中一個值:ANNUALTHREE_YEAR
--refresh_window_days=DAYS一個整數,用來指定移轉設定的更新期 (以天為單位)。
--remove_tags=TAG_KEYS僅適用於資料集和資料表。指定要從資源中移除的標記,並以半形逗號分隔,例如
556741164180/env,myProject/department。每個標記鍵都必須有命名空間鍵名稱。--renewal_plan=PLAN與
--capacity_commitment旗標搭配使用時,可更新年度容量承諾使用合約的續約方案。將PLAN替換為下列其中一個值:ANNUALTHREE_YEARNONE
使用舊版固定費率定價的客戶,也可以使用下列其中一個值:
FLEXMONTHLYANNUAL
--reservation={true|false}指定是否要更新預留項目。預設值為
false。--reservation_assignment={true|false}指定是否要更新預留項目指派作業。預設值為
false。--schema={SCHEMA_FILE|SCHEMA}指定本機 JSON 結構定義檔案的路徑,或以逗號分隔的資料欄定義清單,格式為
FIELD:DATA_TYPE, FIELD:DATA_TYPE。如果使用結構定義檔案,請勿在檔案名稱中加入副檔名。例如:
--schema=/tmp/tabledef
--schema=Region:STRING,Quarter:STRING,Total_sales:INTEGER
--service_account_name=SERVICE_ACCOUNT指定要用做移轉設定憑證的服務帳戶。
--set_label=KEY:VALUE指定要更新的標籤。如要更新多個標籤,請重複這個旗標。
--slots=NUMBER_OF_BASELINE_SLOTS與
--capacity_commitment和--split旗標搭配使用時,可指定要從現有運算資源承諾使用合約,分割至新合約的基準運算單元數量。將RESOURCE替換為要分割的承諾使用合約 ID。與
--reservation旗標搭配使用時,可更新預留項目中的運算單元數量。--source=FILE包含更新資源用酬載的本機 JSON 檔案路徑。例如,您可以使用此旗標指定 JSON 檔案,其中包含具有已更新
access屬性的資料集資源。這個檔案會覆寫資料集的存取控管設定。JSON 檔案不得包含位元組順序標記 (BOM)。--split={true|false}如果設為
true並與--capacity_commitment旗標搭配使用,則表示您要分割現有的運算資源承諾使用合約。使用--location旗標指定要分割承諾使用合約的位置,並使用--slots旗標指定要分割的運算單元數量。將RESOURCE替換為要分割的承諾使用合約 ID。詳情請參閱「分割承諾使用合約」。--storage_billing_model=BILLING_MODEL指定資料集的儲存空間計費模式。將
--storage_billing_model值設為PHYSICAL,即可在計算儲存空間費用時使用實體位元組,或設為LOGICAL,即可使用邏輯位元組。變更資料集的計費模式後,需要 24 小時才會生效。
變更資料集的儲存空間計費模式後,必須等待 14 天才能再次變更。
--table={true|false}或-t={true|false}指定是否要更新資料表。預設值為
false。--target_dataset=DATASET指定後,會更新移轉設定的目標資料集。
--time_partitioning_expiration=SECONDS一個整數,用來更新系統應在經過多少時間後刪除時間分區 (以秒為單位)。到期時間為分區的世界標準時間日期加此整數值。負數表示不會到期。
--time_partitioning_field=COLUMN_NAME更新用來決定時間分區建立方式的欄位。如果啟用時間分區,但未提供這個值,系統會根據載入時間將資料表分區。
--time_partitioning_type=INTERVAL指定分區類型。請使用下列其中一個值:
DAYHOURMONTHYEAR
您無法變更現有資料表的分區類型。
--transfer_config={true|false}指定是否要更新移轉設定。預設值為
false。--update_credentials={true|false}指定是否要更新移轉設定憑證。預設值為
false。--use_legacy_sql={true|false}設為
false,將檢視表的 SQL 查詢從舊版 SQL 更新為 GoogleSQL。預設值取決於配置設定。如未指定設定,預設值為true,查詢會使用舊版 SQL。--vertex_ai_model_id=VERTEX_AI_MODEL_ID指定後,會更新在 Vertex AI Model Registry 註冊的 BigQuery ML 模型 ID。
--view=QUERY指定後,系統會更新檢視表的 SQL 查詢。
--view_udf_resource=FILE更新 Cloud Storage URI 或本機程式碼檔案的路徑,該檔案會立即載入並評估為檢視表 SQL 查詢中的 user-defined function 資源。重複這個標記即可指定多個檔案。
RESOURCE要更新的資源。
如要進一步瞭解如何使用 bq update 指令,請參閱下列內容:
bq version
使用 bq version 指令,顯示 bq 指令列工具的版本號碼。
劇情概要
bq version
bq wait
使用 bq wait 指令,等待指定秒數,讓工作完成。如未指定工作,指令會等待目前工作完成。
劇情概要
bq wait [FLAGS] [JOB] [SECONDS]
範例
bq wait
bq wait --wait_for_status=RUNNING 12345 100
旗標和引數
bq wait 指令會使用下列旗標和引數:
--fail_on_error={true|false}- 如要在工作於等待時間內完成時傳回成功狀態 (即使工作失敗),請設為
false。預設值為true。等待時間過後,如果工作仍在執行,或工作已完成但失敗,指令就會結束並傳回錯誤。 --wait_for_status=STATUS指定後,系統會等待特定工作狀態,然後再結束。請使用下列其中一個值:
PENDINGRUNNINGDONE
預設值為
DONE。JOB指定要等待的工作。您可以使用
bq ls --jobs myProject指令找出工作 ID。SECONDS指定等待工作完成的秒數上限。如果輸入
0,指令會輪詢工作完成狀態,並立即傳回。如未指定整數值,指令會等到工作完成。