Palantir Foundry REST API数据集查询端点调用404错误求助
Palantir Foundry REST API数据集查询端点调用404错误求助
我之前也碰到过类似的情况,Foundry有些实用的API端点确实藏得比较深,你遇到的404问题大概率是用错了查询端点,咱们一步步来排查解决:
首先,你当前使用的/api/v2/datasets/{dataset_rid}/transactions/query这个端点是不存在的,Foundry中执行SQL查询数据集的正确入口是SQL API的/api/sql/v1/query,这个端点专门用来提交SQL查询(支持单/多数据集),是官方实际可用的端点之一。
然后,你的SQL语句里引用数据集的方式也有问题,不能直接写dataset,必须用数据集的完整RID来指定,有两种常用写法:
- 把RID用双引号包裹:
SELECT Column1, Column2 FROM "ri.foundry.main.dataset.xxxx" LIMIT 1000 - 使用Foundry内置的
dataset()函数:SELECT Column1, Column2 FROM dataset('ri.foundry.main.dataset.xxxx') LIMIT 1000
另外还要确认你的API Token有对应的权限:需要拥有该数据集的查看权限,以及foundry-sql-query这个权限(可以在Foundry的Token管理页面检查权限范围)。
下面是修正后的完整代码:
import requests foundry_token = "api_token" foundry_base_url = "https://example.palantirfoundry.com" dataset_rid = "ri.foundry.main.dataset.xxxx" def query_foundry_dataset(base_url, token, dataset_rid): headers = { "Authorization": f'Bearer {token}', "Content-Type": 'application/json' } # 用RID正确引用数据集的SQL语句 query_payload = { "sql": f'SELECT Column1, Column2 FROM "{dataset_rid}" LIMIT 1000' } # 替换为正确的SQL查询端点 url = f"{base_url}/api/sql/v1/query" response = requests.post(url, headers=headers, json=query_payload) if response.status_code == 200: return response.json() else: print(f"Query Failed: {response.status_code}") print(response.text) return None result = query_foundry_dataset( base_url=foundry_base_url, token=foundry_token, dataset_rid=dataset_rid ) print(result)
如果还是遇到问题,可以再检查这几点:
- 确认你的Foundry实例base_url没有额外的路径后缀(比如不要加
/workspace之类的) - 如果数据集有多个版本,你可能需要在SQL中用
FOR VERSION AS OF语法指定要查询的版本 - 有些环境下需要启用SQL API的访问权限,可能需要联系Foundry管理员确认
备注:内容来源于stack exchange,提问作者baobobs
相关产品推荐
相关产品推荐

