分析
产品分析:track、identify、漏斗与同期群。
概览
基础路径:
/v1/analyticsPython 命名空间:
infra.analyticstext
# Python
from infrai import infra
# TypeScript
import { InfraiClient } from "@infrai/sdk";
const client = new InfraiClient({ apiKey: process.env.INFRAI_API_KEY! });
// → client.analytics方法
analytics.track
POST /v1/analytics/track
追踪一个或多个分析事件。
Python
python
infra.analytics.track(event=..., distinct_id=..., properties=None)TypeScript
typescript
client.analytics.track(ev: AnalyticsEvent | AnalyticsEvent[]): Promise<{ ok, accepted }>参数
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
event | string | 必填 | 事件名称。 |
distinct_id | string | 必填 | 操作用户的稳定 id。 |
properties | Record<string, unknown> | 可选 | 任意事件属性。 |
返回
{ ok, accepted }示例
一次性前置(每个范例都假定已完成):
bash
pip install infrai
# one-time auth (no secret needed): anonymous account + trial, writes ~/.infrai/credentials
python -c "from infrai import infra; infra.activate()"
# returning user instead: export INFRAI_API_KEY=ifr_pk_proj_...python
from infrai import infra
infra.analytics.track(event="signup", distinct_id="u_123",
properties={"plan": "standard"})
print("tracked")analytics.identify
POST /v1/analytics/identify
将特征属性关联到某个 distinct id。
Python
python
infra.analytics.identify(distinct_id=..., user_id=None, traits=None)TypeScript
typescript
client.analytics.identify(opts): Promise<{ ok }>参数
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
distinct_id | string | 必填 | 操作用户的稳定 id。 |
user_id | string | 可选 | 连接用户的 id。 |
traits | Record<string, unknown> | 可选 | 要设置的用户特征。 |
返回
{ ok: boolean }示例
一次性前置(每个范例都假定已完成):
bash
pip install infrai
# one-time auth (no secret needed): anonymous account + trial, writes ~/.infrai/credentials
python -c "from infrai import infra; infra.activate()"
# returning user instead: export INFRAI_API_KEY=ifr_pk_proj_...python
from infrai import infra
infra.analytics.identify(distinct_id="u_123", user_id="u_123",
traits={"email": "alice@example.com", "plan": "pro"})
print("identified")analytics.funnel
POST /v1/analytics/funnel
计算跨事件步骤的转化漏斗。
Python
python
infra.analytics.funnel(steps=[...], from_=..., to=...)TypeScript
typescript
client.analytics.funnel(opts): Promise<{ steps }>参数
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
steps | string[] | 必填 | 构成漏斗的有序事件名称。 |
from | string | 必填 | 时间范围起点。 |
to | string | 必填 | 时间范围终点。 |
返回
{ steps: Array<{ event, count, conversion_pct }> }示例
一次性前置(每个范例都假定已完成):
bash
pip install infrai
# one-time auth (no secret needed): anonymous account + trial, writes ~/.infrai/credentials
python -c "from infrai import infra; infra.activate()"
# returning user instead: export INFRAI_API_KEY=ifr_pk_proj_...python
from infrai import infra
f = infra.analytics.funnel(steps=["signup", "activate", "pay"],
from_="2026-01-01", to="2026-01-31")
for s in f.get("steps", []):
print(s.get("event"), s.get("count"), s.get("conversion_pct"))analytics.cohort
POST /v1/analytics/cohort
在时间范围内计算同期群分桶。
Python
python
infra.analytics.cohort(definition=..., from_=..., to=...)TypeScript
typescript
client.analytics.cohort(opts): Promise<{ buckets }>参数
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
definition | { event, filter? } | 必填 | 同期群定义,含事件与可选过滤。 |
from | string | 必填 | 时间范围起点。 |
to | string | 必填 | 时间范围终点。 |
返回
{ buckets: Array<{ bucket, size }> }示例
一次性前置(每个范例都假定已完成):
bash
pip install infrai
# one-time auth (no secret needed): anonymous account + trial, writes ~/.infrai/credentials
python -c "from infrai import infra; infra.activate()"
# returning user instead: export INFRAI_API_KEY=ifr_pk_proj_...python
from infrai import infra
c = infra.analytics.cohort(definition={"event": "signup"},
from_="2026-01-01", to="2026-01-31")
for b in c.get("buckets", []):
print(b.get("bucket"), b.get("size"))