Создать плавающий максимум для таблицы

#analytics #cognos #cognos-11

#аналитика #cognos #cognos-11

Вопрос:

К сожалению, у меня закончились идеи. В настоящее время я изучаю COGNOS analytics, и мне могла бы понадобиться ваша помощь. У меня есть перекрестная таблица, которая выглядит следующим образом и поступает из другой системы, которая использует ту же исходную структуру. Я использую учетную запись компании и являюсь пользователем, поэтому, к сожалению, я не могу писать SQL или какие-либо скрипты!

         MIS0 MIS1 MIS3 MIS6
2016    0,0  0,1  0,3  0,6
2017    0,0  0,1  0,4  0,7
2018    0,0  0,2  0,4  0,7
  

Я воспроизвел это в COGNOS, но не могу сделать одну вещь правильно (это намного сложнее, чем чем, но я думаю, что это ядро)

объяснение:

  • MIS = месяцы в обслуживании
  • годы = год выпуска продукта
  • значения = (ошибки / произведенные (в этом году) и проданные продукты) * 1000

Ошибка имеет свойство MIS = в каком MIS это произошло, также продукт имеет свойство что-то вроде dateOfManufacture

хорошо, итак, проблема … иметь, например, MIS6 означает: ошибка, которая произошла в течение 6 месяцев с момента покупки. Сложность заключается в том, что ошибка MIS3 логически также относится к ошибке MIS6.

Итак, мне нужно создать элемент данных или фильтр или какой-либо другой трюк, который позволил бы мне: выбирать ошибки, относящиеся к MIS, от 0 до X, где X будет числом в заголовке для столбцов (0,1,3,6 …), основываясь, конечно, на годе изготовления.. Я ограничен своими правами пользователя, поэтому, пожалуйста, если у вас есть предложение, которое содержит написание скрипта, спасибо, вам подходит! 🙂 но я не смогу сделать это с помощью скрипта. Извините за отсутствие подробностей, но именованные переменные или любой код являются частью конфиденциальности, которой я связан. 🙁

Спасибо за уделенное время и хороших выходных!

 Fault
MIS: 2
ProductID: <121212>

Product
ProductID: <121212>
Date of assembly: 25.02.2020
(MIS: gets copied to product fault when fault occours)
  

Предполагается, что в таблице отображаются сбои, произошедшие за определенные месяцы эксплуатации — это означает, что если ошибка, как указано в приведенном выше примере, произошла за 2 месяца эксплуатации, ее следует рассчитать по столбцам MIS3 и MIS6, а не по статистике MIS1 и MIS0, поскольку ошибка произошла не за 1 месяц, а за 2.

В основном, например, во второй колонке первой строки написано: найдите мне продукты, которые были произведены в 2016 году — подсчитайте, сколько неисправностей у них было за первый месяц эксплуатации. Это число разделите на количество найденных вами продуктов (первое предложение) и все это умножьте на 1000 (ошибки / 1000)Как вы теперь, вероятно, видите, проблема возникает при переходе к следующему столбцу в той же строке. -> найдите мне продукты, которые были произведены в 2016 году. Подсчитайте, сколько неисправностей у них было за 3 месяца обслуживания (= 1,2,3 включительно), а затем разделите на количество произведенных продуктов — умножьте на 1000.

Когда я настраиваю перекрестную таблицу, мне нужно использовать inteval (MIS0 — MIS1,3, 6) с плавающим максимумом, но у меня не хватает ума сделать это..

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

1. Я в замешательстве. Вы хотите сказать, что перекрестная таблица является входными данными для этого процесса? Вы не можете получить доступ к фактическим данным? И ваш результат — это количество сбоев за (месяцы с момента покупки) и (год выпуска продукта)? То есть, по сути, если вы удалите (количество произведенных и проданных продуктов) из входных данных, у вас будет результат, который вам нужен?

2. в последнем столбце и первой строке указаны неисправности, проявившиеся за 6 месяцев эксплуатации (для продуктов, выпущенных в 2016 году) / продукты, выпущенные в 2016 году * 1000 . Таким образом, сюда входят также ошибки из MIS3 и т.д.. Проблема в том, что в формуле должны быть ошибки от 0 до X, где X — соответствующее значение ошибки

3. Фильтр теперь в основном неверный<=6 .. но это показывает мне только один столбец.. Мне нужен MIS <= X

4. Пожалуйста, предоставьте пример ввода и желаемый результат.

5. отредактировал желаемый ввод / вывод

Ответ №1:

Сначала попробуйте со списком. Если это сработает, мы можем преобразовать список в перекрестную таблицу

Давайте начнем с выделения показателя в контексте времени

Это будет ваш первый столбец

В течение одного месяца. Создайте элемент данных [Ошибки месяца 1], подобный этому:

 if ([Year] = 2016 and [Month] = 1)Then([Faults])Else(0)
  

Следующий столбец предназначен как для месяца 1, так и для месяца 2. Для достижения этой цели мы добавляем функцию В (1,2)

Создайте элемент данных [Ошибки месяца 1 и 2] следующим образом:

 if ([Year] = 2016 and [Month] IN(1,2))Then([Faults])Else(0)
  

повторите эту логику для всех других элементов данных