python - 使用 Google BigQuery Python 库创建或替换表
问题描述
我的 Python 代码是这样的:
from google.cloud import bigquery
client = bigquery.Client(
project='my-project',
credentials=credentials,
)
sql = '''
CREATE OR REPLACE TABLE `my-project.my_dataset.test` AS
WITH some_table AS (
SELECT * FROM `my-project.my_dataset.table_1`
),
some_other_table AS (
SELECT id, some_column FROM my-project.my_dataset.table_2
)
SELECT * FROM some_table
LEFT JOIN some_other_table ON some_table.unique_id=some_other_table.id
'''
query_job = client.query(sql)
query_job.result()
该查询在 Google BigQuery 控制台 UI 中有效,但在从 Python 执行上述操作时无效。
我知道通过使用 CREATE OR REPLACE 这是一个“DDL”请求,我无法弄清楚如何从 Python 库中执行。您可以在 job.config 中设置目标表,这使您可以创建表,但是您无法获得 CREATE OR REPLACE 功能。
感谢您的任何帮助。
解决方案
在仔细查看文档之后,我可以说Python SDK
forBigQuery
没有指定将DDL
语句作为查询执行的方式。您可以在此处query
找到您正在使用的函数的文档化代码。如您所见,参数需要一个语句。query
SQL
尽管如此,我试图重现你的问题,它对我有用。DDL
我可以通过使用您尝试做的语句来完美地创建表格。因此我们可以得出结论,API 将 DDL 视为 SQL 的子集。我建议您评论您收到的错误,以便我可以为您提供更好的支持。
推荐阅读
- sql-server - SQL Pivot 创建 NULL 而不是在 DateTime 值上合并
- jsf - 获取数据表列表
- reactjs - React Router - 使用组件参数并将道具传递给渲染的组件?
- php - 如何在特定页面上显示 wordpress 用户地址?
- python-3.x - 只发现积极因素
- swiftui - 我无法使用按钮关闭 Modal 并从 NavigationBar 再次打开它
- python - 当两个数据帧具有不同数量的条目(值匹配但索引不匹配)时,如何使用 DataFrame.isin?
- javascript - 将 JSInterop 的 ExampleJsInterop JavaScript 代码转换为 TypeScript
- java - 未触发 LinearLayout 中的 OnClickListener
- clearcase - 列出 Clearcase 中特定文件/目录的所有分支