在AWS Athena的表创建代码中插入WHERE条件



我需要创建一个具有特定条件的表,该条件可以在桶更新时更新。下面是一个示例:

CREATE EXTERNAL TABLE IF NOT EXISTS `default`.`cards-test` (
`id` bigint,
`created_at` timestamp,
`type` string,
`account_id` bigint,
`last_4_digits` string,
`is_active` boolean,
`status` string,
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 's3://something/cards-bucket/'
TBLPROPERTIES ('classification' = 'parquet');

现在,假设我想要一个WHERE子句,说WHERE type = 'type_1',我能在这里插入这个吗?如果有,在哪里?

如果没有,我应该如何从桶中创建一个具有这些特定条件的表?

不可以,因为doc显示了CREATE TABLE的语法—没有提供过滤数据的选项。

你能做的-通过CREATE TABLE AS语法创建另一个表,并应用过滤:

CREATE TABLE cards-test-type_1 WITH (
...
) AS 
SELECT 
* 
FROM 
cards-test
WHERE type = 'type_1'

或者创建一个视图:

从指定的SELECT查询创建一个新视图。视图是一个逻辑表,以后的查询可以引用它。视图不包含任何数据,也不写数据。相反,视图指定的查询在每次通过另一个查询引用视图时运行。

CREATE VIEW cards-test-type_1 AS
SELECT 
* 
FROM 
cards-test
WHERE type = 'type_1'

相关内容

  • 没有找到相关文章

最新更新