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

如何使用Palantir Foundry REST API获取目录数据集列表及排查404错误

解决Palantir Foundry REST API获取目录数据集列表的404问题及后续功能实现

一、修复404错误:正确的目录数据集列表API调用

你的404错误核心原因是API端点使用错误,Palantir Foundry获取指定目录下数据集的正确接口并非directories路径,而是用folders相关端点。以下是修正后的代码:

修正后的获取目录数据集列表代码

import requests

def list_datasets_in_foundry_directory(
    token, 
    base_url, 
    parent_folder_rid):

    headers = {
        "Authorization": "Bearer {}".format(token)
    }

    # 调用v1版本folders接口获取目录子资源,过滤出数据集类型
    response = requests.get(f'{base_url}/api/v1/folders/{parent_folder_rid}/children', headers=headers)
    response.raise_for_status()  # 主动抛出HTTP错误,方便调试问题
    
    # 从返回结果中筛选出类型为DATASET的条目
    children = response.json()
    datasets = [item for item in children if item['type'] == 'DATASET']
    return datasets

404错误的必查点

  • 确认parent_folder_rid是目录(Folder)的RID,别用数据集或其他资源的RID凑数
  • 检查base_url格式:必须是https://<你的Foundry实例域名>.palantirfoundry.com,末尾别加斜杠
  • 验证token权限:用该token对应的账号在Foundry UI手动访问目标目录,确认能正常打开
  • 若偏好v2 API,可改用端点/api/v2/directories/{directory_rid}/contents,但返回结构需对应调整过滤逻辑

二、实现数据集存在性检查与RID获取

基于上面的修正函数,写个检查指定表名数据集是否存在的逻辑:

def get_dataset_rid_if_exists(token, base_url, parent_folder_rid, dataset_name):
    datasets = list_datasets_in_foundry_directory(token, base_url, parent_folder_rid)
    # 匹配数据集名称(可根据实际需求调整大小写敏感规则)
    for dataset in datasets:
        if dataset['name'].lower() == dataset_name.lower():
            return dataset['rid']
    return None

三、实现不存在时的数据集创建流程

创建数据集需要调用Foundry的数据集创建API,以下是基础实现(可根据需求调整数据集类型、分支等参数):

def create_foundry_dataset(token, base_url, parent_folder_rid, dataset_name):
    headers = {
        "Authorization": "Bearer {}".format(token),
        "Content-Type": "application/json"
    }

    payload = {
        "name": dataset_name,
        "folderRid": parent_folder_rid,
        "datasetType": "TABULAR"  # 可选值:TABULAR/OBJECT_FILES等,按需选择
    }

    response = requests.post(f'{base_url}/api/v1/datasets', headers=headers, json=payload)
    response.raise_for_status()
    created_dataset = response.json()
    return created_dataset['rid']

四、整合完整业务流程

把上面的函数串起来,实现从检查到创建的完整逻辑:

def process_dataset(token, base_url, parent_folder_rid, dataset_name):
    dataset_rid = get_dataset_rid_if_exists(token, base_url, parent_folder_rid, dataset_name)
    if dataset_rid:
        print(f"数据集 {dataset_name} 已存在,RID: {dataset_rid}")
        return dataset_rid
    else:
        print(f"数据集 {dataset_name} 不存在,开始创建...")
        new_dataset_rid = create_foundry_dataset(token, base_url, parent_folder_rid, dataset_name)
        print(f"数据集创建完成,RID: {new_dataset_rid}")
        return new_dataset_rid

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 01:15:09