I думаю, , что вам не хватает, когда вы определяете свой Lookup в потоке данных, предоставьте действительный запрос к схеме по умолчанию. Это позволит механизму получить свойства справочной таблицы / набора, а затем, когда пакет будет отправлен, переопределения потока данных должны вступить во владение.
<Dataflow Name="Data Flow Task">
<Expressions>
<Expression ExternalProperty="[Lookup].[SqlCommand]">"SELECT *
FROM
(
VALUES (1, 'b')
,(100, 'a')
,(11, 'c')
) D(colRef, colVal)"</Expression>
</Expressions>
<Transformations>
<OleDbSource Name="OLE DB Source" ConnectionName="SourceConnectionOLEDB">
<DirectInput>SELECT 100 aS col
union all select 11</DirectInput>
</OleDbSource>
<Lookup Name="Lookup" OleDbConnectionName="SourceConnectionOLEDB">
<Outputs>
<Column SourceColumn="colVal" TargetColumn="colVal" />
</Outputs>
<Parameters>
<Parameter SourceColumn="col" />
</Parameters>
<Inputs>
<Column SourceColumn="col" TargetColumn="colRef" />
</Inputs>
<DirectInput>SELECT *
FROM
(
VALUES (1, 'b')
,(100, 'a')
) D(colRef, colVal)</DirectInput>
<ParameterizedQuery>select * from (SELECT *
FROM
(
VALUES (1, 'b')
,(100, 'a')
) D(colRef, colVal)) [refTable]
where [refTable].[colRef] = ?</ParameterizedQuery>
</Lookup>
<RowCount Name="Row Count" VariableName="User.Variable" />
</Transformations>
</Dataflow>
В приведенном выше фрагменте я генерирую пару чисел , 100 и 11 как col
и затем направляют к компоненту Lookup, который имеет жестко закодированные значения 1 и 100. Поскольку я ожидаю совпадения, если я запустил его как есть, он взорвется от непревзойденного значения 11.
Переопределение ExternalProperty моего Dataflow затем вводит «пропущенные» во время выполнения, чтобы спасти мой поиск от взрыва.
В вашем случае,
Я не пытался сделать это для частичного кэша, но я не могу себе представить, что синтаксис будет сильно отличаться, , но Я бы однажды исправил код вручную, а затем перепроектировал бы пакет. Biml Express теперь предоставляет эту функциональность бесплатно, и это здорово, что вы ответили на вопрос "как мне express Y в Biml?" Щелкните правой кнопкой мыши на пакете, и появится опция «Преобразовать в Biml» (имя приблизительное)