两个数据源的笛卡尔积

cartesian product of two data sources

假设我在 SSIS 中有两个数据源。

Table A 有 10 行,其中两列为空。 Table B 有 20 行,每行两列。

我想以某种方式以某种方式将它们加入 ETL 过程: 对于 table A 的每一行,将使用 table B.

中两列的值生成 20 行

这样,应该生成 200 行,其中包含来自 tables A 和 B

的行的每种可能组合

我尝试使用 Merge Join 和 Union 片段,但它们不起作用...有什么解决办法吗?

SELECT table1.column1, table2.column2...
FROM  table1, table2 

笛卡尔连接是 MS-SQL 世界中的交叉连接。

使用不带 where 子句的交叉连接

在 SSIS 中进行交叉连接的分步说明: http://toddmcdermid.blogspot.be/2010/09/performing-cross-join-cartesian-product.html

一些 SQL 有关交叉连接的服务器文档: https://technet.microsoft.com/en-us/library/ms190690%28v=sql.105%29.aspx

向两个源添加一个相同的列并为其分配相同的值,比如 1。因此,table1 中的所有 10 行和 table2 中的 20 行都具有该列的值“1”。当您现在执行 merge join,将连接类型保持为 full outer joinVoila!,您就有了 cross join。请记住,需要在 SSIS 的该列上对来源进行排序才能继续 Merge join,否则会引发错误。