现在我运行以下Hive查询
CREATE TABLE dwo_analysis.exp_shown AS
SELECT
MIN(sc.date_time) as first_shown_time,
SUBSTR(sc.post_evar12,1,24) as guid,
sc.post_evar238 as experiment_name,
sc.post_evar239 as variant_name
FROM test
WHERE report_suite='adbemmarvelweb.prod'
AND date >= DATE_SUB(CURRENT_DATE,90) AND date < DATE_SUB(CURRENT_DATE, 2)
AND post_prop5 = 'experiment:standard:authenticated:shown'
AND post_evar238 NOT LIKE 'control%'
AND post_evar238 <> ''
AND post_evar239 <> ''
表测试很大。我希望通过运行一次优化此查询,并每隔一次更新表,方法是获取最近2天的数据并将其添加到表中。
所以基本上运行上面的查询一次,每次再次运行但条件
WHERE click_date&gt; = DATE_SUB(CURRENT_DATE,2)AND click_date&lt; DATE_SUB(CURRENT_DATE)
如何使用配置单元更新表格以填充上述条件中提到的行?
答案 0 :(得分:1)
首先,如果根据日期对Hive表进行分区,您的查询会更快。您的create table语句不会插入任何分区,因此我怀疑您的表没有被分区。如果源数据是Parquet / ORC
,它也会更快在任何情况下,您都可以覆盖表格,如日期范围
INSERT OVERWRITE TABLE dwo_analysis.exp_shown
SELECT * FROM test
WHERE click_date
BETWEEN DATE_SUB(CURRENT_DATE, 2) AND CURRENT_DATE;