我正在尝试创建一个查询来从BQ中的两个不同的表中提取数据。它们都包含相同的模式。是否有可能在BQ中做这样的事情?
FROM (TABLE_DATE_RANGE([567.ga_sessions_],[1234.ga_sessions_],DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY'))) )
请告诉我。 感谢
答案 0 :(得分:1)
您可以使用标准SQL中的_TABLE_SUFFIX伪列来执行此操作。
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())
在Legacy SQL中,类似这样:
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'))
答案 1 :(得分:1)
Table wildcard functions是BigQuery Legacy SQL中查询特定表集数据的便捷方式
Specific Set
这里实际上是Dataset
因此,如果您的表格分布在不同的数据集中,则需要UNION ALL个属于不同数据集的子集。
在你的情况下,它将是两套联合:
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'))
已添加以解决最新评论:
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
答案 2 :(得分:0)
对于Legacy SQL,使用逗号作为union运算符来联合两个单独的TABLE_DATE_RANGE,如下所示:
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'))