#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. О боже, ты прав. Я совершенно неправильно понял вопрос. Я обновил свой ответ