Palantir Foundry能否获取上传表格最后更新用户并添加至历史数据集?
Palantir Foundry 快照上传表格相关操作方案
一、基于快照上传表格创建带用户信息的历史数据集
要实现这个需求,结合Foundry的数据集快照功能和Python变换即可完成:
- 先开启上传表格的版本历史:进入数据集设置页面,开启「版本历史记录」,确保每次上传操作都会生成新的快照版本。
- 编写Python变换,将快照数据与上传用户信息合并:
- 通过
with_snapshots()获取上传表格的所有快照 - 遍历每个快照,提取元数据中的
created_by字段(包含用户ID和显示名) - 将用户信息作为新增列添加到快照数据中
- 合并所有快照数据,写入到目标历史数据集
- 通过
示例变换代码:
from transforms.api import transform, Input, Output from pyspark.sql import functions as F @transform( output=Output("/your/historical-dataset-path"), input_snapshots=Input("/your/uploaded-table-path").with_snapshots() ) def build_historical_dataset(ctx, input_snapshots, output): snapshots = input_snapshots.get_snapshots() processed_dfs = [] for snapshot in snapshots: # 读取当前快照的数据 raw_df = snapshot.dataframe() # 提取快照创建用户信息 uploader = snapshot.metadata.created_by # 添加用户字段和快照时间戳 enriched_df = raw_df.withColumn("upload_user_id", F.lit(uploader.user_id)) \ .withColumn("upload_user_name", F.lit(uploader.display_name)) \ .withColumn("snapshot_creation_time", F.lit(snapshot.metadata.timestamp)) processed_dfs.append(enriched_df) # 合并所有快照数据并输出 if processed_dfs: final_historical_df = processed_dfs[0].unionAll(processed_dfs[1:]) output.write_dataframe(final_historical_df)
二、检索上传表格的最后更新用户
有两种可行方式:
1. UI界面直接查看
进入上传表格的数据集页面,点击右上角的「版本历史」,最新版本条目里会显示该版本的创建者,也就是最后完成上传操作的用户。
2. 通过变换或API获取
- 变换方式:编写简单的Python变换,读取最新快照的元数据即可获取用户信息:
from transforms.api import transform, Input, Output from pyspark.sql import functions as F @transform( output=Output("/your/latest-uploader-info-path"), input_dataset=Input("/your/uploaded-table-path") ) def get_latest_uploader(ctx, input_dataset, output): # 获取最新快照 latest_snapshot = input_dataset.get_snapshots()[-1] uploader = latest_snapshot.metadata.created_by # 创建包含用户信息的结果表 result_df = ctx.spark_session.createDataFrame( [(uploader.user_id, uploader.display_name)], ["latest_upload_user_id", "latest_upload_user_name"] ) output.write_dataframe(result_df)
- API方式:调用Foundry的REST API
/api/v1/datasets/{datasetRid}/snapshots/latest,响应中的createdBy字段包含最后更新用户的详细信息。
内容的提问来源于stack exchange,提问作者Matheus Spósito de Oliveira
相关产品推荐
相关产品推荐

