Amazon web services 使用'通过RowVersion更新记录;SQL WHERE';筛选最大值的步骤
尝试基于现有表中的RowVersion值更新表。我的数据湖每周更新一次,新数据存储为.json文件,其中包含任何新版本 我需要: 1) 查询我的数据仓库中的现有表以查找最新的RowVersion(ie max) 2) 使用该值仅筛选/选择我的数据仓库中大于我刚才标识的版本的记录 3) 更新我的表以包含新行 我的问题是-下面的SQL,我不确定如何选择当前表中的最大行数,然后使用该行数筛选/指定查询S3 Bucket时要返回的内容:Amazon web services 使用'通过RowVersion更新记录;SQL WHERE';筛选最大值的步骤,amazon-web-services,amazon-s3,etl,snowflake-cloud-data-platform,Amazon Web Services,Amazon S3,Etl,Snowflake Cloud Data Platform,尝试基于现有表中的RowVersion值更新表。我的数据湖每周更新一次,新数据存储为.json文件,其中包含任何新版本 我需要: 1) 查询我的数据仓库中的现有表以查找最新的RowVersion(ie max) 2) 使用该值仅筛选/选择我的数据仓库中大于我刚才标识的版本的记录 3) 更新我的表以包含新行 我的问题是-下面的SQL,我不确定如何选择当前表中的最大行数,然后使用该行数筛选/指定查询S3 Bucket时要返回的内容: create or replace temporary table
create or replace temporary table UPDATE_CAR_SALES AS
SELECT
VALUE:CAR::string AS CARS,
VALUE:RowVersion::INT AS ROW_VERSION
having row_version > max(row_version)
from '@s3_bucket',
lateral flatten( input => $1:value);
我不清楚你是如何存储数据的。汽车专栏是独一无二的吗?您需要为每辆车或所有车/行查找最大行版本吗?无论如何,您可以使用子查询筛选行版本高于最大值的行:
create or replace temporary table UPDATE_CAR_SALES AS
SELECT
VALUE:CAR::string AS CARS,
VALUE:RowVersion::INT AS ROW_VERSION
FROM @s3_bucket, lateral flatten( input => $1 )
where ROW_VERSION > (SELECT MAX(RowVersion)
from MAIN_TABLE);
如果需要根据(现有表的)每辆车的行版本筛选行:
我需要将主查询放在括号中才能使用alias。希望能有帮助
create or replace temporary table UPDATE_CAR_SALES AS
SELECT * FROM (SELECT
VALUE:CAR::string AS CARS,
VALUE:RowVersion::INT AS ROW_VERSION
FROM @s3_bucket, lateral flatten( input => $1 )) temp_table
where temp_table.ROW_VERSION > (SELECT MAX(RowVersion)
from MAIN_TABLE where cars = temp_table.CARS );