從 Python 用戶端程式庫 v0.27 遷移

Python 專用的 BigQuery 用戶端程式庫 v0.28 包含針對舊版用戶端程式庫 v0.27 以下版本的設計所做出的一些重大變更。以下是摘要說明:

  • 查詢與檢視操作預設採用標準 SQL 方言。
  • 如執行查詢等與工作相關的用戶端功能會立即啟動工作。
  • 建立、取得、更新、刪除資料集與資料表的功能已移至用戶端類別。

這個主題提供您需要對 BigQuery 用戶端程式庫的 Python 程式碼進行變更,才能使用最新版本 Python 用戶端程式庫的詳細資訊。

執行舊版用戶端程式庫

您不需要將 Python 用戶端程式碼更新至最新版本。但是,只有 v0.28 以上版本中才支援 BigQuery API 中的新功能。

如果您要繼續使用舊版 Python 用戶端程式庫,且您不想遷移程式碼,請指定您的應用程式使用的 Python 用戶端程式庫版本。如要指定特定程式庫版本,請依照以下範例所示編輯 requirements.txt 檔案:

google-cloud-bigquery==0.27

執行最新版本的用戶端程式庫。

如要安裝最新版本的 Python 用戶端程式庫,請使用 pip 指令。

pip install --upgrade google-cloud-bigquery

如需詳細指示,請參閱 BigQuery 用戶端程式庫

匯入程式庫並建立用戶端

匯入 Python 用戶端並建立用戶端物件的動作在舊版與新版程式庫中是相同的。

from google.cloud import bigquery

client = bigquery.Client()

查詢程式碼變更

使用標準 SQL 方言查詢資料

v0.28 與更新版本中的變更包括:

  • 標準 SQL 是預設 SQL 方言。
  • 使用 QueryJobConfig 類別來設定查詢工作。
  • client.query() 可提出立即啟動查詢的 API 要求。
  • 工作 ID 是選用的。若未提供,用戶端程式庫會為您產生一個。

以下範例顯示如何執行查詢。

舊版用戶端程式庫:

client = bigquery.Client()
query_job = client.run_async_query(str(uuid.uuid4()), query)

# Use standard SQL syntax.
query_job.use_legacy_sql = False

# Set a destination table.
dest_dataset = client.dataset(dest_dataset_id)
dest_table = dest_dataset.table(dest_table_id)
query_job.destination = dest_table

# Allow the results table to be overwritten.
query_job.write_disposition = 'WRITE_TRUNCATE'

query_job.begin()
query_job.result()  # Wait for query to finish.

rows = query_job.query_results().fetch_data()
for row in rows:
    print(row)

0.25.0 或更早版本的 google-cloud-bigquery 程式庫中,等待工作物件完成並不需要 job.result(),而是需要下列程式碼:

while True:
    job.reload()  # Refreshes the state via a GET request.
    if job.state == 'DONE':
        if job.error_result:
            raise RuntimeError(job.errors)
        return
    time.sleep(1)

0.25.0 或更早版本的 google-cloud-bigquery 程式庫中,不會使用 job.query_results().fetch_data() 來取得結果資料列,而是會使用下列程式碼:

rows = query_job.results().fetch_data()

最新版本的用戶端程式庫:

根據預設,Python 用戶端程式庫現在使用標準 SQL。

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

# from google.cloud import bigquery
# client = bigquery.Client()

query = (
    "SELECT name FROM `bigquery-public-data.usa_names.usa_1910_2013` "
    'WHERE state = "TX" '
    "LIMIT 100"
)
query_job = client.query(
    query,
    # Location must match that of the dataset(s) referenced in the query.
    location="US",
)  # API request - starts the query

for row in query_job:  # API request - fetches results
    # Row values can be accessed by field name or index
    assert row[0] == row.name == row["name"]
    print(row)

如需使用最新 Python 用戶端程式庫版本執行查詢的更多範例,請參閱:

使用舊版 SQL 方言查詢資料

以下範例顯示如何使用舊版 SQL 方言執行查詢:

舊版用戶端程式庫:

舊版用戶端程式庫預設使用舊版 SQL 語法。如要瞭解如何設定及執行查詢,請參閱查詢範例

最新版本的用戶端程式庫:

用戶端程式庫預設使用標準 SQL 語法。將 use_legacy_sql 設為 true 以使用舊版 SQL。如要瞭解如何設定及執行查詢,請參閱查詢範例

同步查詢資料

v0.28 與更新版本中建議使用 Client.query() 方法,因為這個方法能夠存取 QueryJob 中的統計資料與查詢的其他屬性。

舊版用戶端程式庫:

query_results = client.run_sync_query(query)
query_results.use_legacy_sql = False

query_results.run()

# The query might not complete in a single request. To account for a
# long-running query, force the query results to reload until the query
# is complete.
while not query_results.complete:
  query_iterator = query_results.fetch_data()
  try:
     six.next(iter(query_iterator))
  except StopIteration:
      pass

rows = query_results.fetch_data()
for row in rows:
    print(row)

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

# from google.cloud import bigquery
# client = bigquery.Client()

query = (
    "SELECT name FROM `bigquery-public-data.usa_names.usa_1910_2013` "
    'WHERE state = "TX" '
    "LIMIT 100"
)
query_job = client.query(
    query,
    # Location must match that of the dataset(s) referenced in the query.
    location="US",
)  # API request - starts the query

for row in query_job:  # API request - fetches results
    # Row values can be accessed by field name or index
    assert row[0] == row.name == row["name"]
    print(row)

資料表程式碼變更

資料表參照

使用 TableReference 物件來參照沒有其他屬性的資料表,並使用 Table 來參照完整資料表資源。之前使用 Table 類別的數個屬性現在都使用 v0.28 與更新版本中的 TableReference 類別。例如:

  • QueryJob.destination 現在是 TableReference
  • client.dataset('mydataset').table('mytable') 現在會傳回 TableReference

如需同時使用 TableReferenceTable 類別的示例,請參閱如何建立資料表

從本機檔案載入資料

以下範例顯示如何將本機檔案載入到 BigQuery 資料表。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
table = dataset.table(table_name)

# Reload the table to get the schema.
table.reload()

with open(source_file_name, 'rb') as source_file:
    # This example uses CSV, but you can use other formats.
    # See https://cloud.google.com/bigquery/loading-data
    job = table.upload_from_file(
        source_file, source_format='text/csv')

# Wait for the load job to complete.
while True:
    job.reload()
    if job.state == 'DONE':
        if job.error_result:
            raise RuntimeError(job.errors)
        return
    time.sleep(1)

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

# from google.cloud import bigquery
# client = bigquery.Client()
# filename = '/path/to/file.csv'
# dataset_id = 'my_dataset'
# table_id = 'my_table'

dataset_ref = client.dataset(dataset_id)
table_ref = dataset_ref.table(table_id)
job_config = bigquery.LoadJobConfig()
job_config.source_format = bigquery.SourceFormat.CSV
job_config.skip_leading_rows = 1
job_config.autodetect = True

with open(filename, "rb") as source_file:
    job = client.load_table_from_file(
        source_file,
        table_ref,
        location="US",  # Must match the destination dataset location.
        job_config=job_config,
    )  # API request

job.result()  # Waits for table load to complete.

print("Loaded {} rows into {}:{}.".format(job.output_rows, dataset_id, table_id))

詳情請參閱從本機資料來源載入資料

從 Cloud Storage 載入資料

下列範例說明如何將檔案從 Cloud Storage 載入到 BigQuery 表格。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
table = dataset.table(table_name)
job_id = str(uuid.uuid4())

job = client.load_table_from_storage(
    job_id, table, 'gs://bucket_name/object_name')
job.begin()

# Wait for the load job to complete.
while True:
    job.reload()
    if job.state == 'DONE':
        if job.error_result:
            raise RuntimeError(job.errors)
        return
    time.sleep(1)

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_id = 'my_dataset'

dataset_ref = client.dataset(dataset_id)
job_config = bigquery.LoadJobConfig()
job_config.schema = [
    bigquery.SchemaField("name", "STRING"),
    bigquery.SchemaField("post_abbr", "STRING"),
]
job_config.skip_leading_rows = 1
# The source format defaults to CSV, so the line below is optional.
job_config.source_format = bigquery.SourceFormat.CSV
uri = "gs://cloud-samples-data/bigquery/us-states/us-states.csv"

load_job = client.load_table_from_uri(
    uri, dataset_ref.table("us_states"), job_config=job_config
)  # API request
print("Starting job {}".format(load_job.job_id))

load_job.result()  # Waits for table load to complete.
print("Job finished.")

destination_table = client.get_table(dataset_ref.table("us_states"))
print("Loaded {} rows.".format(destination_table.num_rows))

詳情請參閱從 Cloud Storage 載入資料

將資料表擷取至 Cloud Storage

下列範例說明如何將資料表擷取至 Cloud Storage:

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
table = dataset.table(table_name)
job_id = str(uuid.uuid4())

job = client.extract_table_to_storage(
    job_id, table, 'gs://bucket_name/object_name')
job.begin()

# Wait for the job to complete.
while True:
    job.reload()
    if job.state == 'DONE':
        if job.error_result:
            raise RuntimeError(job.errors)
        return
    time.sleep(1)

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

# from google.cloud import bigquery
# client = bigquery.Client()
# bucket_name = 'my-bucket'
project = "bigquery-public-data"
dataset_id = "samples"
table_id = "shakespeare"

destination_uri = "gs://{}/{}".format(bucket_name, "shakespeare.csv")
dataset_ref = client.dataset(dataset_id, project=project)
table_ref = dataset_ref.table(table_id)

extract_job = client.extract_table(
    table_ref,
    destination_uri,
    # Location must match that of the source table.
    location="US",
)  # API request
extract_job.result()  # Waits for job to complete.

print(
    "Exported {}:{}.{} to {}".format(project, dataset_id, table_id, destination_uri)
)

詳情請參閱匯出資料表資料

複製資料表

以下範例顯示如何將資料表複製到另一個資料表。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
table = dataset.table(table_name)
destination_table = dataset.table(new_table_name)

job_id = str(uuid.uuid4())
job = client.copy_table(job_id, destination_table, table)

job.create_disposition = (
        google.cloud.bigquery.job.CreateDisposition.CREATE_IF_NEEDED)
job.begin()

# Wait for the job to complete.
while True:
    job.reload()
    if job.state == 'DONE':
        if job.error_result:
            raise RuntimeError(job.errors)
        return
    time.sleep(1)

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

# from google.cloud import bigquery
# client = bigquery.Client()

source_dataset = client.dataset("samples", project="bigquery-public-data")
source_table_ref = source_dataset.table("shakespeare")

# dataset_id = 'my_dataset'
dest_table_ref = client.dataset(dataset_id).table("destination_table")

job = client.copy_table(
    source_table_ref,
    dest_table_ref,
    # Location must match that of the source and destination tables.
    location="US",
)  # API request

job.result()  # Waits for job to complete.

assert job.state == "DONE"
dest_table = client.get_table(dest_table_ref)  # API request
assert dest_table.num_rows > 0

詳情請參閱複製資料表

以串流方式將資料傳入資料表

以下範例顯示如何將資料列寫入到資料表的串流緩衝區。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
table = dataset.table(table_name)

# Reload the table to get the schema.
table.reload()

rows = [('values', 'in', 'same', 'order', 'as', 'schema')]
errors = table.insert_data(rows)

if not errors:
    print('Loaded 1 row into {}:{}'.format(dataset_name, table_name))
else:
    do_something_with(errors)

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

# TODO(developer): Uncomment the lines below and replace with your values.
# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_id = 'my_dataset'  # replace with your dataset ID
# For this sample, the table must already exist and have a defined schema
# table_id = 'my_table'  # replace with your table ID
# table_ref = client.dataset(dataset_id).table(table_id)
# table = client.get_table(table_ref)  # API request

rows_to_insert = [(u"Phred Phlyntstone", 32), (u"Wylma Phlyntstone", 29)]

errors = client.insert_rows(table, rows_to_insert)  # API request

assert errors == []

詳情請參閱以串流方式將資料傳入 BigQuery

列出資料表

以下範例顯示如何列出資料集中的資料表。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
for table in dataset.list_tables():
    print(table.name)

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset that contains
#                  the tables you are listing.
# dataset_id = 'your-project.your_dataset'

tables = client.list_tables(dataset_id)

print("Tables contained in '{}':".format(dataset_id))
for table in tables:
    print("{}.{}.{}".format(table.project, table.dataset_id, table.table_id))

詳情請參閱列出資料表

取得資料表

以下範例顯示如何取得資料表。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
table = dataset.table(table_name)
table.reload()

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set table_id to the ID of the model to fetch.
# table_id = 'your-project.your_dataset.your_table'

table = client.get_table(table_id)

print(
    "Got table '{}.{}.{}'.".format(table.project, table.dataset_id, table.table_id)
)

# View table properties
print("Table schema: {}".format(table.schema))
print("Table description: {}".format(table.description))
print("Table has {} rows".format(table.num_rows))

詳情請參閱取得資料表的相關資訊

檢查資料表是否存在

BigQuery API 不提供原生 exists 方法,而是會取得資料表資源並檢查那個要求是否產生 404 錯誤。之前,用戶端程式庫提供 exists() 輔助方法來執行這個檢查。exists() 輔助方法允許一些不太有效率的使用案例,例如在嘗試取得完整資源之前呼叫 exists()。因此,已從用戶端程式庫中移除 exists() 輔助方法。

以下範例顯示如何檢查資料表是否存在。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
table = dataset.table(table_name)
if table.exists():
    # do something
else:
    # do something else

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

def table_exists(client, table_reference):
    """Return if a table exists.

    Args:
        client (google.cloud.bigquery.client.Client):
            A client to connect to the BigQuery API.
        table_reference (google.cloud.bigquery.table.TableReference):
            A reference to the table to look for.

    Returns:
        bool: ``True`` if the table exists, ``False`` otherwise.
    """
    from google.cloud.exceptions import NotFound

    try:
        client.get_table(table_reference)
        return True
    except NotFound:
        return False

建立資料表

以下範例顯示如何建立資料表。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
table = dataset.table(table_name)
table.create()

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

from google.cloud import bigquery

schema = [
    bigquery.SchemaField("full_name", "STRING", mode="REQUIRED"),
    bigquery.SchemaField("age", "INTEGER", mode="REQUIRED"),
]

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set table_id to the ID of the table to create
# table_id = "your-project.your_dataset.your_table_name"

table = bigquery.Table(table_id, schema=schema)
table = client.create_table(table)  # API request
print(
    "Created table {}.{}.{}".format(table.project, table.dataset_id, table.table_id)
)

詳情請參閱建立資料表

更新資料表

以下範例顯示如何更新資料表。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
table = dataset.table(table_name)
table.patch(description='new description')

請注意,舊版程式庫不會透過 etag 屬性檢查資料表資源的版本,所以讀取-修改-寫入的程序並不安全。

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

# from google.cloud import bigquery
# client = bigquery.Client()
# table_ref = client.dataset('my_dataset').table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.description == "Original description."
table.description = "Updated description."

table = client.update_table(table, ["description"])  # API request

assert table.description == "Updated description."

詳情請參閱更新資料表屬性

刪除資料表

以下範例顯示如何刪除資料表。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
table = dataset.table(table_name)
table.delete()

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set table_id to the ID of the table to fetch.
# table_id = 'your-project.your_dataset.your_table'

# If the table does not exist, delete_table raises
# google.api_core.exceptions.NotFound unless not_found_ok is True
client.delete_table(table_id, not_found_ok=True)
print("Deleted table '{}'.".format(table_id))

詳情請參閱刪除資料表

資料集程式碼變更

資料集參照

使用 DatasetReference 物件來參照沒有其他屬性的資料集,並使用 Dataset 來參照完整資料集資源。之前使用 Dataset 類別的某些方法現在都使用 v0.28 與更新版本中的 DatasetReference 類別。例如:

  • client.dataset('mydataset') 現在會傳回 DatasetReference

如需同時使用 DatasetReferenceDataset 類別的示例,請參閱如何建立資料集

列出資料集

以下範例顯示如何列出專案中的資料集。

舊版用戶端程式庫:

for dataset in client.list_datasets():
    print(dataset.name)

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

datasets = list(client.list_datasets())
project = client.project

if datasets:
    print("Datasets in project {}:".format(project))
    for dataset in datasets:  # API request(s)
        print("\t{}".format(dataset.dataset_id))
else:
    print("{} project does not contain any datasets.".format(project))

詳情請參閱列出資料集

取得資料集

以下範例顯示如何取得資料集。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
dataset.reload()

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = 'your-project.your_dataset'

dataset = client.get_dataset(dataset_id)

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
friendly_name = dataset.friendly_name
print(
    "Got dataset '{}' with friendly_name '{}'.".format(
        full_dataset_id, friendly_name
    )
)

# View dataset properties
print("Description: {}".format(dataset.description))
print("Labels:")
labels = dataset.labels
if labels:
    for label, value in labels.items():
        print("\t{}: {}".format(label, value))
else:
    print("\tDataset has no labels defined.")

# View tables in dataset
print("Tables:")
tables = list(client.list_tables(dataset))  # API request(s)
if tables:
    for table in tables:
        print("\t{}".format(table.table_id))
else:
    print("\tThis dataset does not contain any tables.")

詳情請參閱取得資料集相關資訊

檢查資料集是否存在

BigQuery API 不提供原生的 exists 方法,而是會取得資料集資源並檢查該要求是否產生 404 錯誤。用戶端程式庫之前會提供 exists() 輔助工具來執行這個檢查。然而,exists() 輔助工具造成一些效率不佳的應用實例,像是在嘗試取得完整資源前呼叫 exists()。因此,exists() 輔助工具已經從用戶端程式庫中移除。

下列範例說明如何檢查資料集是否存在。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
if dataset.exists():
    # do something
else:
    # do something else

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

def dataset_exists(client, dataset_reference):
    """Return if a dataset exists.

    Args:
        client (google.cloud.bigquery.client.Client):
            A client to connect to the BigQuery API.
        dataset_reference (google.cloud.bigquery.dataset.DatasetReference):
            A reference to the dataset to look for.

    Returns:
        bool: ``True`` if the dataset exists, ``False`` otherwise.
    """
    from google.cloud.exceptions import NotFound

    try:
        client.get_dataset(dataset_reference)
        return True
    except NotFound:
        return False

建立資料集

以下範例顯示如何建立資料集。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
dataset.create()

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset to create.
# dataset_id = "{}.your_dataset".format(client.project)

# Construct a full Dataset object to send to the API.
dataset = bigquery.Dataset(dataset_id)

# TODO(developer): Specify the geographic location where the dataset should reside.
dataset.location = "US"

# Send the dataset to the API for creation.
# Raises google.api_core.exceptions.Conflict if the Dataset already
# exists within the project.
dataset = client.create_dataset(dataset)  # API request
print("Created dataset {}.{}".format(client.project, dataset.dataset_id))

詳情請參閱建立資料集

更新資料集

以下範例顯示如何更新資料集。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
dataset.patch(description='new description')

請注意,舊版程式庫不會透過 etag 屬性檢查資料集資源的版本,所以讀取-修改-寫入的程序並不安全。

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = 'your-project.your_dataset'

dataset = client.get_dataset(dataset_id)
dataset.description = "Updated description."
dataset = client.update_dataset(dataset, ["description"])

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
print(
    "Updated dataset '{}' with description '{}'.".format(
        full_dataset_id, dataset.description
    )
)

詳情請參閱更新資料集屬性

刪除資料集

以下範例顯示如何刪除資料集。

舊版用戶端程式庫:

dataset = client.dataset(dataset_name)
dataset.delete()

最新版本的用戶端程式庫:

Python

在試行此示例之前,請前往 BigQuery 快速入門導覽課程:使用用戶端程式庫頁面,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set model_id to the ID of the model to fetch.
# dataset_id = 'your-project.your_dataset'

# Use the delete_contents parameter to delete a dataset and its contents
# Use the not_found_ok parameter to not receive an error if the dataset has already been deleted.
client.delete_dataset(dataset_id, delete_contents=True, not_found_ok=True)

print("Deleted dataset '{}'.".format(dataset_id))

詳情請參閱刪除資料集

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁