Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):
Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В этой статье мы разберем несколько текстовых функций языка DAX, которые выводят нужное количество символов в Power BI или PowerPivot. А именно, функции LEFT, RIGHT и MID.
Для Вашего удобства, рекомендую скачать «Справочник DAX функций для Power BI и Power Pivot» в PDF формате.
Если же в Ваших формулах имеются какие-то ошибки, проблемы, а результаты работы формул постоянно не те, что Вы ожидаете и Вам необходима помощь, то записывайтесь в бесплатный экспресс-курс «Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot».
DAX функции LEFT и RIGHT в Power BI и Power Pivot
LEFT () — выводит нужное количество символов с левой стороны.
RIGHT () — выводит нужное количество символов с правой стороны.
Синтаксис:
LEFT ("Текст"; Количество Символов) RIGHT ("Текст"; Количество Символов)
Где:
- Текст – исследуемый текст или столбец с текстовыми данными
- Количество Символов – количество символов, которые нужно вывести
Рассмотрим примеры формул на основе DAX функций LEFT и RIGHT.
В Power BI Desktop имеется исходная таблица по товарам «Обувь», содержащая один столбец [Кроссовки], в котором расположена в единую строку информация по виду обуви (кроссовки), бренду и по сезону коллекции:
Задача, создать дополнительные вычисляемые столбцы в исходной таблице. Отдельно с информацией по виду обуви и отдельно по сезонам коллекций.
Так как вид обуви (слово «кроссовки») в каждой строке находится слева, а сезон коллекции (слово «коллекц’17») — справа и оба этих слова нужно вывести в отдельные столбцы, то для этого очень хорошо подойдут рассматриваемые функции LEFT и RIGHT.
Давайте напишем соответствующие формулы:
Вид Обуви = LEFT ([Кроссовки]; 9) Сезон Коллекции = RIGHT ([Кроссовки]; 10)
В качестве первых параметров в этих функциях мы указали ссылку на исходный столбец, который содержит исследуемые текстовые данные.
Во вторых параметрах мы прописали количество символов, которые нужно вывести — 9 и 10, так как слово «кроссовки» состоит из 9 символов, а «коллекц’17» из 10.
В итоге, в Power BI мы получили следующий результат:
Теперь, рассмотрим еще одну функцию языка DAX, которая, также, выводит нужное количество символов, но уже с возможностью задавать первоначальную позицию. И на основе нее создадим формулу поиска нужного слова в исходном тексте и вывода этого слова в отдельный столбец.
DAX функция MID в Power BI и Power Pivot
MID () — выводит часть текста заданной длинны с учетом первоначальной позиции.
Синтаксис:
MID ("Текст"; Позиция; Количество Символов)
Где:
- Текст – исследуемый текст или столбец с текстовыми данными
- Позиция – номер позиции символа, с которого нужно выводить текст
- Количество Символов – количество символов, которые нужно вывести
Рассмотрим пример работы формулы на основе DAX функции MID.
В модели данных Power BI имеется исходная таблица по товарам в магазине обуви. В таблице имеется один столбец, в котором в единую строку расписана информация по виду обуви, бренду и размеру:
Задача — на основе имеющейся информации, требуется создать в исходной таблице столбец с именем бренда. Попробуем это реализовать при помощи функции MID:
Бренд = MID ([Обувь]; 9; 4)
Но, данная формула, в Power BI работает неправильно:
Так как, на самом деле, мы не можем просто так, числом указать номер стартовой позиции вывода текста, потому что перед брендом NIKE расположены разные слова с разной длинной и нам каким-то образом нужно узнать в каждом конкретном случае номер стартовой позиции.
Справится с этой проблемой нам поможет другая DAX функция — FIND, которая найдет среди всей строки заданное нами слово «NIKE» и вернет ее стартовую позицию среди всего текста. Подробно прочитать о работе функции FIND Вы можете в этой статье.
Итак, исправим нашу формулу:
Бренд = MID ( [Обувь]; FIND ("NIKE"; [Обувь]; 1; 1); 4 )
В первом параметре формулы мы указали столбец с текстовой информацией, которую мы исследуем.
Во втором параметре мы разместили DAX функцию FIND, которая найдет слово «NIKE» и вернет его стартовую позицию
В третьем параметре мы указали количество выводимых символов.
В результате выполнения этой формулы на основе DAX функций MID и FIND в исходной таблице в Power BI Desktop будет создан следующий вычисляемый столбец:
Теперь, все заработало как нужно.
На этом с разбором DAX функций LEFT, RIGHT и MID, возвращающих нужное количество символов в Power BI и PowerPivot, все.
Пожалуйста, оцените статью:
Успехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.
Понравился материал статьи?
Добавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D
Добрый день.
А если у меня строка с иерархией отделов, например: руководители/деп. логистики/отд. доставки/водители (их несколько видов в таблице), и мне нужно разделить эти отделы на условно 4 столбца. Соответственно названия департаментов и отделов разной длинны. С left и right все понятно (search или find даст мне расположение слеша), а как быть с mid? при указании в позицию и количество символов функции search или find выдает ошибку, что mid имеет неправильный тип данных или недопустимое значение. Заранее спасибо
Здравствуйте. На самом деле, для разделения строки на столбцы использовать DAX не совсем верно. Для этого очень хорошо подходит Power Query — он как раз и существует для того, чтобы подготавливать модель данных. Загрузите Вашу таблицу в модель данных через Power Query, предварительно разделив строки на столбцы следующим способом:
1) Выделите сам столбец и вызовите контекстное меню через правую клавишу мыши
2) Перейдите в меню Разделить столбец / по разделителю: ссылка на скриншот
3) Введите в качестве разделителя слеш /, и пункт «по каждому вхождению разделителя, нажмите ок: ссылка на скриншот
и строка у Вас разделится на столбцы. Назовите столбцы нужными именами и выйдите из Power Ouery: ссылка на скриншот
Спасибо, все получилось.
Добрый день! А есть ли способ выделить бренды если их несколько. Например, в вашем последнем примере:
Бренд =
MID (
[Обувь];
FIND («NIKE»; [Обувь]; 1; 1);
4
)
если бы у нас были кроссовки не только бренда nike, но и бренда adidas ?
Роман, день добрый. В данном случае, возможны разные варианты. Как один из них — использовать функцию SEARCH
Спасибо, все получилось. У вас отличный бесплатный курс!