googleapis / googleapis/google-cloud-python

Add documentation on multi-statement queries

未关闭
#15,771 1 条评论 1 个 reaction 已指派 1 人 已指派给 @chalmerlowe 在 GitHub 查看
api: bigquery priority: p3 type: docs
主要语言
Python
星标
5.4k
派生
1.8k
平均合并
3 天 4 小时
30 天内合并 PR
122

描述

**Is your feature request related to a problem? Please describe.**
I'm unsure how to make the best use of the library. Say I have a query like:
```sql
CREATE TEMP TABLE matching_foos AS (
SELECT foo_table.name, foo_table.id FROM foo_table
WHERE foo_table.name LIKE "%123%"
);
SELECT matching_foos.name, matching_foos.id
FROM matching_foos;
```

It's my understanding that as of googleapis/python-bigquery-sqlalchemy#74 it's possible to execute this multi-statement query. But, I can't figure out how to *build* such a query using sqlalchemy statements. e.g. if I have

```py
def get_matching_foos_query() -> sqlalchemy.selectable:
return sqlalchemy.select(models.foo_table.c.name, models.foo_table.c.id).where(models.foo_table.c.name.like("%123%"))
```

How would I then turn that into a temp table and then reference that table? Do I have to do a literal compile and then throw it into a sqlalchemy.text? Is there any sqlalchemy-style invocation to support this use case using similar `.c.column_a` syntax?

**Describe the solution you'd like**
Documentation (in the main README perhaps? or a link to a test file?) demonstrating how to create pythonic multi-statement queries that leverage some amount of modularity (vs straight text). Ideally would love to see: `CREATE TEMP TABLE` and `SET`/`DECLARE`
**Describe alternatives you've considered**
I really want to avoid just sending text. Doing so loses all of sqlalchemy's power to create modular statements by reusing filters, selectables, etc.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。