Кол-во изделий на гарантии

Автор efro, марта 10, 2015, 12:47:58 pm

« предыдущая - следующая »

efro

Всем привет!
Есть задачка определить кол-во изделий на гарантии по состоянию на сегодня ("сегодня" каждый день, естественно, изменяется).
Для этого есть таблица с номерами изделий, датой ввода в эксплуатацию и датой снятия с гарантии.

admin

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

efro

Спасибо за уточнение.
Выкладываю пример, отображающий имеющиеся данные.
I0001 - серийный номер изделия (поэтому и I).

Ну и кроме кол-ва на "сегодня" хотелось бы знать цифру о количестве гаранийных изделий на любую заданную дату.

admin

День добрый.
Решение простое, смотрим описание IntervalMatch.
Нам потребуется сформировать календарь и таблицу связей, с помощью указанной выше функции.
Скрипт:

tmp:
LOAD [Номер изделия],
     [Дата ввода в эксплуатацию],
     [Дата снятия с гарантии]
FROM
garant_demo.xlsx
(ooxml, embedded labels, table is Лист1);

tmp2:
LOAD min([Дата ввода в эксплуатацию]) as 'DateStart', max([Дата снятия с гарантии]) as 'DateEnd' Resident tmp ;

LET Date_Start = peek('DateStart',0,'tmp2');
LET Date_End = peek('DateEnd',0,'tmp2');
LET vStart = floor(Date_Start);
LET vEnd = floor(Date_End);
LET vNumOfDays = vEnd - vStart + 1;
DROP Table tmp2;

Date_src:
LOAD $(vStart) + Rowno() -1 as DateId AUTOGENERATE $(vNumOfDays);

Calendar:
LOAD
DateId,
date(DateId) as 'дата',
year(DateId) as 'год',
month(DateId) as 'месяц',
dual(month(DateId) & '-' & year(DateId),year(DateId) & num(month(DateId), '00')) as 'месяц-год'
RESIDENT Date_src;

Drop Table Date_src;

IntervalMatch (дата) LOAD [Дата ввода в эксплуатацию], [Дата снятия с гарантии] Resident tmp;


Для проверки строим диаграмму-таблицу с измерением "дата" и функцией Count ([Номер изделия]).
Получим количество изделий на гарантии на каждый день.

efro

марта 16, 2015, 10:46:38 am #4 Последнее редактирование: марта 16, 2015, 03:53:42 pm от efro
Спасибо за подробный ответ!
По дням всё получилось.

А если ещё продолжить изыскания и попытаться найти среднее значение количества изделий на гарантии за месяц, то правильно ли я понимаю, что надо Aggr воспользоваться?

admin

марта 17, 2015, 08:47:27 am #5 Последнее редактирование: марта 27, 2015, 11:55:59 pm от admin
Да, aggr, avg в связке дают корректные результаты.
Во вложении небольшое эссе на тему использования AGGR(). Писал я сам, так что пользуйтесь.

efro

Цитата: admin от марта 17, 2015, 08:47:27 am
Да, aggr, avg в связке дают корректные результаты.
Во вложении небольшое эссе на тему использования AGGR(). Писал я сам, так что пользуйтесь.

День добрый!
Aggr пока не поддаётся :(, поэтому пока пришлось остановиться на выгрузке в Excel исходных данных (Год, Квартал, DateId, Тип аппарата) и построении сводной диаграммы вида:
Год, квартал - среднее по полю для каждого типа аппарата.

Рейтинг@Mail.ru Яндекс.Метрика