#tracker #analytics #snowplow

bin+lib snowplow_tracker

Rust 应用中跟踪 Snowplow 事件的软件包

2 个不稳定版本

0.2.0 2022 年 12 月 19 日
0.1.0 2022 年 10 月 18 日

#624 in 数据库接口

Download history 104/week @ 2024-03-13 74/week @ 2024-03-20 45/week @ 2024-03-27 58/week @ 2024-04-03 20/week @ 2024-04-10 67/week @ 2024-04-17 41/week @ 2024-04-24 22/week @ 2024-05-01 60/week @ 2024-05-08 45/week @ 2024-05-15 39/week @ 2024-05-22 35/week @ 2024-05-29 51/week @ 2024-06-05 46/week @ 2024-06-12 37/week @ 2024-06-19 47/week @ 2024-06-26

193 每月下载次数

Apache-2.0

97KB
1.5K SLoC

Snowplow Rust 分析工具

early-release Build Status License

Snowplow 是一个可扩展的开源平台,用于收集丰富、高质量、低延迟的数据。它旨在收集企业业务的高质量、完整行为数据。

要了解更多信息,请访问 Snowplow 网站 和我们的 文档

Snowplow Rust 追踪器概述

Snowplow Rust 追踪器允许您在通过 Snowplow 管道时向您的 Rust 应用程序添加分析功能。

使用此追踪器,您可以在用户与您的 Rust 应用程序交互时收集粒度事件级数据。

有关每个追踪器的技术文档可以在我们的 文档 中找到。

快速入门

安装

snowplow_tracker 作为依赖项添加到 Rust 应用程序内的 Cargo.toml

[dependencies]
snowplow_tracker = "0.2.0"

在您的代码中使用软件包 API

use snowplow_tracker::Snowplow;

使用追踪器

使用 Snowplow::create_tracker 函数实例化追踪器。该函数接受三个必需参数:namespaceapp_idcollector_url 和一个可选参数,subject。追踪器 namespace 识别追踪器实例;您可以使用不同的命名空间创建多个追踪器。The app_id 识别您的应用程序。The collector_url 是发送事件到 Snowplow 收集器的 URI。The subject 允许将可选的主题附加到追踪器,该主题将与所有事件一起发送

use snowplow_tracker::Subject;
let subject = Subject::builder().language("en-gb").build().unwrap();

let tracker = Snowplow::create_tracker("ns", "app_id", "https://...", Some(subject));

要跟踪事件,只需实例化它们各自类型并将它们传递给带有可选上下实体 tracker.track 方法。请参阅文档以了解事件属性的规范。

// Tracking a Screen View event
let screen_view_event = match ScreenViewEvent::builder()
    .id(Uuid::new_v4())
    .name("a screen view")
    .previous_name("previous name")
    .build()
{
    Ok(event) => event,
    Err(e) => panic!("ScreenViewEvent could not be built: {e}"), // your error handling here
};

let screen_view_event_id = match tracker.track(screen_view_event, None) {
    Ok(uuid) => uuid,
    Err(e) => panic!("Failed to emit event: {e}"), // your error handling here
};

// Tracking a Self-Describing event with context entity
let self_describing_event = match SelfDescribingEvent::builder()
    .schema("iglu:com.snowplowanalytics.snowplow/screen_view/jsonschema/1-0-0")
    .data(json!({"name": "test", "id": "something else"}))
    .build()
{
    Ok(event) => event,
    Err(e) => panic!("SelfDescribingEvent could not be built: {e}"), // your error handling here
};

let event_context = Some(vec![SelfDescribingJson::new(
    "iglu:org.schema/WebPage/jsonschema/1-0-0",
    json!({"keywords": ["tester"]}),
)]);

let self_desc_event_id = match tracker.track(self_describing_event, event_context) {
    Ok(uuid) => uuid,
    Err(e) => panic!("Failed to emit event: {e}"), // your error handling here
};


// Tracking a Structured event
let structured_event = match StructuredEvent::builder()
    .category("shop")
    .action("add-to-basket")
    .label("Add To Basket")
    .property("pcs")
    .value(2.0)
    .build()
{
    Ok(event) => event,
    Err(e) => panic!("StructuredEvent could not be built: {e}"), // your error handling here
};

let struct_event_id = match tracker.track(structured_event, None) {
    Ok(uuid) => uuid,
    Err(e) => panic!("Failed to emit event: {e}"), // your error handling here
};


// Close the emitter when done
tracker.close_emitter()

了解更多信息

技术文档 设置指南
i1 i2
技术文档 设置指南

维护者

贡献
i4
贡献

测试

Snowplow Rust 追踪器版权所有 2022 Snowplow Analytics Ltd.

本软件受Apache许可证第2.0版(以下简称“许可证”)许可;除非适用法律要求或书面同意,否则不得使用本软件。

除非适用法律要求或书面同意,否则根据许可证分发的软件按“现状”分发,不提供任何形式的明示或暗示担保。有关许可证下的权限和限制的具体语言,请参阅许可证。

依赖项

~6–21MB
~292K SLoC