出现这个问题通常是因为BigQuery API的版本更新导致了代码中调用方法名称或参数名称的改变。为了解决这个问题,需要确认使用的API版本并调整相应的代码。
以下是一个示例代码,它使用了较新版本的BigQuery API 1.26.0 ,但尝试使用较旧版本的 bq_parse_files 和 bq_table_download 方法,导致出现了以上的问题。
from google.cloud import bigquery
client = bigquery.Client()
dataset_id = 'my_dataset'
bucket_name = 'my_bucket'
table_name = 'my_table'
dataset_ref = client.dataset(dataset_id)
job_config = bigquery.job.ExtractJobConfig()
job_config.destination_format = 'CSV'
table_ref = dataset_ref.table(table_name)
destination_uri = 'gs://{}/{}'.format(bucket_name, table_name)
extract_job = client.extract_table(
table_ref,
destination_uri,
job_config=job_config)
extract_job.result()
files = bigquery.client.bq_parse_files(destination_uri, '.csv')
rows = bigquery.client.bq_table_download(files[0])
要解决这个问题,可以改为使用 BigQuery API v2 版本中的 extract_table_to_storage 方法来代替 extract_table 方法,并使用 download_blob 方法来获取 CSV 格式的数据。更具体地说,下面是更改的代码:
from google.cloud import bigquery
from google.cloud import storage
client = bigquery.Client()
dataset_id = 'my_dataset'
bucket_name = 'my_bucket'
table_name = 'my_table'
dataset_ref = client.dataset(dataset_id)
job_config = bigquery.job.ExtractJobConfig()
job_config.destination_format = 'CSV'
table_ref = dataset_ref.table(table_name)
destination_uri = 'gs://{}/{}'.format(bucket_name, table_name)
extract_job = client.extract_table_to_storage(
table_ref,
destination_uri,
job_config=job_config)
extract_job.result()
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket