Идеи для l oop по строкам, а затем по столбцам на SQL сервере - PullRequest
0 голосов
/ 09 мая 2020

У меня сложное требование. Я безуспешно пытался sh удалить из базы данных.

Моя среда основана на Azure фабрике данных + SQL сервере.

По сути, у меня есть исходная таблица и целевая таблица, и перед вставкой из источника в целевую я должен:

  1. Проверить каждую из ячеек. Проверка на самом деле сложна и основана на наборе динамических c функций, которые читают лог c проверки на основе типа данных столбца, длины, таблицы и так далее, а также того, какие столбцы нуждаются в проверке и сколько из них им нужно.

  2. Для данного столбца может потребоваться более одной проверки (есть другая таблица, в которой указывается, какие проверки применять к каждому столбцу).

  3. Если проверка не прошла для данной ячейки, мне нужно записать это в таблицу аудита и установить значение null или пустое, чтобы разрешить вставку в мою целевую таблицу.

В целях иллюстрации скажем, что я просто хочу проверить, является ли столбец A целочисленным в рамках проверки 1, если его меньше 150 в рамках проверки 2, и столбец C не содержит символ «A» в качестве проверки 1.

SourceTable

TargetTable

ErrorLog

Полагаю, вы знаете, почему я пытался убрать sh это от SQL. В основном мне нужно сделать три вложенных цикла:

  1. L oop в строках
  2. L oop в столбцах
  3. L oop в правилах

Как бы я ни думал об этом, я все равно не вижу чтобы сделать это с помощью операций на основе SET и даже с циклами, я также не понимаю, как это сделать. Насколько мне известно, вы не можете вложить al oop в al oop (не говоря уже о том, что это убьет производительность).

Единственный вариант, который я вижу, - это использование INSTEAD-OF-TRIGGER, который делает это для каждой записи, но мне все равно придется oop через столбцы и правила.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...