In Google BigQuery we can define named subqueries via WITH clauses.
Those WITH clauses are a very comfortable way to structure complex queries as it allows to reference those queries like actual tables later on.
Note: BigQuery also supports actual temporary tables via CREATE TEMPORARY TABLE. See the official documention on
temporary tables for further infos.
This is out of scope for this snippet, though.
Code
WITH filtered_data as (
SELECT
id
FROM
table
WHERE
id BETWEEN 5 and 10
)
SELECT
*
FROM
filtered_data
Working Example
Run on BigQuery
Links
- Gist on Github
- Example on BigQuery
- Answer to "How to create temporary table in Google BigQuery" on Stackoverflow
Use cases
Named subqueries are a great way to structure complex queries and give sub-results a meaningful name. When working with partitioned tables, I always use temporary tables via WITH to make sure I restrict the query to scan only a limited number of partitions.
Conceptual example: ```` DECLARE from_date TIMESTAMP DEFAULT "2018-04-09"; DECLARE to_date TIMESTAMP DEFAULT "2018-04-10";
WITH huge_table_partition as( SELECT * FROM huge_table WHERE _PARTITIONTIME BETWEEN from_date AND to_date )
SELECT * FROM huge_table_partition ```
Wanna stay in touch?
Since you ended up on this blog, chances are pretty high that you're into Software Development (probably PHP, Laravel, Docker or Google Big Query) and I'm a big fan of feedback and networking.
So - if you'd like to stay in touch, feel free to shoot me an email with a couple of words about yourself and/or connect with me on LinkedIn or Twitter or simply subscribe to my RSS feed or go the crazy route and subscribe via mail and don't forget to leave a comment :)
Subscribe to posts via mail
