繁体   English   中英

从雅典娜查询中的两个表创建视图

[英]create a view from two tables in athena query

基本上我的用例是我在 athena 中创建一个视图,但我想根据表中列给出的日期 (snapshot_date) 从两个表中选择数据。 怎么做? 我没有找到它的语法

SELECT
 baseline_year
, marketplace
, locale
, snapshot_time
, ...
FROM
  table1 

我想实现类似如果快照时间小于 2022-05-01,则使用表 2,否则使用表 1。我们可以在 FROM 中进行任何类型的调节吗? 我已经探索过我们可以使用 CASE_WHEN 对列执行条件,但不确定是否可以在 FROM 中使用?

如果我没记错的话,您的意思是如果 snapshot_time 早于 2022-05-01 则使用 table2,如果 snapshot_time 大于或等于 2022-05-01 则使用 table1,无论这两个表的shapshot_time是什么。

SELECT ... FROM table1 where date(snapshot_time)>= '2022-05-01'
union
SELECT ... FROM table2 where date(snapshot_time) < '2022-05-01' ;

您可以继续使用参数化视图,尝试创建一个函数:

CREATE FUNCTION func() RETURNS DATE
  RETURN @var;

然后创建视图:

CREATE VIEW view1 AS
SELECT
 T1.baseline_year
, T1.marketplace
, T1.locale
, T1.snapshot_time
, ...
FROM  table1 AS T1
WHERE DATE(T1.snapshot_time) >= func()
UNION
SELECT
 T2...,
 ..
FROM
  table1 AS T2
WHERE DATE(T2.snapshot_time) <= func()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM