转换为hive,V_START_TIME := current_timestamp();
时间: 2024-04-12 17:29:09 浏览: 121
在Hive中,没有类似PL/SQL的变量赋值语句。如果您想记录当前时间,您可以使用Hive的内置函数来获取当前时间戳。以下是将V_START_TIME := current_timestamp(); 转换为Hive的修改建议:
```sql
SET hivevar:start_time=current_timestamp();
-- 示例用法:
INSERT INTO JOB_TIME_REC VALUES ('jyfx_HOUR', '2023-07-12 00:00:00', ${start_time}, unix_timestamp(current_timestamp()) - unix_timestamp('2023-07-12 00:00:00'), '受理');
```
在这里,我们使用`SET hivevar:start_time=current_timestamp();`将当前时间戳存储在Hive变量`${start_time}`中。然后,您可以在后续的Hive语句中引用`${start_time}`来使用该值。
请注意,在Hive中,您需要使用`${}`语法来引用变量,并且Hive变量的名称需要以`hivevar:`前缀开头。
相关问题
转换为hive, STR_SQL:=' INSERT INTO jyfx_PRODUCT_ACCEPT_2022 SELECT A.obj_id,null,A.apply_obj_spec,null,A.create_date,A.region_id, A.create_ORG_ID,sysdAte,null,A.cust_order_id, A.ORDER_item_id,null,null,null, A.BELONG_lan_id,create_staff FROM ord_so.order_item@to_CRM_TEST A WHERE A.order_item_cd = ''1300'' and A.status_cd in (''301200'',''201300'') AND to_char(A.create_date,''yyyymmdd'') >= to_char(sysdate-35,''yyyymmdd'') AND A.SERVICE_OFFER_ID=4010100000 '; EXECUTE IMMEDIATE STR_SQL; --执行了一个名为STR_SQL的动态SQL语句。 COMMIT; --提交了之前的事务 INSERT INTO JOB_TIME_REC VALUES('jyfx_HOUR',V_START_TIME,SYSDATE, (SYSDATE-V_START_TIME)*24*3600,'受理'); --将一条记录插入到JOB_TIME_REC表中,包括了'jyfx_HOUR'、V_START_TIME、SYSDATE、(SYSDATE-V_START_TIME)243600和'受理'这些值。 COMMIT; --提交这次插入操作的事务 V_START_TIME:=SYSDATE;--将V_START_TIME的值更新为当前的系统时间
以下是将给定的脚本转换为Hive SQL的结果:
```sql
INSERT INTO jyfx_PRODUCT_ACCEPT_2022
SELECT A.obj_id, NULL, A.apply_obj_spec, NULL, A.create_date, A.region_id, A.create_ORG_ID, current_date, NULL, A.cust_order_id, A.ORDER_item_id, NULL, NULL, NULL, A.BELONG_lan_id, create_staff
FROM ord_so.order_item A
WHERE A.order_item_cd = '1300' and A.status_cd IN ('301200', '201300')
AND from_unixtime(unix_timestamp(A.create_date, 'yyyyMMdd'), 'yyyyMMdd') >= from_unixtime(unix_timestamp(current_date - INTERVAL 35 DAY), 'yyyyMMdd')
AND A.SERVICE_OFFER_ID = 4010100000;
INSERT INTO JOB_TIME_REC VALUES ('jyfx_HOUR', '2023-07-12 00:00:00', current_timestamp(), unix_timestamp(current_timestamp()) - unix_timestamp('2023-07-12 00:00:00'), '受理');
V_START_TIME := current_timestamp();
COMMIT;
```
请注意,Hive不支持动态SQL语句的执行(EXECUTE IMMEDIATE),因此您需要手动将其分解为适当的Hive语句。此外,Hive中没有类似PL/SQL的变量赋值语句(V_START_TIME := SYSDATE),因此您需要根据实际需要进行调整。最后,Hive不支持直接使用TO_CHAR函数,而是使用from_unixtime和unix_timestamp函数来进行日期格式转换。
脚本:set tez.queue.name=root.hgdx; INSERT INTO jyfx_PRODUCT_ACCEPT_2022 SELECT A.obj_id,NULL,A.apply_obj_spec,NULL,A.create_date,A.region_id, A.create_ORG_ID,current_date,NULL,A.cust_order_id, A.ORDER_item_id,NULL,NULL,NULL,A.BELONG_lan_id,create_staff FROM hv_crm_ord_so.order_item A WHERE A.order_item_cd = '1300' and A.status_cd IN ('301200','201300') AND from_unixtime(unix_timestamp(A.create_date, 'yyyyMMdd'), 'yyyyMMdd') >= from_unixtime(unix_timestamp(current_date - INTERVAL 35 DAY), 'yyyyMMdd') AND A.SERVICE_OFFER_ID=4010100000; SET hive.exec.dynamic.partition.mode=nonstrict; SET hive.exec.dynamic.partition=true; SET hive.exec.max.dynamic.partitions=100000; SET hive.exec.max.dynamic.partitions.pernode=100000; SET hivevar:start_time=FROM_UNIXTIME(UNIX_TIMESTAMP()); INSERT INTO JOB_TIME_REC VALUES ('jyfx_HOUR', '2023-07-12 00:00:00', current_timestamp(), unix_timestamp(current_timestamp()) - unix_timestamp('2023-07-12 00:00:00'), '受理'); 权限验证异常,syntax error. pos 22, line 1, column 12, token VARIANT
您的脚本中出现了一个语法错误。错误信息显示在第1行第12列的位置,错误标记为"VARIANT"。根据提供的信息,我无法确定问题的确切原因。请检查脚本中的语法和变量使用,并确保变量被正确声明和定义。另外,还要确保您具有执行此脚本所需的适当权限。如果问题仍然存在,请提供更多的上下文信息,以便我可以更好地帮助您解决问题。
阅读全文