Найти количество 0 в конце целого числа с помощью POWER QUERY Power Bi

#powerbi #powerquery #powerbi-desktop #m

#powerbi #powerquery #powerbi-рабочий стол #m

Вопрос:

Я хотел узнать количество 0 в конце целого числа. Например, для 2020 года он должен считать 1, для 2000 он должен считать 3, для 3010000 он должен считать 4

Я понятия не имею, как это сделать, не считая всех нулей, а не только конечных!

кто-нибудь, пожалуйста, помогите 🙂

Комментарии:

1. Мне нужно это сделать в РЕДАКТОРЕ ЗАПРОСОВ PowerBI, я попытался создать пользовательский столбец

Ответ №1:

Перейдите в редактор Power Query и добавьте пользовательский столбец с помощью приведенного ниже кода-

 if Number.Mod([number],100000) = 0 then 5
else if Number.Mod([number],10000) = 0 then 4
else if Number.Mod([number],1000) = 0 then 3
else if Number.Mod([number],100) = 0 then 2
else if Number.Mod([number],10) = 0 then 1
else 0
  

Считается, что максимальная вероятность завершения 0 равна 5. Вы можете добавить больше регистров if / else, следуя приведенной выше логике, если вы прогнозируете больше последовательных чисел 0 в конце.

Вот пример вывода с использованием приведенной выше логики-

введите описание изображения здесь

Ответ №2:

Воспользуйтесь тем фактом, что текст «00123», преобразованный в число, будет на 2 символа короче.

 = let
TxtRev = Text.Reverse(Number.ToText([num]))amp;"1", /*convert to text and reverse, add 1 to handle num being 0*/
TxtNoZeroes = Number.ToText(Number.FromText(TxtRev)) /*convert to number to remove starting zeroes and then back to text*/
in 
Text.Length(TxtRev)-Text.Length(TxtNoZeroes) /*compare length of original value with length without zeroes*/
  

введите описание изображения здесь

Это будет работать для любого количества конечных нулей (конечно, до емкости Int64, минус пробел для amp;"1" ). Предполагая, что столбец имеет тип number; если это текст, просто удалите Number.ToText TxtRev его. Если у вас есть отрицательные числа или десятичные дроби, замените символы, не являющиеся цифрой, после преобразования в текст. Для начального числа, равного 0, оно показывает 1, но если оно должно показывать 0, просто удалите amp;"1" .

Комментарии:

1. привет, АдамЛ, спасибо тебе за это! могу ли я вставить это непосредственно в пользовательский столбец? как я могу применить это (я все еще новичок в запросе Powebi)

2. @Girl007 Да, вы можете вставить его в «Добавить столбец»> «Пользовательский столбец»> «Формула пользовательского столбца». Просто замените [num] на имя вашего столбца.

Ответ №3:

Вы можете сделать это как обычную манипуляцию со строками:

 = Text.Length(Text.From([number])) - Text.Length(Text.TrimEnd(Text.From(number]), "0"))
  

Мы преобразуем столбец в строку, вычеркиваем нули, вычеркиваем их из общей длины, получая количество зачищенных нулей.

Редактировать: я перепутал свой первый ответ, этот на самом деле должен быть правильным

Комментарии:

1. Это вернет количество всех нулей в значении, которое не является обязательным. Требование OP — подсчитывать конечные последовательные нули. Он возвращает 5 для 3010000, где, поскольку OP хочет 4.

2. О боже, ты прав. Я совершенно неправильно понял вопрос. Я обновил свой ответ