Reputation: 119
I am trying to create a query to pull data from 2 different tables in BQ. Both of them contain the same schema. Is it possible to do something like this in BQ?
FROM (TABLE_DATE_RANGE([567.ga_sessions_],[1234.ga_sessions_],DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY'))) )
Upvotes: 1
Views: 618
Reputation: 172944
Table wildcard functions are a convenient way in BigQuery Legacy SQL to query data from a specific set of tables.
Specific Set
here is actually Dataset
.
So if your tables are spread across different datasets - you will need to UNION ALL subsets that belong to different datasets.
In your case it will be union of two sets:
SELECT <fields>
FROM
TABLE_DATE_RANGE([567.ga_sessions_], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')),
TABLE_DATE_RANGE([1234.ga_sessions_], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY'))
added to address latest comment:
SELECT
Domains,
DATE,
EXACT_COUNT_DISTINCT(fullvisitorid) AS UniqueCustomers,
FROM (
SELECT
*,
"SiteA" AS Domains,
FROM
TABLE_DATE_RANGE([12342.ga_sessions_], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY'))),
(
SELECT
*,
"SiteB" AS Domains,
FROM
TABLE_DATE_RANGE([12311.ga_sessions_], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY'))),
GROUP BY
DATE,
Domains
Upvotes: 1
Reputation: 1
For Legacy SQL, use the comma as a union operator to union two separate TABLE_DATE_RANGEs, like so:
FROM
TABLE_DATE_RANGE([1234.ga_sessions_], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')),
TABLE_DATE_RANGE([567.ga_sessions_], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY'))
Upvotes: 0
Reputation: 2305
You can do this using the _TABLE_SUFFIX pseudo column in Standard SQL.
SELECT ...
FROM `myproject.567.ga_sessions_*`
WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d", DATE_ADD(CURRENT_DATE(), INTERVAL -2 DAY)) AND FORMAT_DATE("%Y%m%d", CURRENT_DATE())
UNION ALL
SELECT ...
FROM `myproject.1234.ga_sessions_*`
WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d", DATE_ADD(CURRENT_DATE(), INTERVAL -2 DAY)) AND FORMAT_DATE("%Y%m%d", CURRENT_DATE())
In Legacy SQL, something like this:
SELECT
<desired fields>
FROM
TABLE_DATE_RANGE([myproject.1234], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')),
TABLE_DATE_RANGE([myproject.567], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY'))
Upvotes: 1