You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Palantir TypeScript 分组聚合结果按percentage降序取前5行

实现方法

你可以直接在现有divideTwoDimensional私有方法里追加排序、截取逻辑,不需要调整原有groupBy聚合查询的代码,改动量极小。

核心修改逻辑:

  • 计算得到所有分组的百分比结果后,对结果数组按百分比值做降序排序
  • 排序完成后截取前5条记录,再作为最终buckets返回

修改后的完整代码如下:

export class funzione1 {
    @Function()
    public async test1(object1: ObjectSet<object1>):
        Promise<TwoDimensionalAggregation<string>> {
            const numerators = await object1.groupBy(e => e.column1.topValues())
                                    .sum(e => e.column2);
            const denominators = await object1.groupBy(e => e.column1.topValues())
                                    .sum(e => e.column3);
    return this.divideTwoDimensional(numerators, denominators);
}

private divideTwoDimensional(numerators:TwoDimensionalAggregation<string>,
                         denominators: TwoDimensionalAggregation<string>):
                         TwoDimensionalAggregation<string> {

    const percentage = numerators.buckets.map((bucket, i) => {
       const numerator = bucket.value;
       const denominator = denominators.buckets[i].value;
        if (denominator === 0) {
            return { key: bucket.key, value: 0 };
        }
        return { key: bucket.key, value: numerator / denominator }
    });

    // 按百分比降序排序,取前5条
    const sortedTop5 = percentage
        .sort((a, b) => b.value - a.value)
        .slice(0, 5);

    return { buckets: sortedTop5 };
}

补充:如果需要匹配示例里的两位小数格式,可以在计算value时追加小数处理,即value: Number((numerator / denominator).toFixed(2))即可。

内容的提问来源于stack exchange,提问作者Jresearcher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 05:30:47