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

如何在Palantir Foundry Workshop中创建分段累计求和图表

Palantir Foundry Workshop 维护作业分段累计图实现步骤

整个实现分上游数据预处理、前端图表配置两部分,不要直接在Workshop前端硬算全量累计逻辑,大数据量下会卡顿还容易出计算错误。

1. 上游数据预处理(Contour/Code Repository 均可实现)

先把累计逻辑在数据层算完,再同步到Workshop做可视化:

  • 先把Due On字段转为标准日期格式,过滤掉日期为空的异常数据
  • 按Due On、Status两个维度分组,统计每个日期下各状态的作业数量,命名字段为job_count
  • 补全时间范围内的连续日期:把统计周期内所有无作业的日期也补上,对应job_count填0,避免累计曲线出现断层
  • 计算分状态累计值:按Status做数据分区,按日期升序排序,用窗口函数对job_count做累计求和,得到每个日期节点对应状态的累计作业数,命名字段为cumulative_count

PySpark 实现参考代码:

from pyspark.sql import Window
import pyspark.sql.functions as F

# 聚合每日各状态作业量
daily_cnt = source_df.groupBy("Due On", "Status").agg(F.count("*").alias("job_count"))

# 生成时间范围内的全量连续日期,补全维度
date_bound = daily_cnt.select(F.min("Due On").alias("start"), F.max("Due On").alias("end")).collect()[0]
full_date_df = spark.sql(
    f"SELECT sequence(to_date('{date_bound.start}'), to_date('{date_bound.end}'), interval 1 day) as dt"
).select(F.explode("dt").alias("Due On"))
all_status = [r.Status for r in daily_cnt.select("Status").distinct().collect()]
full_dim_df = full_date_df.crossJoin(spark.createDataFrame([(s,) for s in all_status], ["Status"]))
daily_full_df = full_dim_df.join(daily_cnt, on=["Due On", "Status"], how="left").fillna(0, subset=["job_count"])

# 计算分状态累计值
cum_window_spec = Window.partitionBy("Status").orderBy("Due On").rowsBetween(Window.unboundedPreceding, Window.currentRow)
final_df = daily_full_df.withColumn("cumulative_count", F.sum("job_count").over(cum_window_spec))

2. Workshop 内图表配置

把预处理完成的final_df作为数据源接入Workshop,添加折线图组件,按以下规则配置:

  • X轴:选择Due On字段,设置为连续时间维度,可按需切换日/周/月的时间聚合粒度
  • Y轴:选择cumulative_count字段,聚合方式选最大值即可(预处理后同日期同状态只有一条累计记录,任意聚合方式结果一致)
  • 系列拆分:选择Status字段作为分组维度,自动生成open、closed两条独立的统计曲线
  • 样式调整:
    • 开启区域填充开关,给不同状态的曲线设置不同透明度的填充色,即可得到分层的面积累计效果
    • 如果需要展示总作业量堆叠效果,把Y轴堆叠模式设置为「常规堆叠」,两条曲线会按数值叠加,总高度对应当前日期的累计总作业数
    • 按需调整tooltip展示字段,可加入日期、各状态累计值、总累计值等信息提升可读性

注意事项

  • 不要跳过连续日期补全步骤:如果某日期没有对应状态的作业记录,曲线会直接跳过该日期形成视觉断层,斜率显示异常
  • 如果你要统计的是「当日处于未关闭状态的作业存量」而非「累计到期的open作业总量」,预处理时需要额外关联作业的关闭日期,在作业关闭当日从open累计值中扣减对应数量,不能直接按到期日期聚合
  • 数据量超过10万条时,建议提前在数据层按你要展示的时间粒度(比如按月)预聚合,减少前端渲染压力

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:36:20