Как использовать Calculated Join в Таблице, используя отношения 1-M и regex_extract - PullRequest
1 голос
/ 17 июня 2019

Вопрос 1. Может ли Tableau использовать несколько результатов из одной строки в REGEXP, используя глобальную переменную для сравнения с другой таблицей во время операции соединения?Если нет, вопрос 2 является нулевым.Если да ...

Вопрос 2. Я пытаюсь объединить два источника данных в Таблице, используя регулярное выражение в вычисляемом соединении, потому что левая таблица имеет 1 значение в каждой ячейке (т.е. 64826), а правая -Таблица имеет 4 возможных совпадения в каждой ячейке (т. е. 00000 | 00000 | 21678 | 64826).

Проблема в том, что мое регулярное выражение перестает смотреть после того, как находит 1 совпадение (первое из 4 значений), а глобальная переменная / g дает ожидаемый противоположный эффект и удаляет все совпадения.

Я пробовал рассчитанные объединения на вкладке Источник данных.Я также попытался разделить эти 4 значения в свои собственные столбцы на листах, используя regexp_extract_nth.В обоих случаях регулярное выражение перестает заботиться о первом результате.Похоже, что левое соединение несколько работает, в то время как внешнее объединение ничего не возвращает.

REGEXP_EXTRACT([Event Number],'(\d{5})')
REGEXP_EXTRACT_NTH([Event Number],'(?!0{5})(\d{5})',1)

В этих примерах регулярное выражение сопоставляет значение NULL с левой таблицей, даже если 64826 находится в правой таблице.Я ожидаю, что вычисленное объединение вернет все возможные совпадения из правильного набора, поэтому совпадение будет на 21678 и 64826, дублируя строки в правой таблице, например ...

21678 - 00000|00000|21678|64826
64826 - 00000|00000|21678|64826
45245 - 45106|45245|00000|00000
45106 - 45106|45245|00000|00000

1 Ответ

0 голосов
/ 18 июня 2019

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

\b([^0]....)\b

даже просто для тестирования, тогда, возможно, давайте изменим наши команды на:

REGEXP_EXTRACT([Event Number], '\b([^0]....)\b')

или

REGEXP_EXTRACT_NTH([Event Number], '\b([^0]....)\b', 1)

чтобы увидеть, что происходит. Я предполагаю, что нужные цифры не будут начинаться с 0.

Пожалуйста, посмотрите демо здесь

Ссылка

...