Создание источника данных в Таблице и 170 000 записей

Обычный прямоугольник с пунктирным прямоугольником в верхнем правом углу, чтобы представить параметр шаблона. Что-то вроде этого:

           .......               
___________:  T  :
|          :.....:
|              |
|  ClassName   |
|              |
|______________|
1
задан HelloCognos 6 March 2019 в 22:00
поделиться

2 ответа

Вы можете создать расчет соединения. Выделенный раскрывающийся список показывает, где это можно найти:

enter image description here

Пока формат идентификатора элемента в [Элемент описания] имеет некоторые шаблон, он может быть извлечен с помощью регулярных выражений. Как вы упоминаете в своем вопросе, один из способов, которым может быть представлен идентификатор, - после «TO =», и похоже, что он заканчивается перед «_». Следующее вычисляемое регулярное выражение поле будет тянуть строку между ними:

REGEXP_EXTRACT([Member Desc],"([^TO=]*)(?=_)")

enter image description here

Результат должен правильно объединить два источника данных: [ 1112]

enter image description here

Выше приведен набросок, который, я надеюсь, укажет вам правильный путь. Я понимаю, что может быть несколько разных методов, в которых [ID члена] представляет себя, поэтому я не смогу точно определить регулярное выражение, но если вообще есть какой-либо шаблон, тогда приведенный выше формат должен работать. (т. е. даже если единственный шаблон состоит в том, что [ID участника] состоит из трех букв, за которыми следуют четыре цифры - или он всегда начинается с A и заканчивается чем-то другим - и т. д.)

Regex также должен работать лучше, чем Функция содержит (), но имейте в виду, что функция должна искать через каждую строку в каждой строке, чтобы сделать соединение.

Редактировать в ответ на комментарий:

Чтобы добавить несколько условий, попробуйте следующий метод:

IF LEN(REGEXP_EXTRACT([Member Desc],"([^FROM=]*)(?=,)")) > 0
THEN REGEXP_EXTRACT([Member Desc],"([^FROM=]*)(?=,)")
ELSEIF LEN(REGEXP_EXTRACT([Member Desc],"([^TO=]*)(?=,)")) > 0
THEN REGEXP_EXTRACT([Member Desc],"([^TO=]*)(?=,)")
ELSEIF [...Put as many of these as might match your pattern]
THEN [...Put as many of these as might match your pattern]
END

По сути, расчет идет вниз список и пробовать каждую возможность. Я немного изменил ваш, чтобы посмотреть на длину (LEN ()) возвращаемого значения, которое должно сравнительно быстро сравниваться, так как это целое число. Поскольку этот расчет повторяет каждый ELSEIF и находит совпадение, он прекращает итерацию по списку - поэтому важно поместить наиболее вероятное совпадение вверху. Результатом вычисляемого поля должен быть идентификатор участника. Если совпадения не найдено, оператор ELSE на самом деле не нужен, потому что внутреннее соединение автоматически исключит его.

Редактировать в ответ на комментарий: Спасибо. Я вижу ваши рекомендации.

0
ответ дан HelloCognos 6 March 2019 в 22:00
поделиться

Я думаю, вам нужно будет найти способ удалить идентификатор члена из desc члена в SQL. Должен быть какой-то шаблон идентификатора участника. Например, это всегда 3 буквы, за которыми следуют 5 цифр или что-то подобное. Если вы можете придумать шаблон, то вы можете использовать SQL и некоторую комбинацию Substring, Charindex и / или Like% Text% или шаблон регулярного выражения, чтобы вычеркнуть фактический идентификатор члена в таблице SQL Server как собственное поле перед принося это в Таблицу.

0
ответ дан wavery 6 March 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: