如何通过API调用解析数据集的完整记录集?

2024-04-29 15:33:04 发布

您现在位置:Python中文网/ 问答频道 /正文

如何通过foundry API调用获取完整的数据集记录? 我想在Foundry之外的另一个Python应用程序中使用数据集,并且使用requests只会出现前300行记录。 我拥有的requestsAPI端点正在使用轮廓dataset-preview


Tags: 数据api应用程序foundry记录preview端点requests
1条回答
网友
1楼 · 发布于 2024-04-29 15:33:04

在Foundry中查询数据集有不同的可能性,这取决于数据集的大小和用例。 可能最容易从数据代理查询sql开始,因为您不必担心数据集的底层文件格式

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)

相关问题 更多 >