Строка базы данных содержит пары ключ: значение. Как извлечь значение для предоставленного пользователем ключа - PullRequest
0 голосов
/ 08 февраля 2020

Backend: таблица красного смещения; столбец C (varchar (1000)) содержит такие данные:

 A1:B1&A4:B7&A9:B12 

В основном это пары ключ: значение. & Разделяет пары, а: разделяет ключ и значение.

Число и длина ключей и значений не фиксированы. Содержание ключей и значений заранее неизвестно. Содержимое ключей и значений не перекрывается.

Цель: пользователь наблюдателя вводит значение ключа в поле пользовательского интерфейса.

Средство просмотра должно возвращать записи с этим ключом, не отображать весь текст C, но отображать только значение из C столбца, которое соответствует предоставленному пользователем ключу.

То, что я пробовал:

1) Redshift не имеет функции для преобразования Строка для сопоставления. Я пытался это реализовать. Но это привело к генерации таблицы в памяти, представляющей карту для каждой строки, которая неэффективна.

2) Пытался использовать строковые функции Looker для извлечения значения для данного ключа. Я пытался создать новое пользовательское измерение:

substring( ${T.C}  ,  
position( ${T.C},  "user_key:" ) + length("user_key:") + 1 ,  length_of_value )

, но в приведенном выше выражении я не знаю, как рассчитать length_of_value; Необходимо рассмотреть 2 случая: значение в середине строки или значение в конце строки.

...