问题描述
我有一个 sql 查询,我正尝试从中为 AWS Athena 构建 VIEW
。
Select 语句有效,但是当我添加 CREATE 语句时,它开始出错。
line 12:1:
mismatched input 'from' expecting {<eof>,'where','group','order','having','limit','lateral','window','union','except','intersect','sort','cluster','distribute'} (service: amazonathena; status code: 400; error code: invalidrequestexception; request id: 7740824a-5db1-4409-87bb-d70ab321734a; proxy: null)
到目前为止我所做的唯一更改是将左连接内的 FROM 更改为 FROM "sentryx"."public"."vw_last_create_dates"
我需要故障排除帮助以找出发生该错误的原因
CREATE OR REPLACE VIEW heatmap_backflow_alert_90days AS
SELECT devicealerthistoryid,deviceid,latitude,longitude,alertcounter,alertsetdatetime,last_modify_date,AlertKey,sitename
FROM
(
SELECT devicealerthistoryid,d.deviceid,COALESCE(datelastmodified,datecreated) last_modify_date,"concat"("lower"("replace"(cd.database,'ArkNET_')),'*',CAST(productalerttypeid AS varchar(12)),CAST(d.deviceid AS varchar(12)),'*me') AlertKey,"lower"("replace"(cd.database,'ArkNET_')) sitename,"row_number"() OVER (PARTITION BY da.devicealerthistoryid,da.database ORDER BY datelastmodified DESC) row_num
FROM
(((metrology_consumption_base_db.devicealerthistory da
INNER JOIN metrology_consumption_base_db.device d
ON (da.productid = d.deviceid))
INNER JOIN metrology_consumption_base_db.customerdevice cd
ON (cd.deviceid = d.deviceid))
LEFT JOIN
(
SELECT SITENAME,"max"(last_create_date) last_create_date
FROM "sentryx"."public"."vw_last_create_dates"
WHERE ("alert_type" = 'backflow')
GROUP BY SITENAME
) T4
ON ("lower"("replace"(cd.database,'ArkNET_')) = T4.SITENAME)
)
WHERE ((((productalerttypeid = 10) AND (alertcleardatetime IS NULL)) AND (COALESCE(T4.SITENAME,cd.database) IS NOT NULL)) AND (COALESCE(datelastmodified,datecreated) > COALESCE(last_create_date,"date_parse"('2019-01-01','%Y-%m-%d'))))
) T5
WHERE (row_num = 1) ; ```
解决方法
视图限制 Athena 视图名称不能包含特殊字符,下划线 (_) 除外。有关详细信息,请参阅表、数据库和列的名称。
避免使用保留关键字来命名视图。如果使用保留关键字,请在对视图的查询中使用双引号将保留关键字括起来。请参阅保留关键字。
-- 您不能将视图与联合数据源、外部 Hive 元存储或 UDF。
您不能使用具有地理空间功能的视图。
您不能使用视图来管理对 Amazon S3 中数据的访问控制。要查询视图,您需要访问存储在 Amazon S3 中的数据的权限。有关更多信息,请参阅访问 Amazon S3。