Может ли Powerbi подсчитывать множественные вхождения определенного текста в ячейке? - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь выяснить, например, давайте возьмем в качестве примера следующую таблицу:

 | Col 1 | Col 2   |
 |-------|---------|
 | ab    | 1       |
 | ab ab | 2       |
 | ac    | 1       |
 | ae    | 1       |
 | ae ae | 2       |
 | af    | 1       |

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

Это возможно в Power BI?

1 Ответ

0 голосов
/ 23 октября 2018

Предполагая, что вы хотите посчитать количество вхождений первых непробельных символов, которые встречаются до первого разделяющего пробела, вы можете сделать следующее:

Col 2 = 
VAR Trimmed = TRIM(Table2[Col 1])
VAR FirstSpace = SEARCH(" ", Trimmed, 1, LEN(Trimmed) + 1)
VAR FirstString = LEFT(Trimmed, FirstSpace - 1)
RETURN DIVIDE(
           LEN(Trimmed) - LEN(SUBSTITUTE(Trimmed, FirstString, "")),
           FirstSpace - 1
       )

Давайте рассмотрим примерчтобы увидеть, как это работает.Предположим, у нас есть строка «abc abc abc».

Функция TRIM удаляет все лишние пробелы в начале и конце, поэтому Trimmed = "abc abc abc".

FirstSpace ищет первый пробел в Trimmed.В этом случае FirstSpace = 4. (Если первого пробела нет, то мы определяем FirstSpace как длину Trimmed + 1, поэтому следующая часть работает правильно.)

The FirstString использует FirstSpace, чтобы найти первый фрагмент.В этом случае FirstString = "abc".

Наконец, мы используем SUBSTITUTE для замены каждого FirstString пустой строкой (оставляя только средние пробелы) и посмотрим, как это меняет длинуTrimmed.Мы знаем LEN(Trimmed) = 11 и LEN(" ") = 2, поэтому разница в том, что 9 символов мы удалили путем подстановки.Мы знаем, что 9 символов - это n копий FirstString, "abc", и мы знаем, что длина FirstString равна FirstSpace - 1 = 3.

Таким образом, мы можем решить 3n = 9 для nчтобы получить n = 9/3 = 3, количество подстрок "abc".

...