Глитч-эффект с искажёнными символами и знаками на тёмном фоне.

Разделение чисел и текста в одном столбце с помощью Power Query

Электронная таблица Excel со столбцом, содержащим числа и текст? Какой беспорядок!

Делиться

a5b2ebc452f21f7637610870fb88db14

Введение

Это типичный случай для самообслуживаемой бизнес-аналитики с использованием данных из Excel.

Несколько дней назад клиент задал мне следующий вопрос:

У меня есть электронная таблица Excel, в одном столбце которой находятся числа и текст. Я хочу импортировать эту таблицу в Power BI и выполнить анализ чисел в этом столбце.

Как отделить цифры от текста в этом столбце?

Помните, что мне нужен и текст в этом столбце.

Я никогда раньше не оказывался в подобной ситуации, поэтому сначала начал использовать знакомый мне метод.

Я создал фиктивный файл Excel с той же проблемой, который выглядит следующим образом:

73ec3382a92d52fe329c9be67bee669e

Для создания прототипа я сначала загрузил эти данные в базу данных SQL Server, чтобы посмотреть, как решить эту задачу там.

Решение проблемы с помощью SQL

В T-SQL есть две функции, которые полезны в подобных сценариях:

  • TRY_CONVERT()
    • Эта функция пытается преобразовать значение в целевой тип данных. Если это не удаётся, она возвращает NULL.
  • ISNUMERIC()
    • Проверяет, является ли значение числовым. Если да, возвращает 1. В противном случае — 0.

Исходя из этих знаний, я написал запрос для разделения значений на два столбца. Один с числами, а другой с текстом:

SELECT [Values] ,TRY_CONVERT(decimal(18, 5), [Values]) AS [Number] ,IIF(ISNUMERIC([Values]) = 0, [Values], NULL) AS [Text] FROM [dbo].[MixedValues];

В результате получилась следующая таблица:

541c59692a5f7450ff5a8d7ec82c95d6

Если присмотреться, то видно, что строка 17 распознана как текст.

Это происходит потому, что число содержит пробел.

Я вернусь к этому позже.

Переход на Power Query – попытка использовать IsNaN()

Теперь я загрузил файл Excel в Power Query.

Я определил столбец как «Текст» и приступил к решению этой задачи.

В первой попытке используется функция Number.IsNaN().

Эта функция возвращает true, если значение равно NaN. «NaN» — это заполнитель, указывающий на неприменимость значения, например, из-за деления на ноль.

Я попытался определить, эквивалентен ли текст значению NaN.

Это M-код для вычисляемого столбца:

if Number.IsNaN([Value]) = true then [Value] else null

Результат меня удивил:

3f9b8ad30d2aa594fa66edc5748e2045

Как ни странно, в результате программа не может преобразовать число в число.

Полагаю, это происходит потому, что тип данных столбца — текстовый.

Затем я попытался преобразовать столбец в число и применить к результату функцию IsNaN():

Если Number.IsNaN(Number.From([Value])) = false, то Number.From([Value]) иначе null

Теперь числа преобразуются в числа, но текстовые значения приводят к ошибке:

8ba287f1437782fd4aa2e8d68c8813f4

Теперь эта логика применима и к числам.

Однако преобразование не удается для строк, содержащих текст. Это приводит к появлению строк с ошибками.

Попытка использования Value.Is() в Power Query

Давайте попробуем другую функцию: Value.Is()

Эта функция проверяет, совместимо ли значение с заданным типом данных.

Это должно быть эквивалентно функции ISNUMERIC(), показанной выше:

if Value.Is([Value], Number.Type) = true then Number.From([Value]) else null

К сожалению, эта функция также не вернула ожидаемый результат:

5cb24c365e86c8197ccf657f773da466

Когда я попробовал тот же подход, что и выше, предварительно преобразовав значение в число, я получил тот же результат, что и раньше:

36570060596b72993b3cfeeec579b270

Поэтому я подозреваю, что функция Value.Is() ожидает числовой тип данных, но это мне кажется нелогичным.

На тот момент у меня не было времени на более глубокие исследования, так как его было очень мало.

Пришло время изменить подход.

Концепция переключения

Теперь я изучил, как выявлять ошибки в Power Query.

Моя идея заключалась в следующем: что если бы я мог перехватить ошибку преобразования и использовать эту информацию?

Я нашел эту страницу с полезной информацией: Ошибки – PowerQuery M | Microsoft Learn

Исходя из этого, я вывел следующее выражение:

try Number.From([Value]))

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

e1c0b9d1f66733c9f72de09e0d489aa7

Я был полон оптимизма, так как ошибки не возникло.

Следующим шагом было расширение архива:

f0402520b9a4301aa9b19d5b983f86e6

Мне не нужны были столбцы «Ошибки» — только столбец «Значение».

Вот результат после расширения:

9eb5268eb5f3bd37a0cfa735c070ee1a

Обратите внимание, что я переименовал столбцы непосредственно в функции ExpandRecordColumn().
В противном случае у меня получился бы столбец с названием [Значение.1].

Этот результат стал первым, где я не получил никаких ошибок.

Теперь я добавил вычисляемый столбец, чтобы проверить, пуст ли новый столбец. Если да, то исходный столбец «Значение» содержал текст:

если [Числовое значение] = null тогда [Значение] иначе null

Вот результат:

5d39ea5b6cbcd0bd23f503cac047974c

После установки правильных типов данных и удаления исходного столбца «Значение» я получил следующую таблицу:

b380ca8bdad9369701b7e43812c80926

Обработайте число с помощью пропусков.

Но у нас всё ещё есть 17-я строка, в которой содержалось число с пробелом.

Как я с этим справился?

Самым простым решением было удалить все пустые значения из столбца «Значение»:

4bd22cb95d0205dff0a2b314168742ed

Но мне пришлось добавить этот шаг, прежде чем приступать к разделению двух типов значений:

ad5e13aca5355e59bb913e6c3a390413

После добавления этого шага строка 17 распознается как число и сохраняется корректно.

Вот данные после загрузки в Power BI:

5ac505fe796e3f85d996df055c6c81ef

Но это работало только в том случае, если текстовые значения представляли собой отдельные слова. Это не работало, когда хранились предложения или несколько слов.

Заключение

Это было увлекательное знакомство с тем, как Power Query, или язык M, работает с типами данных.

Я до сих пор не уверен в причинах ошибок.

Но я научился обрабатывать ошибки, или использовать вызов конструкции try и обрабатывать вывод.

Это было очень полезно.

В любом случае, как вы видите на примере исходного значения в строке 17, качество данных имеет первостепенное значение.

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

Это настоящий кошмар, потому что Excel очень терпим к типам данных. Он принимает всё, даже если столбец отформатирован как число.

В такой ситуации я вынужден заставлять пользователей использовать параметры форматирования Excel, чтобы гарантировать единообразное распознавание чисел.

Без этого у меня нет возможности импортировать эти данные в Power BI без значительных усилий по очистке цифр.

И будьте уверены, пользователи всегда найдут способ испортить цифры в Excel.

Ссылки

Данные создаются с помощью случайных чисел и слов.

Вот справочная информация по языку M: Справочник по языку формул Power Query M – PowerQuery M | Microsoft Learn

Источник: towardsdatascience.com

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.
dummy-img
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.
dummy-img
dummy-img
Взаимодействие человека и машины погружается под воду.
Взаимодействие человека и машины погружается под воду.
Дифференциально приватное машинное обучение в масштабе с использованием JAX-Privacy
Image Not Found
Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.

Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.

Вкратце Опубликовано: Изображение предоставлено: Thos Robinson/Getty Images для The New York Times (откроется в новом окне) Джули Борт Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.…

Апр 21, 2026
dummy-img

Как почистить виниловые пластинки (2026): пылесос, ультразвук, чистящий раствор, щетка.

Эти щелчки и треск недопустимы. Приведите свою музыку в порядок с помощью этого удобного руководства. Источник: www.wired.com

Апр 21, 2026
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Это сегодняшний выпуск The Download, нашей ежедневной новостной рассылки, которая предоставляет вам ежедневную порцию событий в мире технологий. Кибермошенники обходят системы безопасности банков с помощью незаконных инструментов, продаваемых в Telegram. В центре по отмыванию денег в Камбодже…

Апр 21, 2026
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Это сегодняшний выпуск The Download, нашей ежедневной новостной рассылки, которая предоставляет вам ежедневную порцию событий в мире технологий. Кибермошенники обходят системы безопасности банков с помощью незаконных инструментов, продаваемых в Telegram. В центре по отмыванию денег в Камбодже…

Апр 21, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых