两个数据源的笛卡尔积
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 join
,Voila!,您就有了 cross join
。请记住,需要在 SSIS
的该列上对来源进行排序才能继续 Merge join
,否则会引发错误。
假设我在 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 join
,Voila!,您就有了 cross join
。请记住,需要在 SSIS
的该列上对来源进行排序才能继续 Merge join
,否则会引发错误。