Я пытаюсь заменить большие строки (пару сотен символов) на идентификаторы, чтобы создать простой материализованный вид парных последовательностей без необходимости сохранять исходную строку. Я создал подзапрос в PostgreSQL с выводом, похожим на приведенный ниже пример (с упрощенными сокращенными строками):
feat_uniquename | segment1 | segment2 | segment3
-----------------+---------------------+----------
SEQ000001.1 | GATA... | TTTA... | CTTT...
-----------------+---------------------+----------
SEQ000001.2 | GATT... | TTTC... | CTTT...
-----------------+---------------------+----------
SEQ000001.3 | GATG... | TTTC... | CTTT...
-----------------+---------------------+----------
SEQ000001.4 | GATC... | TTTA... | CTTT...
Я пытаюсь сжать это, чтобы выглядеть следующим образом:
feat_uniquename | segment1 | segment2 | segment3
-----------------+---------------------+----------
SEQ000001.1 | 1 | 1 | 1
-----------------+---------------------+----------
SEQ000001.2 | 2 | 2 | 1
-----------------+---------------------+----------
SEQ000001.3 | 3 | 2 | 1
-----------------+---------------------+----------
SEQ000001.4 | 4 | 1 | 1
Оставлять длинные строки в материализованном представлении было бы неэффективно с точки зрения памяти и, вероятно, медленной ассоциацией строк, но я не знаю, как продолжить использовать только SQL. Без использования итеративного процесса (это возможно даже в SQL?), Кажется невозможным связать значения. В крайнем случае, я мог бы сжать строки, используя словари Python, записать в текстовый файл с разделителями и проанализировать, чтобы создать материализованное представление.