使用标准SQL。当表由通配符表组成时。 我试着用这个:
SELECT *
FROM `Resourse.Reports_Reg.Session_streaming`
WHERE
SUBSTR(_table_suffix, 0, 6) =
FORMAT_DATE("%E4Y%m", DATE_SUB(CURRENT_DATE, INTERVAL 3 day))
我认为此请求应返回过去5天的数据。但我仍然不明白它返回给我的数据。如何提取过去3天的数据,不包括今天和昨天的数据
答案 0 :(得分:1)
实际上,鉴于您的查询没有通配符,您没有在_table_suffix
中选择任何内容。
如果您的表具有例如名称结构:
`Resourse.Reports_Reg.Session_streaming_20170820`
其中最后一个字符串是格式为“%Y%m%d”的日期,然后选择过去的第三天和第二天可以像:
SELECT
*
FROM `Resourse.Reports_Reg.Session_streaming_*`
WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE, INTERVAL 3 day)) AND FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE, INTERVAL 2 day))
请注意,通配符“*”正在选择日期“20170820”。在那之后,只有where子句选择适当的日期。