cartesian product of two data sources

孤者浪人 提交于 2019-12-13 07:03:30

问题


Let's say I have two data sources in SSIS.

Table A has 10 rows and two of the columns are empty. Table B has 20 rows with two columns each.

I want to somehow join them in an ETL process in a specific way: for each row of table A, 20 rows are generated with the values for the two columns from table B.

This way 200 rows should be generated with every possible combination of the rows from tables A and B

I tried using Merge Join and Union pieces, but they won't work... Any ideas how to fix this?


回答1:


Add an identical column to both the sources and assign it the same value, say 1. So all the 10 rows in table1 and 20 rows in table2 have the value of "1" for that column. When you now do a merge join, keeping the join type as full outer join, Voila!, you have your cross join. Do keep in mind, the sources need to be sorted on that column for SSIS to go ahead with the Merge join, else it would throw an error.




回答2:


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

A cartesian join is a cross join in MS-SQL world.

Use cross join without a where clause

A step-by-step in SSIS for cross join: http://toddmcdermid.blogspot.be/2010/09/performing-cross-join-cartesian-product.html

Some SQL Server documentation about cross join: https://technet.microsoft.com/en-us/library/ms190690%28v=sql.105%29.aspx



来源:https://stackoverflow.com/questions/29560208/cartesian-product-of-two-data-sources

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!