【问题标题】:DBT SQL + Postgres set session variable using current dateDBT SQL + Postgres 使用当前日期设置会话变量
【发布时间】:2021-12-23 07:03:56
【问题描述】:

我正在尝试设置一个稍后在查询中使用的变量,以将一些数据作为 csv 发送到 S3。我想使用当前时间戳作为我的文件名的一部分,在 DBT 中我可以访问 SQL,但不能完全破解如何做到这一点。

我的变量设置代码,我知道这看起来没有任何好处或工作,这是我想要实现的:

SET session data_output.filename = GETDATE()+"-attrs.csv";

我在哪里使用这个变量:

aws_commons.create_s3_uri(
    'table_name',
    current_setting('data_output.filename')::varchar,
    'us-east-1'
)

我的data_output.filename 的预期输出“2021-11-10-170423-attrs.csv”

【问题讨论】:

  • 使用COPY TO sql 命令,您可以简单地在COPY your_query TO your_absolute_path || current_timestamp(0) || '-attrs.csv' 之类的语句中插入now()current_timestamp(0),参见manual

标签: sql postgresql dbt


【解决方案1】:

使用set_config:

SELECT set_config(
          'data_output.filename',
          current_date || '-attrs.csv',
          FALSE
       );

【讨论】:

  • 我对 Postgres 还很陌生,更像是一个 MySQL 人,所以我可能会遗漏一些明显的东西 Getting ERROR: syntax error at or near "current_date"
  • 抱歉,少了一个逗号。
  • 现在得到这个,ERROR: function set_config(unknown, text) does not exist
  • 尝试:SELECT set_config('session data_output.filename', current_date || '-attrs.csv', False);
  • 我终于修好了。抱歉,我在 AFK 时写了这个答案。
猜你喜欢
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 1970-01-01
  • 2011-03-20
相关资源
最近更新 更多