查找有关 Excel 数据范围的信息。它是持续增长还是周期性的?

查找有关 Excel 数据范围的信息。它是持续增长还是周期性的?

我正在(短期内)监控几个 UNIX 文件的大小,并且可以轻松地将数字导出到 Excel 电子表格。这些文件最终将由 Splunk 编入索引,该团队想知道预期的每日容量。我目前每小时对文件大小进行抽样。我的文件大小通常有两种类型,不断增长或周期性增长。我对周期性的定义是:文件增长,然后重置为 0 大小,然后增长,然后重置,等等。数字图可以定义为锯齿状图案。

Excel 能否确定文件属于哪一类别,是不断增长还是周期性? 最终数字不必精确,但必须能很好地反映每日交易量。(我可以手动完成,但我希望 Excel 能允许我偷懒。)

我问的原因是:

  • 如果文件被重置为零,通常每天发生三次(但有时更频繁),我想报告三个最大文件大小的总和。作为奖励,如果重置发生得更频繁,也许 Excel 知道这一点,我可以乘以该常数。
  • 如果某个文件不断增大,则它就是日志文件轮换的候选对象,我将报告早期和晚期文件大小之间的差异,以获取每日文件量。(并了解如何运行轮换脚本。)
  • 如果文件大小始终不变,则需要检查生成文件的程序。我可以通过比较 min() 和 max() 值来发现这一点。

以下是从我的电子表格中直接提取的一些示例数据。您可以看到顶部和底部行一直增长到第 5 列,即 16:05。可以肯定的是,在 15:55 样本之后的某个时间点,文件大小被重置为 0。中间行继续增长。

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

(我在每小时样本上作弊了。我想捕捉重置实际发生的时间。现在我知道了,我将回到每小时监控,并使用我保留的数据重新计算旧时间。我将监控文件大约一周。)

我将从第一行和第三行报告的输出将是最大值的三倍,即此处的 15:55 列。实际上,我可能会使用类似的东西=LARGE(B1:ZZ1,1) + LARGE(B1:ZZ1,2) + LARGE(B1:ZZ1,3),但我需要知道这是周期性文件增长。

第二行的输出将是今天 23:55 的大小减去昨天 23:55 的大小,但我需要知道这是文件的持续增长。

然后我将把所有尺寸加起来以得到总数。

答案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()

答案2

实际上,我会在您捕获数据的脚本中执行此操作。除了在一个“数据”文件中捕获大小之外,还要保存当前大小,在下次运行时将新的当前大小与上一个进行比较。如果新大小小于旧大小,则在单独的 CSV 文件中针对文件名保存 TRUE,否则保存 FALSE。确保数据和此文件都按文件名编入索引,以便您可以匹配它们。

使用 Python 或 Node.js 等脚本语言可以使这项任务变得非常简单。这比尝试用一些复杂的 Excel 公式完成所有操作要容易得多。

相关内容