Skip to content

Add documentation on multi-statement queries #1137

Open
@mattalbr

Description

@mattalbr

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:

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 #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

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.

Metadata

Metadata

Labels

api: bigqueryIssues related to the googleapis/python-bigquery-sqlalchemy API.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions