Россия Нет

Как в Power BI (Power Pivot) вывести найденный текст? DAX функции LEFT, RIGHT и MID

 Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):


Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В этой статье мы разберем несколько текстовых функций языка 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, все.

Пожалуйста, оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(9 голосов, в среднем: 3.6 из 5 баллов)
[Экспресс-видеокурс] Быстрый старт в языке DAX

 
 
Антон БудуевУспехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
 
 
 
 

Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
 
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.

 
Понравился материал статьи?
Избранные закладкиДобавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D

Автор статьи:
Категория: Язык функций и формул DAX для Power BI и Excel (Power Pivot)

Добавить комментарий

* Заполняя форму отправки комментария своими персональными данными (имя, email, сайт и др.), Вы автоматически подтверждаете свое согласие на обработку своих персональных данных


  1. Ksu:

    Добрый день.
    А если у меня строка с иерархией отделов, например: руководители/деп. логистики/отд. доставки/водители (их несколько видов в таблице), и мне нужно разделить эти отделы на условно 4 столбца. Соответственно названия департаментов и отделов разной длинны. С left и right все понятно (search или find даст мне расположение слеша), а как быть с mid? при указании в позицию и количество символов функции search или find выдает ошибку, что mid имеет неправильный тип данных или недопустимое значение. Заранее спасибо

    1. Антон Будуев:

      Здравствуйте. На самом деле, для разделения строки на столбцы использовать DAX не совсем верно. Для этого очень хорошо подходит Power Query — он как раз и существует для того, чтобы подготавливать модель данных. Загрузите Вашу таблицу в модель данных через Power Query, предварительно разделив строки на столбцы следующим способом:
      1) Выделите сам столбец и вызовите контекстное меню через правую клавишу мыши
      2) Перейдите в меню Разделить столбец / по разделителю: ссылка на скриншот
      3) Введите в качестве разделителя слеш /, и пункт «по каждому вхождению разделителя, нажмите ок: ссылка на скриншот

      и строка у Вас разделится на столбцы. Назовите столбцы нужными именами и выйдите из Power Ouery: ссылка на скриншот

      1. Ksu:

        Спасибо, все получилось.

  2. Роман:

    Добрый день! А есть ли способ выделить бренды если их несколько. Например, в вашем последнем примере:

    Бренд =
    MID (
    [Обувь];
    FIND («NIKE»; [Обувь]; 1; 1);
    4
    )

    если бы у нас были кроссовки не только бренда nike, но и бренда adidas ?

    1. Антон Будуев:

      Роман, день добрый. В данном случае, возможны разные варианты. Как один из них — использовать функцию SEARCH

      Пример формулы расчета бренда из текстового столбца

      Бренд = 
      IF (
          SEARCH("nike";[Обувь];1;0)<>0;
          "NIKE";
          IF(
              SEARCH("adidas";[Обувь];1;0)<>0;
              "ADIDAS"
          )
      )
      
      1. Роман:

        Спасибо, все получилось. У вас отличный бесплатный курс!