Mixpanel JQL 中每行计数的百分比

问题描述 投票:0回答:1

我对每个 API 计数占 API 总数的百分比有疑问。 我通过 Mixpanel JQL 来达到这个目的遇到了挑战,我也使用了减速器。 现在我已经知道每个项目总是携带特定“api_endpoint”的数据,所以这是否意味着我永远不能在“计数”列前面的列中拥有每个 API 的百分比?

function main() {
  return Events({
    from_date: '2024-08-01',
    to_date:   '2024-08-15'
  })
  .filter(function(event) {
    return event.name === "api_response" && event.properties.api_response_type === "success";
  })
  .groupBy(['properties.api_endpoint'], mixpanel.reducer.count())
  .map(function(item) {
    var apiName = item.key[0];
     
    return {
      "API Name": apiName,
      "Counts": item.value
    };
  });
}

我的期望是拥有这个:

API名称 计数 百分比
api_name_01 8 20.51%
api_name_02 13 33.33%
api_name_03 3 7.69%
api_name_04 9 23.07%
api_name_05 6 15.38%
mixpanel jql
1个回答
0
投票

我通过在“groupBy”之后仅使用“reduce”而不是“map”来修复它。

function main() {
  return Events({
    from_date: '2024-08-01',
    to_date:   '2024-08-15'
  })
  .filter(function(event) {
    return event.name === "api_response";
  })
  .groupBy(['properties.api_endpoint'], mixpanel.reducer.count())
  .reduce(function(acu, events) {
    var total = events.reduce(function(acu, item) {
      return acu += item.value
    }, 0)
    
    var generateApiName = function(endpoint) {
      return endpointToName[endpoint] || endpoint
    }
    
    var generatePercentage = function(apiCount) {
      var percNum = (apiCount * 100) / total
      
      return `${parseFloat(percNum.toFixed(2))}%`;
    };
    
    var modifiedEvents = events.map(function(event) {
      var endpoint = generateApiName(event.key[0]);
      var counts = event.value;
      var percentage = generatePercentage(counts)
      
      return {
        "API Name": endpoint,
        Counts: counts,
        Percentage: percentage
      }
    })
    
    return modifiedEvents
  });
}

我已经知道,在整个reduce中,我们可以同时访问过滤和分组的事件,因此我们可以按照我们想要的方式生成数据。

© www.soinside.com 2019 - 2024. All rights reserved.