to_date(create_time)<='${zdt.addDay(-1).format("yyyy-MM-dd")}' hive
时间: 2024-03-28 14:39:08 浏览: 148
这是一个Hive SQL语句中的条件判断语句,其作用是筛选出create_time在昨天之前的数据。其中,to_date()函数是将日期时间类型的数据转换为日期类型,${zdt.addDay(-1).format("yyyy-MM-dd")}是获取昨天的日期并格式化为"yyyy-MM-dd"的字符串。因此,整个条件判断语句的含义是:筛选出create_time字段的值在昨天(不包括昨天)之前的数据。
相关问题
set hive.exec.dynamic.partition.mode=nonstrict; set hive.exec.parallel=true; set hive.exec.parallel.thread.number=30; --drop table if exists dm_finrisk.dm_event_walletSettleSuccessEvent_di; create table if not exists dm_finrisk.dm_event_cashLoanEvent_di( event_uuid string ,event_code string ,dt string ,event_time string ,rawSnapshot string ) COMMENT 'cashLoanEvent' PARTITIONED BY ( day bigint)stored as parquet; drop table if exists tmp.tmp_dm_event_cashLoanEvent_di_01_${zdt.addDay(-1).format("yyyyMMdd")}; create table if not exists tmp.tmp_dm_event_cashLoanEvent_di_01_${zdt.addDay(-1).format("yyyyMMdd")} as select uuid as event_uuid ,event as event_code ,from_unixtime(unix_timestamp(cast(day as string),'yyyymmdd'),'yyyy-mm-dd') as dt ,from_unixtime(cast(cast(`time` AS BIGINT)/1000 AS BIGINT),'yyyy-MM-dd HH:mm:ss') as event_time ,get_json_object(data,'$.hotPublish.rawSnapshot') as rawSnapshot from dm_finrisk.ods_event_hdfs_snapshot_di where code = 'shield@cashLoanEvent' and day=${zdt.addDay(-1).format("yyyyMMdd")} drop table if exists tmp.tmp_dm_event_cashLoanEvent_di_02_${zdt.addDay(-1).format("yyyyMMdd")}; create table if not exists tmp.tmp_dm_event_cashLoanEvent_di_02_${zdt.addDay(-1).format("yyyyMMdd")} as select event_uuid ,event_code ,dt ,event_time ,rawSnapshot from tmp.tmp_dm_event_cashLoanEvent_di_01_${zdt.addDay(-1).format("yyyyMMdd")}; alter table dm_finrisk.dm_event_cashLoanEvent_di drop if exists partition (day = ${zdt.addDay(-1).format("yyyyMMdd")}); insert overwrite table dm_finrisk.dm_event_cashLoanEvent_di partition (day = ${zdt.addDay(-1).format("yyyyMMdd")}) select event_uuid ,event_code ,dt ,event_time ,rawSnapshot from tmp.tmp_dm_event_cashLoanEvent_di_02_${zdt.addDay(-1).format("yyyyMMdd")}分析下上面代码
上面的代码主要是一个HiveQL脚本,用于从`dm_finrisk.ods_event_hdfs_snapshot_di`表中提取`code`为`shield@cashLoanEvent`且`day`为昨天日期的数据,并将其存储到`dm_finrisk.dm_event_cashLoanEvent_di`表中的对应分区中。
具体来说,该脚本的执行步骤如下:
1. 第1行:设置Hive执行参数,包括动态分区模式、并行执行和并行执行线程数等。
2. 第3-8行:创建`dm_finrisk.dm_event_cashLoanEvent_di`表,该表包含5个列,分别为`event_uuid`、`event_code`、`dt`、`event_time`和`rawSnapshot`,其中`dt`为分区列。
3. 第10-15行:创建临时表`tmp.tmp_dm_event_cashLoanEvent_di_01_${zdt.addDay(-1).format("yyyyMMdd")}`,该表从`dm_finrisk.ods_event_hdfs_snapshot_di`表中选择`code`为`shield@cashLoanEvent`且`day`为昨天日期的记录,并将其中的`uuid`、`event`、`day`、`time`和`data`字段分别映射到`event_uuid`、`event_code`、`dt`、`event_time`和`rawSnapshot`列中。
4. 第17-22行:创建临时表`tmp.tmp_dm_event_cashLoanEvent_di_02_${zdt.addDay(-1).format("yyyyMMdd")}`,该表从临时表`tmp.tmp_dm_event_cashLoanEvent_di_01_${zdt.addDay(-1).format("yyyyMMdd")}`中选择所有列,用于后续的数据处理。
5. 第24行:如果`dm_finrisk.dm_event_cashLoanEvent_di`表中昨天的分区已经存在,则删除该分区。
6. 第26-27行:将临时表`tmp.tmp_dm_event_cashLoanEvent_di_02_${zdt.addDay(-1).format("yyyyMMdd")}`中的数据插入到`dm_finrisk.dm_event_cashLoanEvent_di`表的昨天分区中。
整个脚本的作用是将来自`dm_finrisk.ods_event_hdfs_snapshot_di`表的特定数据提取出来,并存储到`dm_finrisk.dm_event_cashLoanEvent_di`表的对应分区中,以便后续的分析和查询。
select create_date ,major_biz_name ,minor_biz_name ,minimal_biz_name ,call_type ,service_line ,finance_type ,min_cnt ,finance_user_cnt from from ( select '${zdt.addDay(-1).format("yyyy-MM")}' create_date ,major_biz_name ,minor_biz_name ,minimal_biz_name ,call_type ,service_line ,finance_type ,count(1) min_cnt from dm_pay.finance_call_in_cnt_di where substr(cast(day as string),1,6)='${zdt.addDay(-1).format("yyyyMM")}' group by major_biz_name ,minor_biz_name ,minimal_biz_name ,call_type ,service_line ,finance_type ) a left join ( select max(user_cnt) finance_user_cnt from --dm_njbi.cc_damage_kpi_v2_di dm_njbi.active_user_30days_finance_di where day =${zdt.addDay(-1).format("yyyyMMdd")} ) b on 1=1 ; sql哪里不合法
您的SQL语句中存在一处不合法的地方,即在最外层的FROM子句之后没有指定要查询的表名或子查询。您需要将要查询的表名或子查询添加到FROM子句中,例如:
```sql
SELECT
create_date,
major_biz_name,
minor_biz_name,
minimal_biz_name,
call_type,
service_line,
finance_type,
min_cnt,
finance_user_cnt
FROM (
SELECT
'${zdt.addDay(-1).format("yyyy-MM")}' AS create_date,
major_biz_name,
minor_biz_name,
minimal_biz_name,
call_type,
service_line,
finance_type,
COUNT(1) AS min_cnt
FROM dm_pay.finance_call_in_cnt_di
WHERE SUBSTR(CAST(day AS STRING), 1, 6) = '${zdt.addDay(-1).format("yyyyMM")}'
GROUP BY
major_biz_name,
minor_biz_name,
minimal_biz_name,
call_type,
service_line,
finance_type
) a
LEFT JOIN (
SELECT MAX(user_cnt) AS finance_user_cnt
FROM dm_njbi.active_user_30days_finance_di
WHERE day = ${zdt.addDay(-1).format("yyyyMMdd")}
) b ON 1=1;
```
请将您要查询的表名或子查询添加到相应位置后重新执行查询。
阅读全文
相关推荐















