суть проблемы в следующем
есть 2 даты надо подсчитать кол- во дней межу этими датами которые были рабочими, т.е. исключить кол- во выходных и праздничных дней
Привет
ЦитироватьФункция networkdays возвращает число рабочих дней (понедельник-пятница) между и включая значения, указанные в поле start_date и end_date, учитывая выходные, которые можно дополнительно задать в поле holiday.
описание функции networkdays (http://help.qlik.com/sense/2.0/ru-RU/online/#../Subsystems/Hub/Content/Scripting/DateAndTimeFunctions/networkdays.htm?Highlight=%D1%80%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D1%85%20%D0%B4%D0%BD%D0%B5%D0%B9)
Если используются "хитрые графики", то можно привязать график к календарю, проставив единички в колонке рабочих дней и затем просто подсчитать сумму с выражением Set Analysis.
Добрый день.
Также, можно почитать http://qlikview-forum.ru/qvf/index.php/topic,656.msg1353.html#msg1353 (http://qlikview-forum.ru/qvf/index.php/topic,656.msg1353.html#msg1353).
спасибо, а можно ли в функции networkdays в параметре holidays задать не перечисление конкретных дат, а подсунуть туда некий список, в котором будут прописаны праздничные дни
Добрый день. Возможно вм проще будет создать производственный календарь вида:
Дата | Рабочий день
Во вторую колонку ставить 0 если рабочий день, 1, если не рабочий и просто считать сумму
получилось вот такое решение
1) грузим таблицу праздничных дней не попадающих на выходные
LOAD * INLINE [
Праздничные даты
'01.01.2015'
'02.01.2015'
'05.01.2015'
'06.01.2015'
'07.01.2015'
'08.01.2015'
'09.01.2015'
'23.02.2015'
'09.03.2015'
'01.05.2015'
'04.05.2015'
'11.05.2015'
'12.06.2015'
'04.11.2014'
];
и пишем затем вот такую формулу
А=sum(networkdays (Дата1 ,Дата2)) - считаем кол- во дней между двумя датами без выходных
В=sum(if([Праздничные даты]>=Дата1 and Праздничные даты<=Дата2,1,0 ))) - получаем кол- во праздничных дней между 2 датами
А-В - получаем искомый результат
Можно сделать так:
Календарь:
load * inline[
Дата
'01.01.2015'
'02.01.2015'
'03.01.2015'
'04.01.2015'
'05.01.2015'
'06.01.2015'
'07.01.2015'
'08.01.2015'
'09.01.2015'
'10.01.2015'
'11.01.2015'
'12.01.2015'
'13.01.2015'
'14.01.2015'
'15.01.2015'
'16.01.2015'
'17.01.2015'
];
left join (Календарь)
LOAD * INLINE [
Дата, ПраздничныеДаты
'01.01.2015', 1
'02.01.2015', 1
'05.01.2015', 1
'06.01.2015', 1
'07.01.2015', 1
'08.01.2015', 1
'09.01.2015', 1
];
А в выражении прописать:
count(distinct {<ПраздничныеДаты = {*}-{1}>} Дата)
Или как у Вас:
sum(if(ПраздничныеДаты=1,0,1))