Удалить строки, которые содержатся (как подстроки) в других строках - PullRequest
0 голосов
/ 12 мая 2019

У меня есть таблица, подобная следующей:

This is a cat
This is a pet
This is a dog
is
a
is a
is
is a dog
That is a dog

Я хотел бы получить следующую таблицу:

This is a cat
This is a pet
This is a dog
That is a dog

По существу удалите строки, которые уже содержатся (как подстроки) в других строках.

Ответы [ 2 ]

1 голос
/ 12 мая 2019

Это зависит от точного характера вашего набора данных, но если бы у вас были столбцы, каждый из которых имел какое-то текстовое значение (как на рисунке), вы могли бы рассматривать каждую строку как набор элементов и использовать Искатель наборов элементов (после соответствующего преобразования вбитовый вектор), чтобы найти максимальные наборы элементов.

Максимальные наборы элементов будут строками, которые являются надмножествами других строк.

Sample Workflow Example Table Output Table

1 голос
/ 12 мая 2019

Вы можете создать комбинацию из всех строк с помощью узла Cross Joiner (оба входа взяты из вашего примера). Затем следует узел String Manipulation (вероятно, за которым следует узел String to Number ) или узел Snippet , который можно назначить 1 или 0, если оригинал содержится в последнем или нет. После вы можете GroupBy на основе исходного столбца и суммировать значения 0 / 1. С Фильтром строк вы можете хранить только те строки, которые содержат 1 в столбце суммы.

(Обратите внимание, что благодаря Cross Joiner он может создавать довольно большие таблицы. Может быть, Показатель расстояния узлов может решить эту проблему более эффективно.)

...