转换合并连接成BIML - 需要NumKeyColumns改为1
问题描述:
我几乎准备了BIML文件,但我还有一个问题转换合并连接成BIML - 需要NumKeyColumns改为1
我试图把标准合并加入到BIML 和99级%的作品,和该组件生成和DTSX制作,但 我不能设置numKeyColumns值随时随地
<properties>
<property dataType="System.Int32" description="Specifies the type of join to perform." name="JoinType" typeConverter="JoinType">0</property>
<property dataType="System.Int32" description="Specifies the number of columns in the ordering key." name="NumKeyColumns">0</property>
<property dataType="System.Boolean" description="Indicates whether the null values are treated as equal values." name="TreatNullsAsEqual">true</property>
<property dataType="System.Int32" description="Indicates the requested maximum buffers per input before blocking." name="MaxBuffersPerInput">5</property>
</properties>
我可以设置jointype 但是,当产生DTSX将在0填补我找不到NumKeyColumns 但是是必须是1
这是BIML合并连接(不传入的连接)
<MergeJoin Name="Merge Join" JoinType="FullOuterJoin">
<LeftInputPath OutputPathName="Source.Output">
<Columns>
<Column SourceColumn="BK" IsUsed="true" SortKeyPosition="1" TargetColumn="sBK" />
<Column SourceColumn="hbSource" IsUsed="true" />
</Columns>
</LeftInputPath>
<RightInputPath OutputPathName="Dwh Destination.Output">
<Columns>
<Column SourceColumn="BK" IsUsed="true" TargetColumn="dBK" />
<Column SourceColumn="hbDestination" IsUsed="true" />
</Columns>
</RightInputPath>
</MergeJoin>
任何帮助是极大的赞赏
答
我觉得你失踪了MergeJoin的JoinKey属性。添加它可以释放一个语法正确的SSIS包。不管它在逻辑上是否正确都是另一回事;)
让我知道如果这不是你想要做的。乐于帮助,爱Biml。
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Connections>
<OleDbConnection Name="SRC" ConnectionString="Provider=SQLNCLI11;Server=localhost\dev2016;Initial Catalog=tempdb;Integrated Security=SSPI;" />
</Connections>
<Packages>
<Package Name="MergeJoin">
<Tasks>
<Dataflow Name="DFT Demo">
<Transformations>
<OleDbSource Name="Source" ConnectionName="SRC">
<Columns>
<Column SourceColumn="BK" SortKeyPosition="1" />
</Columns>
<DirectInput>SELECT 1 AS BK, 'foo' AS hbSource UNION SELECT 2, 'ick' order by 1;</DirectInput>
</OleDbSource>
<OleDbSource Name="Dwh Destination" ConnectionName="SRC">
<Columns>
<Column SourceColumn="BK" SortKeyPosition="1" />
</Columns>
<DirectInput>SELECT 1 AS BK, 'foo' AS hbDestination UNION SELECT 3, 'zoo' order by 1;</DirectInput>
</OleDbSource>
<MergeJoin Name="Merge Join" JoinType="FullOuterJoin">
<LeftInputPath OutputPathName="Source.Output">
<Columns>
<Column SourceColumn="BK" IsUsed="true" SortKeyPosition="1" TargetColumn="sBK" />
<Column SourceColumn="hbSource" IsUsed="true" />
</Columns>
</LeftInputPath>
<RightInputPath OutputPathName="Dwh Destination.Output">
<Columns>
<Column SourceColumn="BK" IsUsed="true" TargetColumn="dBK" />
<Column SourceColumn="hbDestination" IsUsed="true" />
</Columns>
</RightInputPath>
<JoinKeys>
<JoinKey LeftColumn="BK" RightColumn="BK" />
</JoinKeys>
</MergeJoin>
</Transformations>
</Dataflow>
</Tasks>
</Package>
</Packages>
</Biml>
你做到了! 是的,我错过了(我想我补充说,但也许在另一个测试版本) 我测试了2次,看看它是否真的工作,是的它做到了! 谢谢,我也爱喝茶:-) – John