【问题标题】:Javascript function in snowflake to append tablename with current date雪花中的 Javascript 函数将表名附加到当前日期
【发布时间】: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();'

标签: javascript sql snowflake-cloud-data-platform snowflake-schema


【解决方案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访问字段值。
猜你喜欢
  • 2020-09-29
  • 2012-02-25
  • 2023-01-06
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 2022-07-08
  • 1970-01-01
相关资源
最近更新 更多