Мне нужно выгрузить данные из таблицы, основанной на последнем извлечении DT, могу ли я получить пример кода, где переменные даты привязки используются при выгрузке данных - PullRequest
0 голосов
/ 13 октября 2019

(Отправка вопроса от имени пользователя Snowflake)

Участник сообщества Snowflake порекомендовал следующее:

Ниже приведен пример использования snowsql. В скрипте test.sql есть две переменные, которые во время выполнения заменяются следующей командой snowsql.

команда:

snowsql -c myconn -w trainingwh --variable dt=01-AUG-2018 --variable file=test.txt -f test.sql -o variable_substitution=True

script test.sql

copy into @unloadstage/&file from (select * from tab where dt = to_Date('&dt','DD-MON-YYYY'));

Пользователь ответил:

Я использую сохраненный процесс, мой оператор выбора работает, но не с командой копирования, у меня есть>закомментировал, что строка

создает или заменяет процедуру sy_sp_test9 ()

возвращает строку

язык javascript

как

$$

  var counter = 0;

  var cid=300000433715649;  

  var dt_stmt = snowflake.createStatement({ sqlText:`select year( dateadd('d',-30,mdate))||'-'|| 

  lpad(month(dateadd('d',-30,mdate)),2,'0')||'-'||

  lpad(day( dateadd('d',30,mdate)),2,'0')

  from(select max(crtn_dt)mdate from ATT_MDP_DB.STANDARDIZED.cdm_campaigns) `});

   var cpdt=dt_stmt.execute();

  cpdt.next()

  var pyear= cpdt.getColumnValue(1);   

  var my_sql_qry_stmt = snowflake.createStatement({ 

         sqlText: `SELECT count(*) FROM ATT_MDP_DB.STANDARDIZED.cdm_campaigns 

      WHERE CRTN_DT>:1;`,       

        binds: [pyear]

   });  

   var rec_count = my_sql_qry_stmt .execute();

   rec_count.next()

   //bind variable works fine here

   var v_rec_count = rec_count.getColumnValue(1);



  testfile_name="CAMP9_";

  var my_where_stmt=" from (select * from ATT_MDP_DB.STANDARDIZED.cdm_campaigns w) overwrite=true;";  

 // var my_where_stmt=" from (`select * from ATT_MDP_DB.STANDARDIZED.cdm_campaigns where //crtn_dt>=:1;`,binds:[pyear])"; ---The above commend line does not work

   var my_stage_cmd="copy into @ATT_MDP_USER_DB.ASPEN.ASPEN_S3_STAGE/";

  my_stage_cmd += testfile_name;

  my_stage_cmd+=my_where_stmt;

  var statement1 = snowflake.createStatement( {sqlText: my_stage_cmd });

  var result_set1 = statement1.execute();

  return my_stage_cmd;



  $$

Мы ценим любые идеи, помощь или другие обходные пути, которые сообщество может порекомендовать. Спасибо!

...