Мой клиент хочет классифицировать столбец свободного текста в одной из своих таблиц, распознавая определенный строковый шаблон ('AAA', 'BBB', ...) в имени поля столбца. Они предоставили мне запрос для классификации:
SELECT [Column],
CASE
WHEN UPPER([Column]) LIKE '%AAA%'
OR UPPER([Column]) LIKE '%BBB%'
OR UPPER([Column]) LIKE '%CCC%'
OR UPPER([Column]) LIKE '%DDD%'
OR UPPER([Column]) LIKE '%EEE%'
THEN 'Category1'
WHEN UPPER([Column]) LIKE '%FFF%'
OR UPPER([Column]) LIKE '%GGG%'
OR UPPER([Column]) LIKE '%HHH%'
THEN 'Category2'
WHEN UPPER([Column]) LIKE '%III%'
OR UPPER([Column]) LIKE '%JJJ%'
THEN 'Category3'
WHEN UPPER([Column]) LIKE '%KKK%'
OR UPPER([Column]) LIKE '%LLL%'
OR UPPER([Column]) LIKE '%MMM%'
THEN 'Category4' END TYPE
FROM [Table]
Это работает нормально, но проблема в том, что они хотят добавить больше шаблонов в будущем, и у них нет доступа к исходному коду. Поэтому они хотят иметь возможность загружать свои шаблоны через плоский файл, который будет извлечен и сохранен в таблице, подобной этой:
+-------+-----------+---------+
| Level | Category | Pattern |
+-------+-----------+---------+
| 1 | Category1 | AAA |
| 1 | Category1 | BBB |
| 1 | Category1 | CCC |
| 1 | Category1 | DDD |
| 1 | Category1 | EEE |
+-------+-----------+---------+
| 2 | Category2 | FFF |
| 2 | Category2 | GGG |
| 2 | Category2 | HHH |
+-------+-----------+---------+
| 3 | Category3 | III |
| 3 | Category3 | JJJ |
+-------+-----------+---------+
| 4 | Category4 | KKK |
| 4 | Category4 | LLL |
| 4 | Category4 | MMM |
+-------+-----------+---------+
Итак, теперь я пытаюсь выяснить, существует ли какой-либо автоматизированный способ конструирования оператора CASE WHEN сверху (с использованием T-SQL или сценариев) с использованием таблицы Pattern в качестве входных данных. Порядок CASE WHEN также очень важен, и поэтому я добавил столбец «Уровень».
SSIS будет использоваться для назначения категории каждой строке в таблице. Существуют ли какие-либо компоненты в SSIS, чтобы помочь мне в достижении моей цели?