如何过滤 Foundry Functions 中的聚合数据?

How to filter on aggregated data in Foundry Functions?

我想知道如何在 Foundry Functions 中过滤分组数据。我已经设法对我的数据进行分组和汇总,请参见下文:

@Function()
    public async grouping(lowerBound : Integer ): Promise<TwoDimensionalAggregation<string>> {
        let grouping = Objects.search()
            .HospitalLosAnalysis()
            .groupBy(val => val['primaryHospitalName'].topValues())
            .count()

        //FILTER SHOULD BE HERE

        return grouping
    }

现在,我只想过滤计数大于参数 lowerBound 的行。问题是我无法再过滤分组 returns a TwoDimensionalAggregation,我无法再对其进行过滤。

一些背景信息:我想在 Workshop 中创建一个图表,用户可以在其中仅查看具有大量计数的医院。他会在文本框中输入 lowerBound 参数,该函数会删除所有小于 lowerBound.

的行

您应该能够遍历 grouping 变量。您可以随时使用旧 console.log(grouping) 检查里面的内容,然后预览。

它应该看起来像:

let newBuckets = [];
grouping.buckets.forEach(bucket => {
     if (bucket.value > lowerBound) {
         newBuckets = bucket
     }
});

grouping.buckets = newBuckets;

别忘了在 let grouping = await Objects.search..etcetc..count()

上添加 await

假设您在这里寻找的是过滤聚合结果 - 否则,只需在聚合之前先过滤传入数据。

完成 TwoDimensionalAggregation 后,您将拥有一个打字稿数据结构,它是一个“桶”列表,其中每个桶都有一个 key 和一个 value 属性. key 可以很复杂(即,如果您按数字、日期或时间戳 属性 分组,并且键有一个 范围 ),也可以很简单,如您的情况下,关键是 primaryHospitalName.

所以你会有这样的东西:

`grouping.buckets[0].key === "hospitalName1"`
`grouping.buckets[0].value === N`

您可以通过多种方式轻松过滤此存储桶列表:一些微不足道的事情,例如:

const filteredGrouping = {
    buckets = grouping.buckets.filter(e => e.value >= lowerBound)
}

然后 return filteredGrouping 而不是 grouping。此处可能有关于如何创建自定义聚合的相关文档:https://www.palantir.com/docs/foundry/functions/create-custom-aggregation/