#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 🙂