Datetime SSI按最近时间合并联接

Datetime SSI按最近时间合并联接,datetime,join,ssis,etl,Datetime,Join,Ssis,Etl,我有多个数据源。经过多次转换后,我以以下内容结束: (DT_I2)YEAR(OriginDate) 数据源1 我已将此组件转换为将年、月和日分开,这样做: (DT_I2)YEAR(OriginDate) 使用month(OriginDate)和Day的月份也一样。 另一方面,我也有使用(DT_DBTIME)OriginDate的时间 我做这些转换是因为我认为它们可能对我的问题有用,但我不确定。 此数据源来自MSSQL 数据源2 注意,在这个ds中,两个字段都是varchar。 此数据源来自M

我有多个数据源。经过多次转换后,我以以下内容结束:

(DT_I2)YEAR(OriginDate)
数据源1 我已将此组件转换为将年、月和日分开,这样做:

(DT_I2)YEAR(OriginDate)
使用
month(OriginDate)
和Day的月份也一样。 另一方面,我也有使用(
DT_DBTIME)OriginDate的时间

我做这些转换是因为我认为它们可能对我的问题有用,但我不确定。 此数据源来自
MSSQL

数据源2 注意,在这个ds中,两个字段都是varchar。 此数据源来自
MySQL

我需要的是通过相同的
stationId
(容易)和最近的日期(不容易)连接这两个数据集。我应该为Datasource1中的每一行获取另一个datasource中最接近时间的行,我的意思是,对于同一日期,最接近时间。这是因为datasource2是给定时间的度量,datasource1是给定时间的事件,我需要将它们关联起来

我怎样才能做到这一点?
合并联接组件
仅允许通过等于表达式进行联接。如果可能的话,我希望避免登台

我想从两个数据源中分离小时和分钟,并对它们进行比较,同时比较日期和stationId是否相等,但我不确定如何完成第一部分


我对此感到困惑,关于采取哪种方法。

一般的算法是“将数据集1中的每条记录与数据集2中的每条记录进行比较,并在几秒钟内找出差异。”。选择最低的秒数。记录是否允许多次匹配?如果数据集1中的一条记录与数据集2中的多条记录匹配,或者反之亦然,该怎么办?在SSIS中,如果没有登台,您将无法执行任何有用的操作。不应该有多个匹配项。让我们看看这个。如果我必须这样做,那会是怎样的?存储两个数据源并使用纯sql进行求解?是,存储两个数据集并使用sql进行求解。或者编写一个脚本转换,它接受两个输入和一个输出。将数据按顺序发送到转换中,并匹配最接近的内部。如果您对脚本比较熟悉,那么就这样做,但我怀疑它的性能会很差。如果数据集1的时间是12:30,而数据集2的时间是12:25和12:35呢。它们是等距的-你选哪一个?也许是最低的,我不知道。不管怎么说,这不是一个“大”问题,因为这不是一个现实生活中的项目,它是为大学。。我认为这些事情可以用“按设计”的文档来证明:p我们可能应该首先尝试脚本转换。看看这个:您应该能够添加两个输入,而不是一个。您的输入必须在输入之前在stationid、日期上订购。然后应该有一种方法来编写代码,允许两个输入数据流进行交互。这对我来说现在还不明显,但可能先看一下教程。
CurrentDate (i.e. 01/04/2011)
StationId: Integer
Hour (i.e. 01:59)