Я работаю над переносом существующей инфраструктуры генерации пакетов служб SSIS на BIML и столкнулся с задачей переноса следующей логики.
Платформа (написанная на C #) создает Источник OLE DB на основеметаданные. Затем, после создания экземпляра источника данных, он просматривает выходные столбцы. Если присутствуют определенные столбцы - платформа внедряет определенные преобразования, такие как Lookup и т. Д.
Пример этой логики - Источник OLE DB использует запрос select quantity, salesdate, prcode as productid from salesfact
. Затем код ищет столбец productid и проверяет, имеет ли он тип данных int . Если это так - добавляет Lookup , который определяется столбцом поиска ProductID , имеет исправленный запрос / кэш поиска и предоставляет новый столбец DimProductID .
Подход довольно динамичный, потому что Источник OLE DB может иметь оператор SQL Select из переменной или с параметрами. Он работает правильно, при выполнении Instantiate()
вызова OLE DB Source предоставляет необходимые столбцы в метаданных преобразования.
Вопрос - может ли такой динамический подход быть реализован в BIML? Если да - любая идея или примеры будут великолепны. На данный момент BIML кажется полностью декларативным (т. Е. Все метаданные должны быть определены где-то до запуска сценария BIML).