是否可以在Azure Synapse Analytics中动态创建日期数组变量?

mjqavswn  于 2023-08-07  发布在  其他
关注(0)|答案(2)|浏览(84)

在Azure Synapse Analytics中,我想使用pipeline函数为从12个月前到当前日期的日期设置一个数组类型的变量。变量中的日期是每个月的第一天。例如,要在本月创建的变量可能如下所示

['2022-08-01','2022-09-01','2022-10-01','2022-11-01','2022-12-01','2023-01-01','2023-02-01','2023-03-01','2023-04-01','2023-05-01','2023-06-01','2023-07-01','2023-08-01']

字符串
而9月份要制造的变数会是这样的

['2022-09-01','2022-10-01','2022-11-01','2022-12-01','2023-01-01','2023-02-01','2023-03-01','2023-04-01','2023-05-01','2023-06-01','2023-07-01','2023-08-01','2023-09-01']


任何答案都会有所帮助。- 谢谢你-谢谢

gfttwv5a

gfttwv5a1#

如果你有一个附近的SQL数据库,我可能会从那里得到它。任何一个好的仓库都有一个日历表来处理这类事情。下面是一个使用generate_series的简单示例,现在在SQL Server 2022和Azure SQL DB中可用:

DECLARE @startDate DATE = DATEFROMPARTS( YEAR(GETDATE()), MONTH(GETDATE()), 1 )

SELECT 
    DATEADD( Month, s.[value], DATEADD( Month, -13, @startDate ) ) yourDates
FROM generate_series( 1, 13 ) s
ORDER BY 1;

字符串
使用Lookup Activity和Query模式将数据导入管道。
我还得到了一个处理For EachAppend variable Activity的方法,但它需要16秒才能运行!?NB您可以在格式参数中设置'01'以获取月份的第一个:

Set variable startDate: @getPastTime(12, 'Month', 'yyyy-MM-01')
For Each Items: @range(0,13)
Append variable: @addToTime(variables('varStartDate'),item(), 'Month', 'yyyy-MM-01')


Append variable results

sqyvllje

sqyvllje2#

您可以使用for each和追加变量活动,如下所示。
首先,使用Set variable创建如下空数组。

空日期数组


的数据
接下来,创建ForEach活动并在其中添加Append variable活动。



在这里,我给出了013之间的项目,因为您需要过去12个月的日期。如果你在任何变量或参数中有这个数字,把它添加到这个范围函数的第二个参数中。
确保启用Sequential
接下来,在追加变量中添加如下表达式。

@addToTime(subtractFromTime(utcNow(),12,'Month','yyyy-MM-dd'),item(),'Month','yyyy-MM-dd')

字符串



在这里,在Name字段中选择您最初创建的空数组变量。并在value字段中添加上面给出的表达式。
接下来,创建新的Set variable并创建新的数组变量,然后给予之前创建的日期数组变量的值。



输出:

注意:请根据您的要求给予日期,但请不要填写293031,因为这些日期不是每个月都有。

相关问题