我目前正致力于创建我的第一个 Data_warehouse using sql-server
我有一个Date dimension我想用SSIS填充它有一个字段叫ISO_year
有人能告诉我我该怎么做到的?
我试过这个查询::
select year(getdate()) - 但我不认为这是ISO_year?
我需要知道使用ssis将维度加载到DB中的最佳做法是什么?
我提到了这个http://michaelmorley.name/how-to/create-date-dimension-table-in-sql-server
t-c*_*.dk 10
这是iso_year的一个函数,它背后的逻辑是从参数日期开始的星期四确定年份:
CREATE FUNCTION [dbo].[f_isoyear]
(
@p_date datetime
)
RETURNS int
as
BEGIN
RETURN datepart(yy, dateadd(wk, datediff(d, 0, @p_date)/7, 3))
END
Run Code Online (Sandbox Code Playgroud)
这是一个请求函数计算ISO_YEAR的Connect项.
在解决方法部分中,您可以使用此功能.
CREATE FUNCTION [dbo].[ISOyear](@date DATETIME)
returns SMALLINT
AS
BEGIN
DECLARE @isoyear SMALLINT = CASE
WHEN Datepart(isowk, @date)=1
AND Month(@date)=12 THEN Year(@date)+1
WHEN Datepart(isowk, @date)=53
AND Month(@date)=1 THEN Year(@date)-1
WHEN Datepart(isowk, @date)=52
AND Month(@date)=1 THEN Year(@date)-1
ELSE Year(@date)
END;
RETURN @isoyear;
END;
Run Code Online (Sandbox Code Playgroud)