2

Я (в краткосрочной перспективе) наблюдаю за размерами нескольких файлов UNIX и могу легко экспортировать числа в электронную таблицу Excel. Файлы в конечном итоге будут проиндексированы Splunk, и эта команда хочет знать ожидаемый дневной объем. В настоящее время я проверяю размеры файлов каждый час. Размеры моих файлов обычно бывают двух типов: постоянно растущие или циклические. Мое циклическое определение таково: файлы растут, затем сбрасываются до размера 0, затем растут, затем сбрасываются и т.д. График чисел может быть определен как пилообразный паттерн.

Может ли Excel определить, к какой категории относится файл: постоянно растущий или циклический? Окончательные цифры не обязательно должны быть точными, но должны дать представление о ежедневном объеме. (Я мог бы сделать это вручную, но я хочу, чтобы Excel позволил мне быть ленивым.)

Причины, которые я спрашиваю:

  • Если файл сбрасывается в ноль, что обычно происходит 3 раза в день (но иногда чаще), я хочу сообщить сумму трех самых больших размеров файлов. В качестве бонуса, если сброс происходит чаще, возможно, Excel знает об этом, и я могу умножить на эту константу.
  • Если файл постоянно растет, он является кандидатом на ротацию файла журнала, и я сообщу о разнице между размерами файлов в начале и в конце дня, чтобы получить ежедневный объем. (И посмотрите, как запустить скрипт ротации.)
  • Если размер файла никогда не изменяется, необходимо проверить программу, генерирующую файл. Я могу обнаружить это, сравнивая значения min () и max ().

Вот некоторые примеры данных, взятые непосредственно из моей электронной таблицы. Вы можете видеть, как верхний и нижний ряды растут до 5-го столбца 16:05. Можно с уверенностью предположить, что размер файла был сброшен до 0 в какой-то момент после выборки 15:55. Средний ряд продолжает расти.

14:05       14:55       15:05       15:55       16:05       16:55       17:05       17:55       18:05
 3,307,183   3,692,602   3,872,188   4,301,423      61,010     467,733     554,456     981,851   1,068,804
36,348,105  36,888,709  37,003,076  37,541,343  37,650,979  38,182,932  38,292,337  38,838,988  38,947,009
 1,666,276   1,879,624   1,945,419   2,164,186      29,410     238,368     293,786     518,526     565,455

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

Вывод, о котором я сообщу из строк 1 и 3, будет в три раза больше максимума, здесь столбец 15:55. На самом деле, я, вероятно, буду использовать что-то вроде =LARGE(B1:ZZ1,1) + LARGE(B1:ZZ1,2) + LARGE(B1:ZZ1,3) , но мне нужно знать, что это циклический рост файла.

Вывод из второй строки будет иметь размер в 23:55 сегодня минус размер в 23:55 вчера, но я должен знать, что это постоянный рост файла.

Тогда я буду суммировать все мои размеры, чтобы получить общую сумму.

2 ответа2

1

Эта проблема кажется хорошо подходит для Excel.  Но сначала позвольте мне задать вопрос.  Предположим, ваши данные выглядят так:

    60     120     180      45      90     135      35      70     105      60

линейный график выше

Вы упомянули выбор трех самых больших значений с помощью LARGE() .  Три самых больших значения в приведенном выше: 120, 180 и 135.  Это то, что вы хотите, или вы хотите пики: 180, 135 и 105?  Я вернусь к этому.

Установите прямоугольную область того же размера и формы, что и ваши данные.  Это может быть ниже ваших данных, справа или на другом листе.  Я предполагаю, что это на том же листе, под данными, в строках 12-14.  Положил

=IF(A2>B2, A2, IF(A2=B2, "same", ""))

в ячейку A12 и перетащите / заполните вправо и вниз.  Это оценивает значение в соответствующей ячейке данных, если оно больше, чем значение в следующей ячейке в той же строке.  По вашим данным, это верно для локальных максимумов, т. Е. Пиков.  Когда два смежных значения данных равны, это оценивает текстовое значение same .  В противном случае, это пусто.  Здесь я изменил данные вашей строки 3, чтобы они содержали блок равных значений в середине:

снимок экрана таблицы

Теперь функция COUNT() сообщит вам, сколько чисел существует в строке, то есть количество раз, когда данные попадали между двумя последовательными ячейками.  Для постоянно растущих значений это будет ноль; если значение периодически сбрасывается, это покажет, сколько раз это произошло.  И COUNTIF(…, "same") говорит вам, сколько раз две последовательные ячейки были равны.  Это может быть лучше при обнаружении мертвого процесса, чем просто сравнение минимальных и максимальных значений.

Вы можете найти эти максимумы полезными для вашей статистики.  Попробуйте уменьшить их с помощью LARGE() , AVERAGE() или SUM() .

0

На самом деле, я бы сделал это в сценарии, где вы собираете данные. Помимо сохранения размера в одном файле данных, сохраните текущий размер, при следующем запуске сравните новый текущий с предыдущим. Если новый размер меньше старого, сохраните значение ИСТИНА в имени файла в отдельном файле CSV, в противном случае сохраните значение ЛОЖЬ. Убедитесь, что и данные, и этот файл проиндексированы по имени файла, чтобы вы могли сопоставить их.

Использование скриптового языка, такого как Python или Node.js, сделало бы эту задачу довольно простой. Гораздо проще, чем пытаться сделать все это в какой-то запутанной формуле Excel.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .