xmlns="http://www.w3.org/2000/svg"style="display:行为分析函数。提供sessionize、retention、window_funnel、sequence_match、sequence_count、sequence_match_events和sequence_next_node函数,作为一个用Rust行为分析函数。个人项目免责声明:这是一个利用个人时间开发的个人项目。它与我的雇主或职业角色没有任何关联、认可或关系。/>AI辅助编程)的协助下开发。本着完全透明和学术严谨的原则,以下保障措施确保辅助不会损害正确性、可重复性或可信度:434个单元测试个文档测试,涵盖所有函数、边缘情况、合并结合性、基于属性的测试(proptest)以及基于突变测试指导的覆盖率。所有测试通过cargotest在种方向/基础组合。Criterion.rs95%次以上,并在PERF.md中记录了详细方法。每个性能声明都可以在通用硬件上重现。88.4%个捕获个遗漏),通过cargo-mutants系统地验证了测试能够检测到真正的故障。零Clippy组下。确定性、可重现的构建—锁定依赖版本"=1.4.4"),在中验证和单一代码生成单元的发布配置文件。每次优化会话都记录了假设、技术、带有置信区间的测量前后数据,负面结果如实报告(PERF.md个负面结果)。所有源代码均可公开审计,遵循MIT工具被用作实现的加速器。所有正确性保证都依赖于自动化测试、可重现的基准测试和透明的文档——而非假设/>目录快速开始函数列表性能社区扩展质量ClickHouse兼容性状态构建开发文档要求许可证快速开始--DuckDBbehavioralFROMcommunity;LOADbehavioral;或者从源代码构建:#构建扩展cargo'target/release/libbehavioral.so';"--分钟不活动间隔分配会话IDSELECTuser_id,event_time,sessionize(event_time,INTERVAL'30minutes')OVER(PARTITIONBYuser_idORDERBYevent_time)assession_idFROMevents;--小时窗口内的转化漏斗步骤SELECTuser_id,window_funnel(INTERVAL'1hour',event_time,event_type='page_view',event_type='add_to_cart',event_type='purchase')asfurthest_stepFROMeventsGROUPBYuser_id;函数列表函数签名返回类型描述sessionize(TIMESTAMP,INTERVAL)BIGINT窗口函数,基于不活动间隔分配会话IDretention(BOOLEAN,BOOLEAN,...)BOOLEAN[]群组留存分析window_funnel(INTERVALVARCHAR],...)INTEGER转化漏斗步骤跟踪,支持种可组合模式sequence_match(VARCHAR,TIMESTAMP,...)BOOLEAN基于NFA的事件序列模式匹配sequence_count(VARCHAR,TIMESTAMP,...)BIGINT计算非重叠模式匹配次数sequence_match_events(VARCHAR,TIMESTAMP,...)LIST(TIMESTAMP)返回匹配条件的时间戳sequence_next_node(VARCHAR,VARCHAR,...)VARCHAR模式匹配后的下一个事件值所有函数支持2ClickHouse的限制一致。每个函数的详细文档、示例和边缘情况行为:函数参考性能以下所有测量结果均来自Criterion.rs置信区间,并在通用硬件上跨多次运行验证。函数数据规模墙钟时间吞吐量sessionize10亿1.20亿元素/秒retention(合并)1亿274亿元素/秒window_funnel1亿791亿元素/秒sequence_match1亿1.05万元素/秒sequence_count1亿1.18万元素/秒sequence_match_events1亿1.07万元素/秒sequence_next_node1千万546万元素/秒关键设计选择:16字节Copy事件,带有u32位掩码条件——每四个事件占一个缓存行,每个事件零堆分配sessionize和retention的O(1)实现事件收集函数的就地合并——摊余O(N)回溯预排序检测——当事件按时间戳顺序到达时,O(n)O(n排序优化亮点:优化项加速比技术事件位掩码5–13倍Vec<bool>替换为u32位掩码,实现Copy语义就地合并高达2,436倍交换探索顺序,使.*在消耗前尝试推进Arc<str>值2.1–5.8倍引用计数字符串,实现sequence_next_node中的O(1)快速路径39–61%模式分类将常见形状分派到O(n)线性扫描有五次尝试的优化经测量被认定为回归并已回滚。所有负面结果均在PERF.md中记录。完整的方法论、带有置信区间的每轮优化历史以及可重现的基准测试说明:PERF.md。社区扩展此扩展已列入DuckDB合并)。安装方式如下:INSTALLbehavioralFROMcommunity;LOADbehavioral;无需构建工具、编译或-unsigned标志。更新流程community-submission.yml工作流自动执行完整的预提交流水线,分为个阶段:阶段目的验证description.yml架构、版本一致性、必需文件质量门禁cargo+文档测试)、clippy、fmt、doc构建与测试makeconfiguretest_release固定引用将description.yml的refSHA提交包上传构建产物,生成逐步的命令更新已发布的扩展将更改推送到此仓库,重新运行提交工作流以固定新的ref,然后向duckdb/community-extensions打开一个新的PR,更新extensions/behavioral/description.yml中的ref发布新版本时,更新libduckdb-sys、TARGET_DUCKDB_VERSION和extension-ci-tools子模块。质量指标数值单元测试434+文档测试端到端测试27(针对真实的DuckDBCLI)基于属性的测试26(proptest)突变测试88.4%击杀率cargo-mutants)Clippy+任务13(检查、测试、clippy、fmt、doc、MSRV、基准测试、deny、semver、覆盖率、跨平台、扩展构建)基准测试文件7(Criterion.rs,最高达亿元素)发布平台4(Linuxx86_64/ARM64)每次推送和都会运行CI:跨.github/workflows/的个工作流,包括针对真实兼容性状态已完成—ClickHouse行为分析函数均已实现。函数状态sessionize已完成retention已完成window_funnel(6种模式)已完成sequence_match已完成sequence_count已完成sequence_match_events已完成sequence_next_node已完成支持个条件已完成构建前提条件:Rust1.80+系统绑定)#构建扩展(发布模式)cargobuildtarget/release/libbehavioral.sotarget/release/libbehavioral.dylib(macOS)开发cargotest#434要求零警告cargofmt#格式化cargo构建扩展gitsubmoduleupdate--initmakeconfigure&&makerelease&&maketest_release本项目遵循语义化版本。有关应用于SQL规则,请参阅版本控制策略。文档入门指南—安装、加载、故障排除函数参考—个函数的详细文档使用案例—个包含示例数据的完整真实世界示例工程概述—架构、测试理念、设计权衡性能—基准测试、优化历史、方法论ClickHouse兼容性—语法映射、语义等价性贡献指南—开发环境设置、测试、PR流程要求Rust1.80+1.4.4(锁定依赖)Python3.x(用于扩展元数据工具)许可证MIT