2017-10-19 33 views
0

J'étais presque prêt avec un fichier BIML mais j'ai un problème de plusConvert jointure de fusion dans BIML - NumKeyColumns des besoins ont changé à 1

je tente de mettre la fusion norme Rejoindre dans BIML et des œuvres de 99%, et le composant est généré et le dtsx est fait, mais je ne peux pas définir la valeur numKeyColumns partout

<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> 

je pouvais mettre la JoinType mais je ne peux pas trouver les NumKeyColumns lorsque le dtsx est généré, il remplira 0 mais est doit être 1

Ceci est la jointure de fusion dans BIML (sans les connexions entrantes)

  <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> 

Toute aide est grandement appréciée

Répondre

0

Je pense que vous manquez l'attribut JoinKey pour le MergeJoin. Ajout de cela permis pour l'émission d'un paquet SSIS syntaxiquement correct. Que ce soit logiquement correct est une question différente;)

Faites-moi savoir si ce n'est pas ce que vous essayiez de faire. Heureux d'aider, aime 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> 
+1

Vous l'avez fait! oui je l'avais manqué (je pensais avoir ajouté cela, mais peut-être dans une autre version de test) J'ai testé 2 fois pour voir si ça fonctionnait vraiment, et oui c'est fait! merci, et j'aime aussi boire du thé :-) – John