有没有办法在SSIS的数据流中执行T-SQL代码? 出身背景

有没有办法在SSIS的数据流中执行T-SQL代码? 出身背景,sql,tsql,ssis,business-intelligence,Sql,Tsql,Ssis,Business Intelligence,我有一个维度表,它每天都有一条记录。每个记录都有一个主键,因此示例数据为: Dimension Table --------------- --------------------------------- | ID | DateTime | --------------------------------- | 1083 | 04/10/2008 10:02:00 PM | --------------------------------- 我试图做的是获取我

我有一个维度表,它每天都有一条记录。每个记录都有一个主键,因此示例数据为:

Dimension Table --------------- --------------------------------- | ID | DateTime | --------------------------------- | 1083 | 04/10/2008 10:02:00 PM | --------------------------------- 我试图做的是获取我的源数据列,该列具有SQL datetime值,例如04/10/2008 10:02:00 PM,并让SSI从维度表中派生出上面示例中的主键应该是1083。我试图将其融入包中的数据流中,并避免使用暂存表

我想在数据流期间调用数据库函数,让SSIS包发现datetime记录的timeid。我曾尝试使用DeriveColumn,但这似乎不允许使用t-SQL;而只是内置在ANSI SQL中的函数

问题
在数据流中是否有其他方法可以做到这一点?或者我需要使用暂存表并在数据流之外使用SQLTask来操作我的数据吗?

如果我理解您的意思,您有一个带有时间维度的数据集市,并且您需要获取与特定时间对应的timeId


如果这是正确的,那么您希望使用查找组件。对于引用表,使用类似于selecttimeid、timestampfromtimedimension的内容,然后查找保存时间戳的输入列。使用timeId作为输出列,现在数据流中的每一行都将具有与其时间戳相对应的timeId。

datetime记录的timeId到底是什么?对不起,我应该更详细地解释一下。我有一个维度表,它每天都有一条记录。每个记录都有一个主键,所以假设2008年3月10日等于主键1083。我试图做的是获取我的源数据列,该列具有SQL datetime值,例如2008年3月10日10:02PM,并让SSI从维度表中派生出上面示例中的主键应该是1083。我正在尝试将其融入我的包中的数据流,并避免使用暂存表。感谢您的回复!我相信这是一个正确的方向,但是我在工作中遇到了问题。我的时间维度中的时间戳记录是午夜记录12/02/2008 12:00:00 AM,而我的源数据中的时间记录是精确记录10/26/2008 6:40:46 PM。如何让查找功能避免时间?我假设有一个模糊查找组件,但在工作时遇到了一些问题。谢谢当您为源组件创建查询时,有一列是舍入的时间戳:DATEADDDAY,DATEDIFFDAY,0,timestamp,0Im试图在派生列组件中使用它,但我遇到了一个无法理解的错误。我使用以下函数获取源列并输出到一个新列-DATEADDDAY,DATEDIFFDAY,0,[createDateTime],0。im获取的错误如下:函数DATEDIFF不支持参数号2的数据类型DT_I4。无法将参数的类型隐式转换为函数的兼容类型。要执行此操作,需要使用强制转换运算符显式强制转换操作数。它在查询中运行良好。。。奥索里我不清楚。我的意思是让您在生成输入行的SELECT语句中使用该表达式。我想如果您只使用一个表,那么您将被困在派生列中。看起来DATEADDDD,DATEDIFFDD,DT_DATE1/1/1900,timestamp,DT_DATE1/1/1900都能用,真管用!你摇滚:-我能告诉你,我怎么能只在时间而不是日期上做同样的事情吗?我有一张时间表,上面记录着一天中的每一秒。它有一列带有标准时间ex:12:03:23 AM,因此如果我可以从日期时间戳中去掉日期部分,我可以对时间值进行类似的查找,并找到时间记录的id。