Skip to main content

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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iyree-0.2.0-py3-none-any.whl (42.7 kB view details)

Uploaded Python 3

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

Hashes for iyree-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d65d8d17ff753d24ce144e155feb4eac047fa3beea0dc6d04c05077653b16851
MD5 14e45bafdda4dca971f4a5c852347abc
BLAKE2b-256 2258fd0a1f90d0291b584a70b14c781a3cd02d54365a377e3af9646ef02388c9

See more details on using hashes here.

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

Hashes for iyree-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 592274838274b35d12c10f44916c0704715d47b3541cf4b7858c2433b497ad8f
MD5 acfa0362744d0d5631a57b770570f2bc
BLAKE2b-256 e3e9d3ee0181cf620497e1234f5841097f0788855ed7ac64828ae0eedbfe0517

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page