MS Integrations Services中的数据转换

时间:2013-11-27 17:18:11

标签: ssis sql-server-2008-r2 etl

我正在使用MS Integrations Services,我有一个来自sql查询的包返回日期&时间场。从这个来源,我必须从日期和时间中提取小时。时间场。一旦我得到了小时,我需要建立以下关系:

Hour    Reff.
<3      0
<6      1
<9      3
...

我必须保存日期&amp;时间场和新的Reff。字段目标表。

我尝试使用'Derived Column Transformation Editior'模块,但我不确定将什么用作派生列和表达式。

我尝试使用以下表达式:

datepart(hh,[Date_Time])

这显示为红色,有不同的错误(无法解析表达式,表达式无效,...),并且无论如何它只会给出小时。

有人知道我可以实现所需的转型吗?

由于

1 个答案:

答案 0 :(得分:4)

您的公式中有错误。它应该有双引号所需的日期部分

DATEPART("hh",Date_Time)

我创建了一个基本包

enter image description here

OLE_SRC生成日期时间

我使用以下查询生成一些数据

SELECT
    dateadd(hh, D.rn, current_timestamp) AS Date_Time
FROM
(
    SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rn
    FROM sys.all_columns AS SAC
) D(rn);

DER计算小时

我在第一个派生列转换中创建了一个名为Hour的新列,并使用该表达式。请注意,列名称区分大小写。

DATEPART("hh",Date_Time)

enter image description here

DER Compute Reff

有很多方法可以解决这个问题。我采用快速但难以维护的方法,使用三元运算符来识别Reff

的值
([Hour]  < 3) ? 0 : ([Hour]  < 6) ? 1 : ([Hour]  < 9) ? 3 : -1

不知道Reff是什么,似乎可以用数学方法计算出来,但无论你得到答案,它都会在这里。