SSIS 在 Derived 控件中 如何 拼接 日期型数据 为一列

0
比如 我有 一个表 有 2个列 Year 和 Month

我想在流程中 新建一个列叫 "DateKey", 结构就是 Year + Month + "01",最终结果会变成: "20130101".

现在我在 Derived Column 控件里的 Expression里写 " & & "01" ". 但是 被红色提示不对。

系统无法侦测到 最后的结果类型。

请问 这里该如何做呢?

Year 和 Month 是整型数据, "01" 是 字符串. 相当于 做一个拼接操作。

我在 系统函数里没有找到 字符 和 数字 之间转换的办法。
已邀请:
3

BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2013-12-25 回答

((DT_STR,4,1252)CalendarYearKey) + (MonthNumberOfYear < 10 ? "0" + ((DT_STR,2,1252)MonthNumberOfYear) : ((DT_STR,2,1252)MonthNumberOfYear)) + "01"

CalendarYearKey 和 MonthNumberOfYear 是你的 Year 和 Month 整形类型的整数,通过上面可以转换成你需要的格式.

1.PNG
1

BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2013-12-25 回答

@jxsrzheng
MSDN 上有很多官方的帮助文档
Cast(SSIS 表达式) - http://technet.microsoft.com/z ... .aspx
Functions (SSIS Expression) - http://technet.microsoft.com/e ... .aspx
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2013-12-24 回答

用了个笨办法,在 Derived Column Control之前,先 Data Conversion了一下。
将 2个数字列 转换成了 String类型。
然后在 Derived Column Control 的 NewColumn Expression里写
Year_String + Month_String + "01" 可以了。
不过还是希望能有办法直接一步搞定。
0

BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2013-12-24 回答

我估计你是不是想设计 Cube 中的日期维度主键 DateKey, 如果是这样的话你在设计原表的时候就可以直接在数据库中创建好 DateKey 了,而不应该通过 Year 和 Month 在 SSIS 中实现。

在数据库中以今天为例 2013年12月24日
SELECT CAST(CONVERT(VARCHAR(8),GETDATE(),112) AS INT) AS DateKey
得到的是 20131224
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2013-12-25 回答

哥们再问你个问题,关于这类转换。
有没有哪里可以看到对照的列表,或者 哪里有这方面的文章学习?

因为以后转换肯定涉及到很多,那么就需要这种参照,以免一个新类型就要问一次。

你写的 "DT_STR,4,1252" 这个是强制类型转换,哪里能找到 参考说明呢?

要回复问题请先登录注册