首页 > 解决方案 > 如何在我的计算机中从自定义 Python 中提取 Palantir-foundry 数据

问题描述

我们正在尝试读取大文件。但是我们无法从 tableau live connection 或 power BI 中提取巨大的 palantir-foundry 文件数据。所以我们正在尝试从 python 连接到 Palantir。任何人都可以建议任何其他方式从 palantir 中提取大文件。或者如何从我本地系统的自定义 python 连接到 palantir。

我试图在互联网上找到一些参考资料,但我总是以 palantir 的 pyspark 风格编码结束。我在下面找到了提取 palantir 数据帧的 python 代码。但为此,我也面临一些问题,例如错误代码 400。然后“最大重试次数超出 url:/foundry-data”。我们的 palantir 基本 url 就像https://XXXX.palantirfoundry.com/。当我提供我们公司的这个基本网址时,我收到了 405 错误。有人可以帮忙吗。

import requests
import pandas as pd

def query_foundry_sql(query, token, branch='master', base_url='https://foundry-instance.com') -> (list, list):
"""
Queries the dataproxy query API with spark SQL.
Example: query_foundry_sql("SELECT * FROM `/path/to/dataset` Limit 5000", "ey...")
Args:
    query: the sql query
    branch: the branch of the dataset / query

Returns: (columns, data) tuple. data contains the data matrix, columns the list of columns
Can be converted to a pandas Dataframe:
pd.DataFrame(data, columns)

"""
    response = requests.post(f"{base_url}/foundry-data-proxy/api/dataproxy/queryWithFallbacks",
                         headers={'Authorization': f'Bearer {token}'},
                         params={'fallbackBranchIds': [branch]},
                         json={'query': query})

    response.raise_for_status()
    json = response.json()
    columns = [e['name'] for e in json['foundrySchema']['fieldSchemaList']]
    return columns, json['rows']

columns, data = query_foundry_sql("SELECT * FROM `/Global/Foundry 
Operations/Foundry Support/iris` Limit 5000", 
                              "ey...",
                             base_url="https://foundry-instance.com")
df = pd.DataFrame(data=data, columns=columns)
df.head(5)

标签: pythonpysparkpython-requestspalantir-foundry

解决方案


推荐阅读