Python SDK for the IYREE analytics platform
Project description
iyree
Python SDK for the IYREE BI analytics platform.
pip install iyree
# With pandas support
pip install iyree[pandas]
Quick Start
Synchronous
from iyree import IyreeClient
with IyreeClient(api_key="my-key", gateway_host="https://api.iyree.io") as client:
# DWH — run SQL
result = client.dwh.sql("SELECT * FROM orders LIMIT 10")
for row in result.to_dicts():
print(row)
# DWH — insert data
client.dwh.insert("staging_table", "col1,col2\n1,hello\n2,world")
# Cube — analytics query
result = client.cube.load({"measures": ["orders.count"]})
print(result.data)
# S3 — upload / download
client.s3.upload_object("data/report.csv", b"a,b\n1,2")
data = client.s3.download_object("data/report.csv")
# KV — key-value store
client.kv.put("config", {"theme": "dark"}, key="user_prefs")
doc = client.kv.get("config", "user_prefs")
Asynchronous
from iyree import AsyncIyreeClient
async with AsyncIyreeClient(api_key="my-key") as client:
result = await client.dwh.sql("SELECT 1 AS n")
print(result.to_dicts())
Configuration
| Parameter | Env Var | Default | Description |
|---|---|---|---|
api_key |
— | required | API key for gateway auth |
gateway_host |
IYREE_GATEWAY_HOST |
— | Gateway base URL |
timeout |
— | 30.0 |
Default request timeout (seconds) |
stream_load_timeout |
— | 300.0 |
DWH Stream Load timeout |
cube_continue_wait_timeout |
— | 120.0 |
Cube polling timeout |
max_retries |
— | 3 |
Max retry attempts |
Cube Query Builder
Build type-safe Cube.js queries:
from iyree import Cube, Query, TimeDimension, DateRange, TimeGranularity
orders = Cube("orders")
query = Query(
measures=[orders.measure("count"), orders.measure("total_amount")],
dimensions=[orders.dimension("status")],
time_dimensions=[
TimeDimension(
orders.dimension("created_at"),
date_range=DateRange(relative="last 30 days"),
granularity=TimeGranularity.day,
)
],
)
with IyreeClient(api_key="my-key") as client:
result = client.cube.load(query)
df = result.to_dataframe() # requires iyree[pandas]
Or use raw dicts:
result = client.cube.load({
"measures": ["orders.count"],
"timeDimensions": [{
"dimension": "orders.created_at",
"granularity": "day",
"dateRange": "last 7 days",
}],
})
DWH — Stream Load (Insert)
import pandas as pd
df = pd.DataFrame({"id": [1, 2], "name": ["Alice", "Bob"]})
result = client.dwh.insert("users", df, label="load_20240101")
print(f"Loaded {result.number_loaded_rows} rows")
S3 — Object Storage
# Auto-paginating iterator
for obj in client.s3.list_objects_iter(prefix="data/"):
print(obj.key, obj.size)
# Stream download to file
client.s3.download_object_to_file("data/large.csv", "/tmp/large.csv")
# Upload a DataFrame as Parquet
client.s3.upload_dataframe("reports/q1.parquet", df, format="parquet")
Error Handling
from iyree import IyreeClient, IyreeAuthError, IyreeNotFoundError
try:
with IyreeClient(api_key="my-key") as client:
doc = client.kv.get("store", "missing-key")
except IyreeAuthError:
print("Invalid API key")
except IyreeNotFoundError:
print("Document not found")
Development
pip install -e ".[dev]"
pytest
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
iyree-0.2.0.tar.gz
(55.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
iyree-0.2.0-py3-none-any.whl
(42.7 kB
view details)
File details
Details for the file iyree-0.2.0.tar.gz.
File metadata
- Download URL: iyree-0.2.0.tar.gz
- Upload date:
- Size: 55.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d65d8d17ff753d24ce144e155feb4eac047fa3beea0dc6d04c05077653b16851
|
|
| MD5 |
14e45bafdda4dca971f4a5c852347abc
|
|
| BLAKE2b-256 |
2258fd0a1f90d0291b584a70b14c781a3cd02d54365a377e3af9646ef02388c9
|
File details
Details for the file iyree-0.2.0-py3-none-any.whl.
File metadata
- Download URL: iyree-0.2.0-py3-none-any.whl
- Upload date:
- Size: 42.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
592274838274b35d12c10f44916c0704715d47b3541cf4b7858c2433b497ad8f
|
|
| MD5 |
acfa0362744d0d5631a57b770570f2bc
|
|
| BLAKE2b-256 |
e3e9d3ee0181cf620497e1234f5841097f0788855ed7ac64828ae0eedbfe0517
|