在 redshift 中声明变量

Declaring variables in redshift

背景

我一直在使用 Amazon Redshift 来执行我的查询。 我知道之前有人问过这个问题。但是我不明白如何合并UDF。

我想分配一个具有特定值的临时变量。 我想这样做以使我的脚本动态化。例如-这是我的 通常的写代码方式。

SELECT * FROM transaction_table WHERE invoice_date >= '2013-01-01' 
AND invoice_date <= '2013-06-30';

我想做的是...

类似于您将在下面看到的内容。我相信 SQL 服务器有一个声明变量可以做这种事情。

SET start_date TO '2013-01-01';
SET end_date TO '2013-06-30';

SELECT * FROM transaction_table WHERE invoice_date >= start_date 
AND invoice_date <= end_date;

这样我就不必在脚本中深入搜索了。我可以有一套 在顶部声明并更改它。

非常欢迎您的反馈。

不幸的是,Redshift 中没有变量。但是,您可以通过创建临时 table 并按如下方式引用它来获得类似变量的行为:

CREATE TEMPORARY TABLE _variables AS (
    SELECT
        '2013-01-01'::date as start_date
      , '2013-06-30'::date as end_date
);
SELECT
    transaction_table.*
FROM
    transaction_table, _variables
WHERE
    invoice_date >= start_date
AND
    invoice_date <= end_date
;