Количество нулей после ненулевого числа

#qliksense

Вопрос:

Ребята, у меня есть бизнес-пример, в котором мне нужно посчитать количество нулей после ненулевого числа в столбце со значениями транзакций в qliksense. Например,

1,000 = 3 10,000 = 4 10,500 = 2 11,510 = 1 23,415 = 0

Я пробовал различные коды, но до сих пор ничего не работало.

Кто-нибудь может помочь?

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

1. Вы должны показать нам, какие «различные коды» вы пробовали.

Ответ №1:

  • Преобразование значения в текст,
  • Найдите позицию последнего вхождения 1-9, используя FindOneOf,
  • Возьмите часть строки после позиции, используя середину (нам нужно добавить 1, чтобы получить после),
  • Проверьте длину нашей строки только 0, используя Len

Вот код:

Len(Mid(Text(Value), FindOneOf(Text(Value), '123456789', -1) 1))

Ответ №2:

Один (фиктивный) способ состоит в том, чтобы сначала найти последнюю позицию любого ненулевого числа в строке. Затем найдите максимальное их количество и используйте результат для подстроки основного значения и подсчета остальных.

Например: если у нас есть 11510

мы найдем последнюю возможность каждого ненулевого числа

 Num LastPostion 1 4 2 0 3 0 4 0 5 3 6 0 7 0 8 0 9 0  

Затем мы должны найти максимальное значение. В нашем случае это 4. После этого мы будем использовать mid() и len() функции

mid(11510, 4 1) — это вернется 0 , и мы получим длину ( len(mid(11510, 4 1)) ). Это приведет к 1

Результатом приведенного ниже скрипта будет:

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

 RawData: Load * Inline [ Value 1000 10000 10500 11510 23415 ];   join  Load  Value,  RangeMax(One, Two, Three, Four, Five, Six, Seven, Eight, Nine) as MaxNonZero ; Load   Value,  Index(Value, '1', -1) as One,  Index(Value, '2', -1) as Two,  Index(Value, '3', -1) as Three,  Index(Value, '4', -1) as Four,  Index(Value, '5', -1) as Five,  Index(Value, '6', -1) as Six,  Index(Value, '7', -1) as Seven,  Index(Value, '8', -1) as Eight,  Index(Value, '9', -1) as Nine Resident  RawData ;   NoConcatenate  Data: Load   Value,  len(mid(Value, MaxNonZero   1)) as NumberOfZeros Resident  RawData ;  Drop Table RawData;  

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

1. Огромное спасибо. Дай мне попробовать

2. слишком сложно 🙂

3. Я знал, что для этого есть функция! Но не смог его найти 🙂

4. не беспокойтесь, я просто горжусь тем, что победил Qlik master 🙂