add hi-precision bucketing for short term viz

This commit is contained in:
41666 2022-12-12 23:26:03 -05:00
parent 9f1942344b
commit d83ff16c1a
2 changed files with 23 additions and 3 deletions

View file

@ -20,11 +20,21 @@ impl Analytics {
ctx: &Context<'ctx>,
#[graphql(default = 60)] bucket_size: u64,
world_id: Option<i32>,
#[graphql(default = false)] hi_precision: bool,
) -> Vec<Event> {
let pool = ctx.data::<Pool<Postgres>>().unwrap();
let sql = format!("SELECT time_bucket('{} seconds', time) AS bucket, count(*), event_name, world_id FROM analytics WHERE time > now() - interval '1 day' {} GROUP BY bucket, world_id, event_name ORDER BY bucket ASC",
bucket_size,
let sql = format!("SELECT time_bucket('{} seconds', time) AS bucket, count(*), event_name, world_id FROM analytics WHERE time > now() - interval '{}' {} GROUP BY bucket, world_id, event_name ORDER BY bucket ASC",
if hi_precision {
5
} else {
bucket_size
},
if hi_precision {
"1 hour"
} else {
"1 day"
},
if let Some(world_id) = world_id {
format!("AND world_id = {}", world_id)
} else {

View file

@ -148,6 +148,12 @@
</div>
</div>
</div>
<p>
[<a href="/">home</a>] [<a href="/ingest">1 day w/ 5m buckets</a>] [<a
href="/ingest?hi=1"
>1 hour w/ 5s buckets</a
>]
</p>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.bundle.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/humanize-plus@1.8.2/dist/humanize.min.js"></script>
@ -293,7 +299,11 @@
query: `
{
analytics {
events(bucketSize: ${60 * 5}) {
events(${
location.search.includes("hi=1")
? "hiPrecision: true"
: "bucketSize: 300"
}) {
eventName
count
time