moirei / hogql
使用 Laravel 的查询构建器与 PostHog 的 HogQL API 进行交互。
0.2.0
2024-08-05 08:48 UTC
Requires
- php: ^7.4|^8.0
- greenlion/php-sql-parser: ^4.6
- illuminate/contracts: ^6|^7|^8|^9|^10|^10
- illuminate/database: ^6|^7|^8|^9|^10|^10
- illuminate/support: ^6|^7|^8|^9|^10|^10
- laravel/helpers: ^1.7
Requires (Dev)
- orchestra/testbench: ^8.24
- pestphp/pest: ^2.34
- pestphp/pest-plugin-laravel: ^2.4
- phpunit/phpunit: ^10.5
This package is auto-updated.
Last update: 2024-09-05 09:21:01 UTC
README
这个 PostHog (HogQL) Laravel 查询构建器包允许您使用 Laravel 的查询构建器与 PostHog 的 HogQL API 进行交互。这个包简化了构建和执行分析查询的过程,让您能够在与 PostHog 强大的数据分析平台合作时,利用 Laravel 直观的查询语法。
特性
- 熟悉的语法:使用 Laravel 的查询构建器语法来构建复杂的查询。
- 安全访问:验证并限制对 PostHog 中特定表的安全访问。
- 无缝集成:直接从 PostHog 执行查询并检索结果。
- 可配置别名:轻松映射和别名表和列名以提高可读性。
- Eloquent 指标:轻松集成并使用与 moirei/eloquent-metrics。
安装
composer require moirei/hogql
发布配置(可选)。
php artisan vendor:publish --tag="hogql-config"
设置
安装后,您需要获取您的 产品 ID 和一个 个人 API 密钥。此密钥至少需要 query:read
范围。
更新您的 .env
文件以包含 POSTHOG_PRODUCT_ID
和 POSTHOG_API_TOKEN
。
使用方法
use MOIREI\HogQl\Facade as HogQl; ... HogQl::select(['event_name', 'COUNT(*) as event_count']) ->whereBetween('timestamp', ['2024-01-01 12:00:00', '2024-07-28 10:15:39']) ->groupBy('event_name') ->orderBy('event_count', 'DESC') ->get();
注意:
get()
操作始终转换原始结果。例如,上面的查询返回一个包含event_name
和event_count
键/值的数组集合。
扩展使用
获取 DB 查询构建器实例:
$query = HogQl::query(); // OR $query = HogQl::query('some_other_table'); $result = $query->get();
使用选择语句开始查询:
$query = HogQl::select('properties.$os as os')->where('os', 'iOS'); $result = $query->count();
引用别名:
在配置中设置别名
// config/hogql.php ... 'aliases' => [ 'device' => 'properties.$device', 'os' => 'properties.$os', ... ],
通过选择引用它们
$query = HogQl::select(['device', 'os']); $result = $query->get();
获取 Eloquent 查询构建器实例:
返回 Eloquent 模型实例。
$query = HogQl::model(); // OR $query = HogQl::eloquent(); $result = $query->select(['properties.$current_url', 'properties.$device'])->get();
解析查询字符串:
$query = HogQl::parse('SELECT event FROM events'); $result = $query->where('properties.my_user', $user->id)->count();
获取字符串查询的结果:
$response = HogQl::get('SELECT event, COUNT() FROM events GROUP BY event ORDER BY COUNT() DESC');
获取字符串查询的原始结果:
返回原始的 HogQLQueryResponse 响应。
$response = HogQl::getRaw('SELECT event, COUNT() FROM events GROUP BY event ORDER BY COUNT() DESC');
与 moirei/eloquent-metrics:
moirei/eloquent-metrics 与 Chartjs 兼容。
$query = HogQl::eloquent()->where('event', '$pageview'); $metrics = Trend::make() ->name('Page views') ->period('week') ->sumByDays($query);
测试
composer test
贡献指南
欢迎任何拉取请求或讨论。请注意,每个提供新功能或修复错误的拉取请求都应该包含适当的单元测试。
许可
MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。