BQ SQL 与具有从查询派生的名称的 table 连接
BQ SQL join with a table with a name that is derived from a query
我有一些字段是日期。然后使用该日期查找 table,其名称与该字段的日期相对应。我正在进行连接以获取其他字段,但问题是如何将带有日期的字段视为可用于执行连接的变量。
示例查询如下:
with tab1 as (
select
product_id,
start_date,
from `project.user.table`
)
select * from tab1 inner join `project2.table2.{start_date}` as B on tab1.product_id = B.p_id
根据建议,我尝试了以下查询来收紧事情,但遗憾的是它不起作用。
with tab1 as (
select
cast(product_id as INT64) as product_id_64,
cast(FORMAT_DATE('%Y%m%d', CAST(start_date AS DATE)) as STRING) as start_date_string
from `project.user.table`
)
select * from `user2.dataset.*` b
inner join tab1
on b._TABLE_SUFFIX = tab1.start_date_string
导致以下错误:
Error running query. Cannot read field of type STRING as INT64 Field: GTIN
如果您的 table 是原生 BigQuery,您可以尝试测试并使用 wildcard
:
WITH tab1 as (
select
product_id,
start_date,
from `project.user.table`
)
SELECT *
FROM `<yourproject>.<yourdataset>.*` b
INNER JOIN tab1
ON b._TABLE_PREFIX = tab1.start_date
AND b.p_id = tab1.product_id
不幸的是我无法测试
我有一些字段是日期。然后使用该日期查找 table,其名称与该字段的日期相对应。我正在进行连接以获取其他字段,但问题是如何将带有日期的字段视为可用于执行连接的变量。
示例查询如下:
with tab1 as (
select
product_id,
start_date,
from `project.user.table`
)
select * from tab1 inner join `project2.table2.{start_date}` as B on tab1.product_id = B.p_id
根据建议,我尝试了以下查询来收紧事情,但遗憾的是它不起作用。
with tab1 as (
select
cast(product_id as INT64) as product_id_64,
cast(FORMAT_DATE('%Y%m%d', CAST(start_date AS DATE)) as STRING) as start_date_string
from `project.user.table`
)
select * from `user2.dataset.*` b
inner join tab1
on b._TABLE_SUFFIX = tab1.start_date_string
导致以下错误:
Error running query. Cannot read field of type STRING as INT64 Field: GTIN
如果您的 table 是原生 BigQuery,您可以尝试测试并使用 wildcard
:
WITH tab1 as (
select
product_id,
start_date,
from `project.user.table`
)
SELECT *
FROM `<yourproject>.<yourdataset>.*` b
INNER JOIN tab1
ON b._TABLE_PREFIX = tab1.start_date
AND b.p_id = tab1.product_id
不幸的是我无法测试