Google BigQuery:通过 Python google-cloud-bigquery 版本 0.27.0 与 0.28.0 创建视图
Posted
技术标签:
【中文标题】Google BigQuery:通过 Python google-cloud-bigquery 版本 0.27.0 与 0.28.0 创建视图【英文标题】:Google BigQuery: creating a view via Python google-cloud-bigquery version 0.27.0 vs. 0.28.0 【发布时间】:2017-11-13 20:40:09 【问题描述】:全部,
我在 python 中使用大约两周前发布的 0.28 版 bq 库创建 Google BigQuery 视图时遇到问题。我很确定问题就在我这边,我遗漏了一些东西,但我找不到问题。
请温柔一点,我不会在网上问很多问题,但我很困惑。 我也不是完全不称职,这里有一些细节:
-
我的 GOOGLE_APPLICATION_CREDENTIALS 设置正确
我通过 python 对 bq 运行的所有其他命令都很好
我已经查看了 https://cloud.google.com/bigquery/docs/python-client-migration
我认为问题在于“修复” https://github.com/GoogleCloudPlatform/google-cloud-python/pull/4038 BigQuery:将 table.create() 替换为 client.create_table() #4038
我尝试过旧版 sql 与标准 sql 我在 python 2.7.12 上(不能很快升级,企业版)问题?下面第二个块中的代码创建了一个没有模式和记录的表。它显然应该创建一个 VIEW,对吧?
sudo pip install -Iv google-cloud-bigquery==0.27.0
from google.cloud import bigquery
project=None
dataset_name = 'my_dataset_id'
view_name = 'vw_dummy_data20'
sqlQuery = 'select record_id as id, UPPER(first_name) as first_name, UPPER(last_name) as last_name from [my_project_code:my_dataset_id.dummy_data13]'
bigquery_client = bigquery.Client(project=project)
dataset = bigquery_client.dataset(dataset_name)
table = dataset.table(view_name)
table.view_query = sqlQuery
table.create()
以上工作正常,创建视图,太棒了!
下面,只创建了一个表,没有行,没有架构,呸!
sudo pip 卸载 google-cloud-bigquery
sudo pip install -Iv google-cloud-bigquery==0.28.0
from google.cloud import bigquery
project=None
dataset_name = 'my_dataset_id'
view_name = 'vw_dummy_data21'
sqlQuery = 'select record_id as id, UPPER(first_name) as first_name, UPPER(last_name) as last_name from [my_project_code:my_dataset_id.dummy_data13]'
bigquery_client = bigquery.Client(project=project)
dataset_ref = bigquery_client.dataset(dataset_name)
table_ref = dataset_ref.table(view_name)
table_ref.view_query = sqlQuery
table_ref.view_use_legacy_sql = True
table = bigquery.Table(table_ref)
bigquery_client.create_table(table)
其他链接:
How can I create a new view in bigquery using the python API? https://googlecloudplatform.github.io/google-cloud-python/latest/bigquery/usage.html非常感谢任何有用的想法。
谢谢和最好的问候...丰富
【问题讨论】:
【参考方案1】:你离得太近了!
问题在于线条
table_ref.view_query = sqlQuery
table_ref.view_use_legacy_sql = True
TableReference
类不包含这些属性。相反,您必须在 Table
类中填充它们,如
table = bigquery.Table(table_ref)
table.view_query = sqlQuery
table.view_use_legacy_sql = True
bigquery_client.create_table(table)
【讨论】:
【参考方案2】:蒂姆的回答很完美,非常感谢。
这是最终代码:
from google.cloud import bigquery
bigquery_client = bigquery.Client(project=project)
dataset_ref = bigquery_client.dataset(dataset_name)
table_ref = dataset_ref.table(view_name)
table = bigquery.Table(table_ref)
table.view_query = sqlQuery
table.view_use_legacy_sql = True
bigquery_client.create_table(table)
【讨论】:
以上是关于Google BigQuery:通过 Python google-cloud-bigquery 版本 0.27.0 与 0.28.0 创建视图的主要内容,如果未能解决你的问题,请参考以下文章
Python:如何快速上传到 Google BigQuery?
如何使用 Google BigQuery python API 获得超过 100,000 个响应结果?
如何从 Python 中的 App Engine 在 Google BigQuery 上创建架构?
使用 Python 将 Google Cloud Storage 中的数据加载到 BigQuery 时,如何强制忽略双引号?