YTD 2013,2014,2015 (Qlik Sense, Qlikview)

Автор Singenor, 11 марта 2016, 03:51:33

« назад - далее »

Singenor

Хочу сделать линейную диаграмму, где в зависимости от выбранного пользователем года строится YTD.
Но все YTD у меня показывают одинаковые значения. Делал так:
YTD 2015: Sum({<[Date__c]={">=01.01.2015<=$(=MAX(Date__c, 'DD.MM.YYYY'))"}>} FactCost__c)

YTD 2014: Sum({<[Date__c]={">=01.01.2014<31.12.2014"}>} FactCost__c)

YTD 2013: Sum({<[Date__c]={">=01.01.2013<=31.12.2013"}>} FactCost__c)

Но ничего в итоге не формируется. И это я так понимаю хардкод, можно ли без него обойтись?
FactCost - сумма продаж

Singenor

Проблема актуальна

kvv

Привет.
1. В целом код верный и должно считаться все верно.
Возможно, нужно попробовать вот так:
YTD 2014: Sum({$<[Date__c]={">=01.01.2014<31.12.2014"}>} FactCost__c)

2. Если ничего не выводит, то можно попробовать двигаться "поступательно". Сначала посчитать (сделать таблицу) для одного года. Если удалось это сделать, то добавить еще один год и т.д.

3. По-поводу, харкода. Не до конца понимаю структуру данных (но это и не важно), но можно/нужно использовать таблицу периодов в которой уже есть MQT, YTD, MAT и т.д. Сейчас нет времени описывать это, возможно в дальнейшем опишу.

P.s. Все это описал для QlikView. Думаю, для QlikSense все где-то так же.

Singenor

Отрабатывает код только для YTD 2015:
Sum({<[Date__c]={">=$(=YearStart(Max(Date__c)))<=$(=Max(Date__c))"}>} FactCost__c)

Когда пытаюсь сделать аналогичные меры для 2014 и 2013 ничего не работает. Предложенный вариант с :
YTD 2014: Sum({$<[Date__c]={">=01.01.2014<31.12.2014"}>} FactCost__c)
выдает 0 :(


kvv

Скорее всего, здесь все просто.
В сете "YTD 2014: Sum({$<[Date__c]={">=01.01.2014<31.12.2014"}>} FactCost__c)", не правильно отрабатывает Date... или за 2014 год  "FactCost__c" равно 0.
Скорее всего, не верно отрабатывает Date. Можно/нужно поставить дату как число.

Singenor

Дата у меня выбирается вручную. Может ей какой то формат при выборе другой задать?
FactCost точно не = 0, т.к. система, из которой данные забираем показывает наличие данных по этому полю за 2014 год

Singenor

Сделал формат: =Date([Date__c] , 'DD.MM.YYYY')
Но в итоге все равно не отрабатывает, да и 2015 перестал считаться

kvv

Попробуй для 2014 года вот так:
YTD 2014: Sum({$<[Date__c]={">=41640<42005"}>} FactCost__c)

Singenor

все равно нули. Может можно как то на уровне скрипта загрузки прописать формат дат? И потом на загруженных данных все корректно строить?

Singenor

Вот скрипт
LOAD Id,
   OwnerId,
   FactCost__c,
   PlanCost__c,
   Product__c,
   Date__c,
   ProductName__c,
   Quarter__c,
   TerritoryName__c,
   RegionTerritory__c,
   ProductGroup__c;

SELECT Id,
   OwnerId,
   FactCost__c,
   PlanCost__c,
   Product__c,
   Date__c,
   ProductName__c,
   Quarter__c,
   TerritoryName__c,
   RegionTerritory__c,
   ProductGroup__c

FROM TableFP__c;



[autoCalendar]:
  DECLARE FIELD DEFINITION Tagged ('$date')
FIELDS
  Dual(Year($1), YearStart($1)) AS [Year] Tagged ('$axis', '$year'),
  Dual('Q'&Num(Ceil(Num(Month($1))/3)),Num(Ceil(NUM(Month($1))/3),00)) AS [Quarter] Tagged ('$quarter'),
  Dual(Year($1)&'-Q'&Num(Ceil(Num(Month($1))/3)),QuarterStart($1)) AS [YearQuarter] Tagged ('$axis', '$yearquarter'),
  Month($1) AS [Month] Tagged ('$month'),
  Dual(Year($1)&'-'&Month($1), monthstart($1)) AS [YearMonth] Tagged ('$axis', '$yearmonth'),
  Dual('W'&Num(Week($1),00), Num(Week($1),00)) AS [Week] Tagged ('$weeknumber'),
  Date(Floor($1)) AS [Date] Tagged ('$date');

DERIVE FIELDS FROM FIELDS [Date__c]  USING [autoCalendar] ;

kvv

Есть возможность выслать 100 - 200 строк данных за 2014 год и за 2015 год в каком-то виде - или xls, или inline??

Яндекс.Метрика