雪花中的 Javascript 函数将表名附加到当前日期
Posted
技术标签:
【中文标题】雪花中的 Javascript 函数将表名附加到当前日期【英文标题】:Javascript function in snowflake to append tablename with current date 【发布时间】:2020-02-11 16:21:35 【问题描述】:我最近开始使用雪花,一直卡在这个问题上:
我想将一个名为 AB_USER 的表克隆到 AB_USER_(current_date)。我编写了以下代码来完成此操作:
CREATE or replace PROCEDURE backup_proc()
RETURNS VARCHAR
LANGUAGE javascript
AS
$$
var tab_name = `AB_USER_BCK_2020_`+ current_date();
stat = `create or replace table staging.` + tab_name + ` clone staging.AB_USER`;
var rs = snowflake.execute( sqlText: stat );
return 'Done.';
$$;
问题是我找不到合适的函数来获取当前日期。 Snowflake 提供了一个 JS 环境,但我不知道使用哪个函数来获取当前日期。
我对雪花非常陌生,因此非常感谢您提供任何帮助。
谢谢。
【问题讨论】:
与大多数数据库一样,Snowflake 使用CURRENT_DATE
: docs.snowflake.net/manuals/sql-reference/functions/…。
由于雪花使用javascript,使用current_date会抛出错误:JavaScript execution error: Uncaught ReferenceError: current_date is not defined in BACKUP_PROC at ' var tab_name =
AB_USER_BCK_+ current_date();'
【参考方案1】:
CURRENT_DATE 是一条 SQL 命令,因此您需要将其作为 SQL 语句调用,并使用 snowflake.execute。
正如我所见,您想从当前日期获取月份和日期的值,因此您可以使用以下过程:
CREATE or replace PROCEDURE backup_proc()
RETURNS VARCHAR
LANGUAGE javascript
AS
$$
var curdate = snowflake.execute( sqlText: "SELECT TO_CHAR(CURRENT_DATE,'MMDD') as curdate" );
curdate.next();
var tab_name = "AB_USER_BCK_2020_"+ curdate.getColumnValue('CURDATE');
var stat = "create or replace table staging." + tab_name + " clone staging.AB_USER";
var rs = snowflake.execute( sqlText: stat );
return "Done.";
$$
;
【讨论】:
谢谢 :) 你能告诉我这条线在做什么吗? ` curdate.next();` 需要调用next()函数使光标移动到第一行,并且可以通过getColumnValue访问字段值。以上是关于雪花中的 Javascript 函数将表名附加到当前日期的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在不安装任何驱动程序的情况下将表从雪花导入 R 中的数据帧?