Your Analysis, Governed
Define domain-specific analytical workflows by composing primitives. No raw SQL. Shareable. Auditable.
Start simple, go deep
Custom analysis scales with your needs, from tweaking parameters to building shareable DAGs.
Parameter Configuration
Adjust thresholds, time windows, and sensitivity on existing primitives. No code required. Change the churn window from 90 to 142 days and re-run.
om.analysis.threshold( metric="churn_risk", window_days=142, # was 180 method="f1_optimal" )
Primitive Composition
Compose multiple primitives into a reusable workflow using the Python decorator. The system validates that every step uses governed primitives, no escape hatches to raw SQL.
@om.analysis.custom def churn_investigation(metric): trend = om.analysis.trends(metric) if trend.value["direction"] == "accelerating": drivers = om.analysis.drivers(metric) top = drivers.value[0] sensitivity = om.analysis.sensitivity( metric, dimension=top["dimension"] ) correlation = om.analysis.correlate( metric, "customer_spend" ) return { "trend": trend, "drivers": drivers, "sensitivity": sensitivity, "correlation": correlation, }
Analysis Catalog
Export your custom analysis as a JSON DAG. Store it on the server. Share it across teams. Other agents can discover and run it. Version-controlled, auditable, portable.
{
"name": "churn_investigation",
"version": "1.2.0",
"steps": [
{ "id": "trend", "primitive": "trends" },
{ "id": "drv", "primitive": "drivers",
"depends_on": "trend" },
{ "id": "sens", "primitive": "sensitivity",
"depends_on": "drv" },
{ "id": "corr", "primitive": "correlate",
"depends_on": "trend" }
]
} Governed execution
Custom analysis isn't a backdoor. Every workflow runs inside guardrails.
Primitive-only execution
Custom workflows can only call OnlyMetrix primitives. No raw SQL, no arbitrary code, no file system access. If it's not a primitive, it doesn't run.
Automatic health checks
Before any workflow runs, the system checks metric freshness and data health. Stale data gets flagged, not silently used.
Depth guard
Recursive or deeply-nested workflows are bounded. The system prevents infinite loops and exponential blowup, so your Snowflake bill stays predictable.
Build analysis workflows your team can trust
Compose primitives. Share DAGs. Keep everything governed.