能否在Workshop/Quiver阅读模式让用户修改柱状图聚合属性?
在Foundry Workshop/Quiver实现可动态修改聚合属性的柱状图(支持阅读模式)
一、Workshop 实现步骤
1. 编写动态聚合函数
先创建支持参数化聚合的Foundry函数,接收用户选择的聚合属性作为输入,输出对应的聚合结果数据集。示例代码如下:
from transforms.api import transform, Input, Output, Parameter from pyspark.sql import functions as F @transform( output=Output("/your/project/path/aggregated_results"), input=Input("/your/project/path/source_dataset"), target_agg_column=Parameter(str, description="选择需要聚合的属性列") ) def dynamic_aggregation(input, output, target_agg_column): # 此处假设按"grouping_column"列分组,对目标列求和,可按需替换聚合方式(avg/count等) result_df = input.data.groupBy("grouping_column").agg( F.sum(target_agg_column).alias(f"aggregated_{target_agg_column}") ) output.write_dataframe(result_df)
2. 添加可交互下拉组件
在Workshop画布中添加「下拉选择器」组件:
- 配置选项为所有可聚合的属性列名(例如
["sales", "profit", "quantity"]) - 进入组件「设置」面板,找到「交互权限」,勾选允许阅读模式用户修改,确保只读用户能操作下拉菜单。
3. 绑定组件与函数参数
将下拉组件的「选中值」绑定到动态聚合函数的target_agg_column参数,用户选择不同属性时,函数会自动重新计算聚合结果。
4. 生成动态柱状图
基于函数输出的数据集创建柱状图组件:
- X轴选择分组列(例如
grouping_column) - Y轴选择函数生成的聚合列(例如
aggregated_{target_agg_column}) - 开启图表「自动刷新」,确保下拉选择变化时图表实时更新。
二、Quiver 实现步骤
1. 创建参数化聚合查询
在Quiver中新建查询,使用参数化逻辑实现动态聚合:
- 在查询编辑器中定义参数
agg_column(类型为字符串) - 编写SQL或Spark逻辑时引用该参数,示例SQL:
SELECT grouping_column, SUM({agg_column}) AS aggregated_value FROM source_dataset GROUP BY grouping_column
2. 添加参数化下拉组件
在Quiver仪表盘添加「参数下拉」组件:
- 关联到之前定义的
agg_column参数 - 配置选项为可聚合属性列名
- 在组件设置中开启阅读模式可编辑权限。
3. 配置动态柱状图
将参数化查询的结果接入柱状图组件:
- X轴映射分组列,Y轴映射聚合结果列
- 确保图表设置为「随参数自动刷新」,实现下拉选择与图表的联动。
三、从Slate迁移至Workshop/Quiver的注意事项
- 迁移动态逻辑:将Slate中实现动态聚合的脚本或参数化查询,转换为Foundry Functions(Workshop)或Quiver参数化查询,保持聚合规则一致。
- 组件权限同步:确保原Slate中阅读模式用户的交互权限,在Workshop/Quiver的对应组件中同步开启(关键是勾选「允许阅读模式修改」)。
- 数据链路对齐:保持数据集的输入输出路径与原Slate一致,避免数据来源差异导致功能异常。
- 功能验证:迁移完成后,切换到阅读模式测试下拉选择、图表更新是否与原Slate功能完全一致。
内容的提问来源于stack exchange,提问作者GDF_kuma
相关产品推荐
相关产品推荐

