Как я могу получить полные записи набора данных с помощью вызова Foundry API? Я хочу использовать набор данных в другом приложении Python за пределами Foundry, и с использованием requests
приходят только первые 300 строк записей. У меня есть конечная точка requests
API, использующая Contour dataset-preview
.
Как проанализировать полный набор записей для набора данных с помощью вызова API?
Ответы (1)
Существуют различные возможности запроса наборов данных в 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)
person
nicornk
schedule
09.02.2021
спасибо за то, что это охватывает именно то, что я ищу :)
- person Asher; 10.02.2021
repartition(1)
или около того, чтобы уменьшить его до одного (большого) паркетного файла. Затем эти файлы паркета довольно легко загрузить в фреймы данных pandas в python, и вам не нужно будет жестко кодировать токены и т. Д. В вашем скрипте (проблемы безопасности) - person Jonathan Ringstad   schedule 10.02.2021identity
в df), а затем просто заполнить функцию как что-то вродеreturn df.repartition(10)
(чтобы превратить ее в 10 файлов). Вы, вероятно, не хотите превращать его в так мало файлов, чтобы каждый из них занимал много гигабайт. Я не знаю, может ли Palantir предложить Foundry Mobile для вашей организации на данный момент, я думаю, что это все еще бета-версия с выборочным развертыванием или что-то в этом роде (я не совсем в курсе этого) - person Jonathan Ringstad   schedule 10.02.2021