在Excel中,我有一个Web请求日志,我需要分析其带宽使用情况。我已经将日志解析为许多字段,我将以不同的方式将其分组以用于不同的报告。每个网站页面加载都有多个资源 - 每个资源都是一个单独的行。数据结构:
RequestID | SIZE | IsImage | IsStatic | Language A | 100 | TRUE | TRUE | EN A | 110 | TRUE | FALSE | EN A | 90 | FALSE | FALSE | EN ...
报告1:我需要AVERAGE请求大小:AVERAGE(SELECT SUM(SIZE)GROUPBY RequestID)。我不需要查看每个请求的大小。
报告2:更详细的数据透视表报告显示了由isStatic / isImage / language /等打破的平均请求请求大小。这样我可以检查“每种语言的每个请求的平均总图像数”
有没有办法定义字段/项目“SUM(SIZE)GROUPBY RequestID”?
答案 0 :(得分:2)
据我所知,这不可能在单个数据透视表中实现。这是因为您需要根据条件(RequestId)将两个单独的聚合应用于同一组数字 使用两个数据透视表可以获得您正在寻找的内容,但是我不建议这样做,但这就是您要做的。
在基表上创建第一个数据透视表,将requestId添加到行并将值添加到value,这将为您提供一个中间表,其中包含每个requestId的大小总和,然后构建第二个数据透视表,这次使用first作为源数据透视表作为源,在这种情况下,您只需添加'size of size'值并取平均值。见下面的例子
除了最简单的分析之外,我不会再推荐这种方法
更好的方法是使用powerpivot,这是一种与您使用的数据透视表相关的独立技术。您需要导入表格,我假设名称为[Logs],列为[RequestId]和[Size],然后您需要添加计算
<强> AvarageSizeOfRequests:= AVERAGEX(SUMMARIZE(日志;日志[的requestId]; “sumOfSize”; CALCULATE(总和(日志[大小]))); [SumOfSize])强>
这将为您提供以下结果
第一个是你已经拥有的海峡总和,第二个是平均值,它对于每个requestID都是相同的,但会以不同的方式聚合。
答案 1 :(得分:0)
我想我不理解您的Q因为我希望请求ID的组是自动的(在PT中不可避免地将其作为Row标签)。也许在下面选择漏洞,我可能会理解我误解的内容:
我已将i
和s
添加到您的数据中,以便更明确哪个列。最好将TRUE
和FALSE
转换为1
和0
,以便PT可以对这些进行计数或平均。
这似乎含糊不清,所以让我们尝试不同的PT布局。 RequestID
对于所需的分析很少或没有相关性,不在PT中包含它,或者在此处将其作为报告过滤器:
在这种情况下,OP中存在数百万行这类数据,PT实际上总是最多为2x2矩阵(假设语言也适用于报告过滤器)。每条记录只有一个值(SIZE
),只有两个布尔变量。 Language
可以有所作为,但最差案例是每Language
一个这样的PT(并且考虑到示例中只显示了一个这样的人!...)