我正在从AWS CloudWatch查询GetMetricsData
:
{
StartTime: lastWeek ,
EndTime: today,
MetricDataQueries: [
{
Id: 'invocations',
Label: 'Invocations',
MetricStat: {
Metric: {
Dimensions: [
{
Name: 'FunctionName',
Value: /* FunctionName */,
},
],
MetricName: 'Invocations',
Namespace: 'AWS/Lambda'
},
Period: 60*60*24, // day
Stat: 'Sum',
Unit: 'Count',
},
},
],
}
这就是我得到的:
我没有获得7天(即一周)的数据,而是获得了5天。我有2天缺失(如您在图表中所见)。
那些失踪的日子没有任何数据。
CloudWatch没有返回没有数据的点。如何使Sum
操作返回实际计数(0
)?
答案 0 :(得分:3)
您可以使用度量数学和填充功能将缺失值默认设置为0。
指标的ID为invocations
,因此表达式为:
FILL(invocations, 0)
完整查询将类似于:
{
StartTime: lastWeek ,
EndTime: today,
MetricDataQueries: [
{
Id: 'result',
Label: 'Sums with zeros',
Expression: 'FILL(invocations, 0)'
},
{
Id: 'invocations',
Label: 'Invocations',
MetricStat: {
Metric: {
Dimensions: [
{
Name: 'FunctionName',
Value: /* FunctionName */,
},
],
MetricName: 'Invocations',
Namespace: 'AWS/Lambda'
},
Period: 60*60*24, // day
Stat: 'Sum',
Unit: 'Count',
},
},
],
}
这将返回2个指标,包含零和不包含零。然后,您可以通过在该MetricDataQuery中设置ReturnData: false
来隐藏原始指标。
有关更多详细信息,请参见此处: