From 3c7dcfcd063d24150b6b1d64ba249b74c4b400b9 Mon Sep 17 00:00:00 2001 From: zzylol <50204836+zzylol@users.noreply.github.com> Date: Sat, 7 Nov 2026 03:41:25 +0000 Subject: [PATCH 01/11] =?UTF-8?q?feat(devtools):=20print=20every=20stage's?= =?UTF-8?q?=20memo=20candidates,=20physical=20edges=20with=20=CE=B1=20and?= =?UTF-8?q?=20pruned=20candidates=20(#1207=20PR=209)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/devtools/src/bin/asap_planner.rs | 334 +++++++++++++---- crates/devtools/src/candidate_labels.rs | 56 ++- crates/devtools/src/planning_stages_text.rs | 394 ++++++++++++++++++-- 3 files changed, 683 insertions(+), 101 deletions(-) diff --git a/crates/devtools/src/bin/asap_planner.rs b/crates/devtools/src/bin/asap_planner.rs index 0abacd83f..9bd94d559 100644 --- a/crates/devtools/src/bin/asap_planner.rs +++ b/crates/devtools/src/bin/asap_planner.rs @@ -51,24 +51,30 @@ // - workload: the queries (`id`, `language`, `text`, `requirements`, // `recurrence`, `predictability`) and the `data_workload` planned with; // - stage0_query_language_frontends: the frontends' DAG, one root per query; -// - stage1_logical_asap_optimization (from `stage1_pass1`): `pruned_candidates`, -// the ways to compute a measure Pass 1 pruned (each on its aggregate's -// memo `group`, with `candidate` and `reason`); with `stage3`, -// `candidates` holds `L1`, the selected plan's roots (as Stage 2 built -// them, with Stage 3's weight proofs); `error` when Pass 1 failed; -// - stage2_physical_asap_optimization (from `stage2`): `pruned_candidates`, -// the physical candidates Stage 2 pruned (each with its memo `group`, -// `operator_node`, `operator`, `implementation_root`, `timing`, -// `lifetime` and `reason`); with `stage3`, `candidates` holds -// `P1`, the selected plan as Stage 2 built it; +// - stage1_logical_asap_optimization (from `stage1_pass1`): with +// `stage3`, `candidates` holds `L1`, the selected plan's roots (as the +// realizer built them); `error` when Pass 1 or Pass 2 failed; +// - stage2_physical_asap_optimization (from `stage2`): +// `physical_candidates`, Stage 2's candidates (`id`, the logical +// candidate's `group` and `index_in_group`, `properties` with `timing` +// and `lifetime`, and per input its `group`, `requirement` +// (`parameter_floor_for_required_accuracy`) and `edges`: every +// producer of the group with `satisfies_logical_requirement`, +// `satisfies_physical_requirement`, `rejection` (why it is not +// admissible, null when it is) and `selected` (an edge of the selected +// DAG)); `pruned_candidates`, the physical candidates Stage 2 pruned +// (`group`, `index_in_group`, `properties`, `reason`); with `stage3`, +// `candidates` holds `P1`, the selected plan as the realizer built it; // - stage3_plan_selection (from `stage3`): Stage 3's `Selection`: // `selected_dag` (`candidate_of_node`, `edges`, // `node_of_output_reference`), // the plan's `cost` (its `usage`, `cost_per_second` and per-node -// charges), `accepted_accuracy_per_query`, `pruned_candidates` and +// charges), `accepted_accuracy_per_query`, `pruned_candidates` (the +// candidates Stage 3 pruned: `group`, `candidate`, `reason` and +// `dominated_by`, the candidate that dominates it or null) and // `search_report`; `error` when no plan was selected. // `tumbling_window_retention_ms` maps each tumbling-window chain the plan -// keeps beyond one evaluation (by node id in `P1`) to how far back its +// materializes beyond one evaluation (by node id in `P1`) to how far back its // tumbling windows are retained. // `materialized_views` are the plan's materialized views as // `plan_installable` derives them, each with the node of `P1` it is @@ -79,44 +85,46 @@ // or `irate` to a declared gauge or combining a declared summary's // quantile series across series (`metric_type_warnings`), and a peak memory over 10^12 bytes // when the cost model declares no memory capacity; -// - memo: `nodes`, one node table for the section (each distinct node -// once, children as indices before their parents), and `steps`, the -// memo after each step run (`stage0`: the frontends' DAG hash-consed, -// groups without candidates; `pass1`; `pass2_local_window_composition`: -// local window composition's tumbling-window candidates; `pass2`: Pass -// 2's output, the memo Stage 2 implements). Each -// step lists its groups (`id`, `label`, `children`, `parents`, -// `queries`, `roots_of`, `node`) and their candidates (`index`, -// `implements`, `children`, `origin`, `accuracy_budget_parts`, `added` -// (not in the group at the step before), `label`, `node`, -// `group_of_node`). With `stage3`, `selected_choice` maps each group the -// plan uses to its candidate's index, or is null with -// `selected_choice_unavailable`; +// - memo: `steps`, the memo after each step run (`stage0`: the +// frontends' DAG hash-consed, groups without candidates; `pass1`; +// `pass2_local_window_composition`: local window composition's +// tumbling-window candidates; `pass2`: Pass 2's output, the memo Stage +// 2 expands). Each step lists its groups (`id`, `label`, `operator` +// (its expression, children as group ids), `children`, `parents`, +// `queries`, `roots_of`) and their candidates (`index`, `origin`, +// `added` (not in the group at the step before), `label`, `operator`, +// `children` (its input groups), `fused_groups`, `logical_properties` +// (`parameters`, `window_layout`) and `input_requirements` (one +// `parameter_floor_for_required_accuracy` per input)). With a selected +// plan, `selected_candidates` maps each group the plan uses to the +// indices of its candidates there; // - `search`, `accuracy_guarantees` (`"enforced"` or `"ignored"`), // `deployment_capabilities` (as planned with) and `run_until`. // A section of a stage after `--run-until` is null. use std::collections::btree_map::Entry; -use std::collections::BTreeSet; +use std::collections::{BTreeMap, BTreeSet}; use asap_cost::{CostInputs, ResourceUsage}; -use asap_devtools::candidate_labels::node_label; +use asap_devtools::candidate_labels::operator_label; use asap_devtools::planning_stages::{ lower_promql_roots, lower_sql_roots, run_stages_until, sql_catalog, PlanningStagesError, PlanningStagesRun, RunUntil, }; -use asap_devtools::planning_stages_text::planning_stages_text; +use asap_devtools::planning_stages_text::{edge_rejection, planning_stages_text, same_candidate}; use asap_devtools::SqlCatalog; use asap_frontend_promql::{metric_type_warnings, promql_metric_names}; use asap_planner::{installable_plan_of, PlanningModels, SelectionError}; use asap_stage3_plan_selection::{large_peak_memory_warning, AcceptedAccuracy, Selection}; use asap_types::deployment_capabilities::DeploymentCapabilities; -use asap_types::ir::flat::{flatten, FlatDag, FlatNode}; +use asap_types::ir::flat::{flatten, FlatDag}; use asap_types::ir::properties::{default_metric_for_root, AccuracyTarget}; use asap_types::ir::QueryRoot; -use asap_types::stages::PhysicalASAPMemoCandidates; -use asap_types::stages::{queries_rooted_at, MemoGroup, MemoGroupId}; -use asap_types::stages::{Memo, OriginOfCandidateForMemoGroup}; +use asap_types::physical::PhysicalProperties; +use asap_types::stages::{ + queries_rooted_at, CandidateForMemoGroup, LogicalRequirements, Memo, MemoGroupId, + OriginOfCandidateForMemoGroup, PhysicalASAPMemoCandidates, PruneReason, WindowLayout, +}; use asap_types::workload::{ DataArrival, DataWorkload, PlanningWorkload, QueryLanguage, QueryRecurrence, QueryWorkloadEntry, RepeatedDemand, @@ -307,7 +315,6 @@ fn document_of( "stage1_logical_asap_optimization": { "combinations": 0, "capped": false, - "pruned_candidates": [], "candidates": [], "error": format!("Pass 1: {error}"), }, @@ -358,10 +365,13 @@ fn document(queries: Vec, entries: &[QueryWorkloadEntry], run: &PlanningS stage1 }); let stage2 = (until >= RunUntil::Stage2).then(|| { + let stage2_output = run.run.physical_asap_candidates.as_ref(); let mut stage2 = json!({ "candidates": physical, - "pruned": [], - "pruned_candidates": stage2_pruned_candidates_json(run.run.physical_asap_candidates.as_ref()), + "physical_candidates": stage2_output.map_or_else(Vec::new, |stage2| { + physical_candidates_json(stage2, run.run.selection.as_ref().ok()) + }), + "pruned_candidates": stage2_output.map_or_else(Vec::new, stage2_pruned_candidates_json), }); // Stage 2 itself failed. if run.run.logical_asap_candidates.is_some() && run.run.physical_asap_candidates.is_none() { @@ -409,7 +419,11 @@ fn stage3_json(run: &PlanningStagesRun, entries: &[QueryWorkloadEntry]) -> Value stage3 } -/// The document's `memo` section: the memo after each step `run` ran. +/// The document's `memo` section: the memo after each step `run` ran, +/// and, with a selected plan, `selected_candidates`: each memo group the +/// selected DAG uses, with the indices of its candidates there ($x$ over +/// the memo; a group may be used through several candidates, e.g. one per +/// execution context). fn memo_json(run: &PlanningStagesRun) -> Value { let stage0 = run .stage0_memo_groups @@ -429,18 +443,32 @@ fn memo_json(run: &PlanningStagesRun) -> Value { if let Some(logical) = &run.run.logical_asap_candidates { named.push(("pass2", "Stage 1, Pass 2", &logical.memo)); } - let mut table = MemoNodes::default(); let mut previous: Option<&Memo> = None; let mut json_steps = Vec::new(); for &(step, title, memo) in &named { json_steps.push(json!({ "step": step, "title": title, - "groups": memo_groups_json(&mut table, memo, previous), + "groups": memo_groups_json(memo, previous), })); previous = Some(memo); } - json!({ "nodes": table.nodes, "steps": json_steps }) + let mut memo = json!({ "steps": json_steps }); + if let (Ok(selection), Some(stage2)) = ( + &run.run.selection, + run.run.physical_asap_candidates.as_ref(), + ) { + let mut selected: BTreeMap> = BTreeMap::new(); + for candidate in &selection.selected_dag.candidate_of_node { + let logical = stage2.physical_candidates[candidate.0].logical_candidate_id; + selected + .entry(logical.group.0.to_string()) + .or_default() + .insert(logical.index_in_group); + } + memo["selected_candidates"] = json!(selected); + } + memo } /// The [`metric_type_warnings`] of each PromQL query of `described` (the @@ -642,15 +670,137 @@ fn materialized_views_json( .collect() } +/// Stage 2's physical candidates $\mathcal C$: each with its logical +/// candidate (`group`, `index_in_group`), its `properties` ($\tau$, $\ell$) +/// and, per input $(c, i)$, the input `group`, the `requirement` (the +/// parameter floor, null without one) and every producer $u$ of the group +/// as an `edges` entry: `producer`, `satisfies_logical_requirement` +/// ($\alpha^{\log}$), `satisfies_physical_requirement` ($\alpha^{\mathrm{phys}}$), +/// `rejection` (why it is not admissible, null when it is) and `selected` +/// (a $y$ edge of the selected DAG). +fn physical_candidates_json( + stage2: &PhysicalASAPMemoCandidates, + selection: Option<&Selection>, +) -> Vec { + let memo = &stage2.logical_candidates.memo; + let selected: BTreeSet<(usize, usize, usize)> = selection + .map(|selection| { + let dag = &selection.selected_dag; + dag.edges + .iter() + .map(|edge| { + ( + dag.candidate_of_node[edge.producer.0].0, + dag.candidate_of_node[edge.consumer.0].0, + edge.input_index_of_consumer, + ) + }) + .collect() + }) + .unwrap_or_default(); + let mut inputs: Vec> = stage2 + .physical_candidates + .iter() + .map(|candidate| { + let logical = memo.candidate(candidate.logical_candidate_id); + logical + .expression + .operator + .children() + .into_iter() + .zip(&logical.input_requirements) + .map(|(group, requirement)| { + json!({ + "group": group.0, + "requirement": requirement_json(requirement), + "edges": [], + }) + }) + .collect() + }) + .collect(); + for (_, edge) in stage2.edges() { + let (producer, consumer, input) = ( + edge.producer_candidate_id.0, + edge.consumer_candidate_id.0, + edge.input_index_of_consumer, + ); + inputs[consumer][input]["edges"] + .as_array_mut() + .expect("edges is an array") + .push(json!({ + "producer": producer, + "satisfies_logical_requirement": edge.satisfies_logical_requirement, + "satisfies_physical_requirement": edge.satisfies_physical_requirement, + "rejection": edge_rejection(stage2, &edge), + "selected": selected.contains(&(producer, consumer, input)), + })); + } + stage2 + .physical_candidates + .iter() + .zip(inputs) + .enumerate() + .map(|(id, (candidate, inputs))| { + let logical = candidate.logical_candidate_id; + json!({ + "id": id, + "group": logical.group.0, + "index_in_group": logical.index_in_group, + "properties": physical_properties_json(&candidate.physical_properties), + "inputs": inputs, + }) + }) + .collect() +} + +/// $p^{\mathrm{phys}}$: `{"timing": ..., "lifetime": ...}`. +fn physical_properties_json(properties: &PhysicalProperties) -> Value { + json!({ "timing": properties.timing(), "lifetime": properties.lifetime() }) +} + +/// $r^{\log}_{c,i}$: `{"parameter_floor_for_required_accuracy": θ or null}`. +fn requirement_json(requirement: &LogicalRequirements) -> Value { + json!({ + "parameter_floor_for_required_accuracy": requirement.parameter_floor_for_required_accuracy(), + }) +} + /// The physical candidates Stage 2 pruned -/// (`PhysicalASAPMemoCandidates::pruned_candidates`), in pruning order. -/// Empty without memo steps. -fn stage2_pruned_candidates_json(stage2: Option<&PhysicalASAPMemoCandidates>) -> Vec { - let Some(stage2) = stage2 else { - return Vec::new(); - }; - let _ = &stage2.pruned_candidates; - todo!("#1207 PR 9 (#1205): each pruned PhysicalCandidateKey with its reason") +/// (`PhysicalASAPMemoCandidates::pruned_candidates`), in pruning order: +/// each logical candidate (`group`, `index_in_group`), the `properties` it +/// would have had and the `reason`. +fn stage2_pruned_candidates_json(stage2: &PhysicalASAPMemoCandidates) -> Vec { + stage2 + .pruned_candidates + .iter() + .map(|pruned| { + let key = &pruned.candidate; + json!({ + "group": key.logical_candidate_id.group.0, + "index_in_group": key.logical_candidate_id.index_in_group, + "properties": physical_properties_json(&key.physical_properties), + "reason": prune_reason_name(&pruned.reason), + }) + }) + .collect() +} + +/// A `PruneReason` in snake case, without the candidate `DominatedBy` names. +fn prune_reason_name(reason: &PruneReason) -> &'static str { + match reason { + PruneReason::PerEntityAggregateNotExecutable => "per_entity_aggregate_not_executable", + PruneReason::NoIngestionPipeline => "no_ingestion_pipeline", + PruneReason::RawDataNotRetained => "raw_data_not_retained", + PruneReason::QueryTimeResultsNotRetained => "query_time_results_not_retained", + PruneReason::AcrossEvaluationsWithoutWindowLayout => { + "across_evaluations_without_window_layout" + } + PruneReason::InputHasNoBuildableProducer => "input_has_no_buildable_producer", + PruneReason::ReachesNoQueryOutput => "reaches_no_query_output", + PruneReason::DominatedBy(_) => "dominated_by", + PruneReason::UsageNotCostable => "usage_not_costable", + } } /// One plan's cost: per second, its predicted CPU, unit and source, its @@ -739,7 +889,18 @@ fn selection_json(selection: &Result) -> Value { "pruned_candidates": selection .pruned_candidates .iter() - .map(|p| json!({ "group": p.group.0, "candidate": p.candidate.0, "reason": format!("{:?}", p.reason) })) + .map(|p| { + let dominated_by = match p.reason { + PruneReason::DominatedBy(candidate) => json!(candidate.0), + _ => Value::Null, + }; + json!({ + "group": p.group.0, + "candidate": p.candidate.0, + "reason": prune_reason_name(&p.reason), + "dominated_by": dominated_by, + }) + }) .collect::>(), "search_report": selection.search_report, }) @@ -822,24 +983,16 @@ fn with_default_metrics(mut queries: Vec, roots: &[QueryRoot]) -> Vec, -} - -/// `memo`'s groups, each with its candidates, their nodes added to -/// `table`; a candidate is `added` when `previous` (the memo at the step -/// before) has no such candidate. -fn memo_groups_json(table: &mut MemoNodes, memo: &Memo, previous: Option<&Memo>) -> Vec { +/// `memo`'s groups, each with its operator and its candidates; a candidate +/// is `added` when `previous` (the memo at the step before) has no such +/// candidate. +fn memo_groups_json(memo: &Memo, previous: Option<&Memo>) -> Vec { let ids = |groups: &[MemoGroupId]| groups.iter().map(|g| g.0).collect::>(); memo.groups() .iter() .enumerate() .map(|(id, group)| { let candidates = &group.candidates; - let node = group_node(table, group); let mut by_origin = serde_json::Map::new(); for candidate in candidates { let count = by_origin @@ -847,22 +1000,28 @@ fn memo_groups_json(table: &mut MemoNodes, memo: &Memo, previous: Option<&Memo>) .or_insert(json!(0)); *count = json!(count.as_u64().unwrap_or(0) + 1); } - let listed: Vec = if candidates.is_empty() { - Vec::new() - } else { - let _ = previous; - todo!( - "#1207 PR 9 (#1205): each candidate's expression, properties and requirements" - ) - }; + let earlier = previous + .and_then(|memo| memo.groups().get(id)) + .map_or(&[][..], |group| group.candidates.as_slice()); + let listed: Vec = candidates + .iter() + .enumerate() + .map(|(index, candidate)| { + let added = previous.is_some() + && !earlier + .iter() + .any(|before| same_candidate(before, candidate)); + candidate_json(index, candidate, added) + }) + .collect(); json!({ "id": id, - "label": node_label(&table.nodes[node]), + "label": operator_label(&group.expression), + "operator": group.expression.map_children(|child| child.0), "children": group.expression.children().into_iter().map(|g| g.0).collect::>(), "parents": ids(group.parent_groups()), "queries": group.reached_by_queries(), "roots_of": queries_rooted_at(&memo.query_roots, MemoGroupId(id as u32)), - "node": node, "candidate_count": candidates.len(), "candidate_count_by_origin": by_origin, "candidates_capped": false, @@ -872,10 +1031,37 @@ fn memo_groups_json(table: &mut MemoNodes, memo: &Memo, previous: Option<&Memo>) .collect() } -/// The node of `group`'s own operator, added to `table`. -fn group_node(table: &mut MemoNodes, group: &MemoGroup) -> usize { - let _ = (table, group); - todo!("#1207 PR 9: a group's node from its expression") +/// One candidate $v = (e_v, p^{\log}_v)$ of a group: its `index`, `origin`, +/// `added`, `label`, `operator` $e_v$ (children are its input groups), +/// `children` (the input groups), `fused_groups`, `logical_properties` +/// (`parameters` θ, `window_layout` ω) and `input_requirements` (one +/// $r^{\log}_{c,i}$ per input). +fn candidate_json(index: usize, candidate: &CandidateForMemoGroup, added: bool) -> Value { + let operator = &candidate.expression.operator; + let window_layout = match candidate.logical_properties.window_layout() { + Some(WindowLayout::Tumbling { width_ms }) => { + json!({ "tumbling": { "width_ms": width_ms } }) + } + None => Value::Null, + }; + json!({ + "index": index, + "origin": origin_name(&candidate.origin), + "added": added, + "label": operator_label(operator), + "operator": operator.map_children(|child| child.0), + "children": operator.children().into_iter().map(|g| g.0).collect::>(), + "fused_groups": candidate.fused_groups.iter().map(|g| g.0).collect::>(), + "logical_properties": { + "parameters": candidate.logical_properties.parameters(), + "window_layout": window_layout, + }, + "input_requirements": candidate + .input_requirements + .iter() + .map(requirement_json) + .collect::>(), + }) } /// `OriginOfCandidateForMemoGroup` in snake case. diff --git a/crates/devtools/src/candidate_labels.rs b/crates/devtools/src/candidate_labels.rs index bdfa216ff..f4ed2705c 100644 --- a/crates/devtools/src/candidate_labels.rs +++ b/crates/devtools/src/candidate_labels.rs @@ -11,7 +11,7 @@ use serde_json::Value; use asap_types::ir::physical_export::{PhysicalASAPDAG, PhysicalASAPNodeId}; use asap_types::ir::properties::ExecutionTiming; -use asap_types::ir::schema::{FieldDataType, SketchAlgorithm}; +use asap_types::ir::schema::{FieldDataType, SketchAlgorithm, SketchParams}; use asap_types::ir::NonASAPOp; use asap_types::ir::{ASAPOp, Operator, OperatorNode, QueryRoot}; use asap_types::physical::Lifetime; @@ -263,11 +263,11 @@ fn sketch_name(algorithm: &SketchAlgorithm) -> String { } } -/// One node's operator kind with its sketch family and parameters, its -/// summary query, its time range and its tumbling-window layout, when it has them: e.g. -/// `SummaryAgg Kll(k=200)`, `SummaryEstimate Quantile(q=0.5)`. -pub fn node_label(node: &asap_types::ir::flat::FlatNode) -> String { - let operator = serde_json::to_value(&node.operator).unwrap_or_default(); +/// An operator's kind with its sketch family, its summary query, its time +/// range and its tumbling-window layout, when it has them, without its +/// inputs: e.g. `SummaryAgg Kll`, `SummaryEstimate Quantile(q=0.5)`. +pub fn operator_label(operator: &Operator) -> String { + let operator = serde_json::to_value(operator.map_children(|_| ())).unwrap_or_default(); // `{"ASAP": {"SummaryAgg": {...}}}` (or a unit variant's string). let (kind, fields) = match operator.as_object().and_then(|o| o.values().next()) { Some(Value::Object(inner)) => match inner.iter().next() { @@ -287,6 +287,21 @@ pub fn node_label(node: &asap_types::ir::flat::FlatNode) -> String { label } +/// A sketch's parameters θ: e.g. `Kll(k=269)`, `Cms(width=2719, depth=5)`. +pub fn parameters_label(parameters: &SketchParams) -> String { + let value = serde_json::to_value(parameters).unwrap_or_default(); + let Some((family, fields)) = value.as_object().and_then(|o| o.iter().next()) else { + return value.to_string(); + }; + let fields: Vec = fields + .as_object() + .into_iter() + .flatten() + .map(|(key, value)| format!("{key}={value}")) + .collect(); + format!("{family}({})", fields.join(", ")) +} + /// Sketch algorithms with parameters, summary queries and time ranges found /// in an operator's fields (not inside its schemas). fn find_details(value: &Value, details: &mut Vec, depth: usize) { @@ -353,6 +368,8 @@ fn find_details(value: &Value, details: &mut Vec, depth: usize) { details.push(format!("{kind}({})", params.join(", "))); } } + // A summary's family, e.g. `Kll` or `ExactAggregate(Rate)`. + "family" => details.push(family_text(field)), // A time range's length, e.g. `60s`. "range" => details.push(duration_text(field)), // A window, and a tumbling-window chain's layout. @@ -372,6 +389,33 @@ fn find_details(value: &Value, details: &mut Vec, depth: usize) { } } +/// A serialized summary family: `Kll` (`{"Sketch": "Kll"}`), +/// `ExactAggregate(Rate)` (`{"ExactAggregate": ["Rate", "Rate"]}`, the +/// distinct names), or the JSON of any other value. +fn family_text(value: &Value) -> String { + match value { + Value::String(name) => name.clone(), + Value::Object(fields) if fields.len() == 1 => { + let (kind, inner) = fields.iter().next().expect("one field"); + let mut names: Vec = match inner { + Value::String(name) => vec![name.clone()], + Value::Array(items) => items + .iter() + .map(|item| item.as_str().map_or(item.to_string(), str::to_owned)) + .collect(), + other => vec![other.to_string()], + }; + names.dedup(); + if kind == "Sketch" { + names.join(", ") + } else { + format!("{kind}({})", names.join(", ")) + } + } + other => other.to_string(), + } +} + /// A serialized `Duration` (`{"secs": 60, "nanos": 0}`) as `60s`, or /// `1500ms` when it is not whole seconds; any other value as its JSON. fn duration_text(value: &Value) -> String { diff --git a/crates/devtools/src/planning_stages_text.rs b/crates/devtools/src/planning_stages_text.rs index e136e4e9c..a7aeca2f0 100644 --- a/crates/devtools/src/planning_stages_text.rs +++ b/crates/devtools/src/planning_stages_text.rs @@ -24,9 +24,14 @@ use std::fmt::Write; use asap_types::ir::flat::flatten; use asap_types::ir::QueryRoot; -use asap_types::stages::{Memo, MemoGroup, PhysicalASAPMemoCandidates}; +use asap_types::physical::PhysicalProperties; +use asap_types::stages::{ + producer_satisfies_logical_requirements, CandidateForMemoGroup, LogicalProperties, + LogicalRequirements, Memo, PhysicalASAPMemoCandidates, PhysicalCandidateId, PhysicalEdge, + WindowLayout, +}; -use crate::candidate_labels::node_label; +use crate::candidate_labels::{operator_label, parameters_label}; use crate::planning_stages::{PlanningStagesRun, RunUntil}; /// The output of every stage `stages` ran, as text, one section per stage @@ -126,7 +131,11 @@ fn write_dag(out: &mut String, roots: &[QueryRoot]) { .into_iter() .map(|child| format!("n{child}")) .collect(); - vec![format!("n{id}:"), node_label(node), reads(&children)] + vec![ + format!("n{id}:"), + operator_label(&node.operator), + reads(&children), + ] }) .collect(); write_rows(out, "", rows); @@ -179,8 +188,10 @@ fn reads(inputs: &[String]) -> String { } /// `memo`'s groups, one line each with the child groups it reads, and with -/// `with_candidates` each group's candidates below it, marked `new` when -/// `previous` (the memo at the step before) has no such candidate. +/// `with_candidates` each group's candidates below it: index, origin, `new` +/// when `previous` (the memo at the step before) has no such candidate, the +/// operator $e_v$ with its input groups, $p^{\log}_v$ (θ, ω), the fused +/// groups, and $r^{\log}_{c,i}$ per input (its parameter floor). fn write_memo(out: &mut String, memo: &Memo, previous: Option<&Memo>, with_candidates: bool) { // The group lines share one set of column widths, with each group's // candidates printed under its line. @@ -195,7 +206,11 @@ fn write_memo(out: &mut String, memo: &Memo, previous: Option<&Memo>, with_candi .into_iter() .map(|child| format!("G{}", child.0)) .collect(); - vec![format!("G{id}:"), group_label(group), reads(&children)] + vec![ + format!("G{id}:"), + operator_label(&group.expression), + reads(&children), + ] }) .collect(); let mut group_lines = String::new(); @@ -205,8 +220,31 @@ fn write_memo(out: &mut String, memo: &Memo, previous: Option<&Memo>, with_candi if !with_candidates { continue; } - let _ = (previous, &memo.groups()[id].candidates); - todo!("#1207 PR 9: print each candidate's expression, logical properties and input requirements") + let earlier = previous + .and_then(|memo| memo.groups().get(id)) + .map_or(&[][..], |group| group.candidates.as_slice()); + let rows = memo.groups()[id] + .candidates + .iter() + .enumerate() + .map(|(index, candidate)| { + let added = previous.is_some() + && !earlier + .iter() + .any(|before| same_candidate(before, candidate)); + vec![ + format!("[{index}]"), + format!("{:?}", candidate.origin), + if added { + "new".to_owned() + } else { + String::new() + }, + candidate_text(candidate), + ] + }) + .collect(); + write_rows(out, " ", rows); } let roots: Vec = memo .query_roots @@ -219,24 +257,338 @@ fn write_memo(out: &mut String, memo: &Memo, previous: Option<&Memo>, with_candi let _ = writeln!(out, "query_roots: [{}]", roots.join(", ")); } +/// Whether two candidates of one group are the same $(e_v, p^{\log}_v)$: +/// what marks a candidate `new` (text) or `added` (the viewer document). +pub fn same_candidate(left: &CandidateForMemoGroup, right: &CandidateForMemoGroup) -> bool { + left.expression == right.expression + && left.logical_properties.parameters() == right.logical_properties.parameters() + && left.logical_properties.window_layout() == right.logical_properties.window_layout() +} + +/// A candidate on one line: `SummaryAgg Kll <- G1 θ=Kll(k=269) floors=[-]`. +fn candidate_text(candidate: &CandidateForMemoGroup) -> String { + let operator = &candidate.expression.operator; + let inputs: Vec = operator + .children() + .into_iter() + .map(|group| format!("G{}", group.0)) + .collect(); + let mut text = operator_label(operator); + if !inputs.is_empty() { + let _ = write!(text, " {}", reads(&inputs)); + } + let _ = write!( + text, + " {}", + logical_properties_text(&candidate.logical_properties) + ); + if !candidate.fused_groups.is_empty() { + let fused: Vec = candidate + .fused_groups + .iter() + .map(|group| format!("G{}", group.0)) + .collect(); + let _ = write!(text, " fuses=[{}]", fused.join(", ")); + } + if candidate.input_requirements.iter().any(|requirement| { + requirement + .parameter_floor_for_required_accuracy() + .is_some() + }) { + let floors: Vec = candidate + .input_requirements + .iter() + .map(requirement_text) + .collect(); + let _ = write!(text, " floors=[{}]", floors.join(", ")); + } + text +} + +/// $p^{\log}_v$: `θ=Kll(k=269) ω=tumbling 10000ms`, `exact` without θ. +fn logical_properties_text(properties: &LogicalProperties) -> String { + let mut text = match properties.parameters() { + Some(parameters) => format!("θ={}", parameters_label(parameters)), + None => "exact".to_owned(), + }; + if let Some(WindowLayout::Tumbling { width_ms }) = properties.window_layout() { + let _ = write!(text, " ω=tumbling {width_ms}ms"); + } + text +} + +/// $r^{\log}_{c,i}$: its parameter floor, `-` without one. +fn requirement_text(requirement: &LogicalRequirements) -> String { + requirement + .parameter_floor_for_required_accuracy() + .map_or("-".to_owned(), parameters_label) +} + +/// `(QueryTime, None)`. +fn physical_properties_text(properties: &PhysicalProperties) -> String { + format!("({:?}, {:?})", properties.timing(), properties.lifetime()) +} + +/// Why edge `edge` is not admissible, or `None` when it is: $\alpha^{\log} +/// = 0$ (the producer's θ is below the consumer's floor, or else the metric +/// rule: the consumer's error contract cannot carry the producer's error), +/// or $\alpha^{\mathrm{phys}} = 0$ (the producer's timing and lifetime +/// cannot serve the consumer's). +pub fn edge_rejection( + physical: &PhysicalASAPMemoCandidates, + edge: &PhysicalEdge, +) -> Option { + let memo = &physical.logical_candidates.memo; + let producer = &physical.physical_candidates[edge.producer_candidate_id.0]; + let consumer = &physical.physical_candidates[edge.consumer_candidate_id.0]; + let producer_logical = memo.candidate(producer.logical_candidate_id); + let requirement = &memo + .candidate(consumer.logical_candidate_id) + .input_requirements[edge.input_index_of_consumer]; + if !edge.satisfies_logical_requirement { + return Some( + if producer_satisfies_logical_requirements( + &producer_logical.logical_properties, + requirement, + ) { + format!( + "α^log = 0: metric rule, the consumer's error contract cannot carry the \ + producer's error ({})", + logical_properties_text(&producer_logical.logical_properties) + ) + } else { + format!( + "α^log = 0: requires θ ⪰ {}, offers {}", + requirement_text(requirement), + logical_properties_text(&producer_logical.logical_properties) + ) + }, + ); + } + (!edge.satisfies_physical_requirement).then(|| { + format!( + "α^phys = 0: consumer {} cannot read producer {}", + physical_properties_text(&consumer.physical_properties), + physical_properties_text(&producer.physical_properties) + ) + }) +} + +/// `C3 = G2[0] (QueryTime, None)`. +fn physical_candidate_text( + physical: &PhysicalASAPMemoCandidates, + id: PhysicalCandidateId, +) -> String { + let candidate = &physical.physical_candidates[id.0]; + let logical = candidate.logical_candidate_id; + format!( + "C{} = G{}[{}] {}", + id.0, + logical.group.0, + logical.index_in_group, + physical_properties_text(&candidate.physical_properties) + ) +} + +/// Stage 2's output: each physical candidate $v$ with its logical candidate +/// and $p^{\mathrm{phys}}_v$; under it, per input $(c, i)$, every producer +/// $u$ of the input group with $\alpha$ (`✓` admissible, `✗` and why +/// not); then the query roots and the candidates Stage 2 pruned. fn write_physical(out: &mut String, physical: &PhysicalASAPMemoCandidates) { - let _ = (out, physical); - todo!("#1207 PR 9: print each physical candidate's properties and its edges with α") + let memo = &physical.logical_candidates.memo; + let _ = writeln!( + out, + "physical candidates ({}):", + physical.physical_candidates.len() + ); + let mut edges_into: Vec>> = physical + .physical_candidates + .iter() + .map(|candidate| { + let inputs = memo + .candidate(candidate.logical_candidate_id) + .expression + .operator + .children() + .len(); + vec![Vec::new(); inputs] + }) + .collect(); + for (_, edge) in physical.edges() { + edges_into[edge.consumer_candidate_id.0][edge.input_index_of_consumer].push(edge); + } + for (id, inputs) in edges_into.iter().enumerate() { + let candidate = &physical.physical_candidates[id]; + let logical = memo.candidate(candidate.logical_candidate_id); + let _ = writeln!( + out, + " {} {}", + physical_candidate_text(physical, PhysicalCandidateId(id)), + operator_label(&logical.expression.operator) + ); + let groups = logical.expression.operator.children(); + for (input, edges) in inputs.iter().enumerate() { + let floor = + match logical.input_requirements[input].parameter_floor_for_required_accuracy() { + Some(floor) => format!(", requires θ ⪰ {}", parameters_label(floor)), + None => String::new(), + }; + let _ = writeln!(out, " input {input} <- G{}{floor}:", groups[input].0); + let rows = edges + .iter() + .map(|edge| { + let producer = physical_candidate_text(physical, edge.producer_candidate_id); + match edge_rejection(physical, edge) { + None => vec![producer, "✓".to_owned()], + Some(reason) => vec![producer, format!("✗ {reason}")], + } + }) + .collect(); + write_rows(out, " ", rows); + } + } + let output_groups: Vec = physical + .query_roots + .iter() + .map(|root| match root { + QueryRoot::Operator(group) => format!("G{}", group.0), + scalar => format!("{scalar:?}"), + }) + .collect(); + let _ = writeln!(out, "query_roots: [{}]", output_groups.join(", ")); + let _ = writeln!( + out, + "pruned by Stage 2 ({}):", + physical.pruned_candidates.len() + ); + let rows = physical + .pruned_candidates + .iter() + .map(|pruned| { + let key = &pruned.candidate; + vec![ + format!( + "G{}[{}]", + key.logical_candidate_id.group.0, key.logical_candidate_id.index_in_group + ), + physical_properties_text(&key.physical_properties), + format!("{:?}", pruned.reason), + ] + }) + .collect(); + write_rows(out, " ", rows); } /// Stage 3's selection: the search's outcome, the selected DAG (each node's -/// candidate, operator and producer nodes), the plan's cost with each plan -/// node's charge, and each query's accepted accuracy; or why none was -/// selected. +/// physical candidate, its operator and producer nodes), the plan's cost +/// with each realized node's charge, each query's accepted accuracy, and +/// the candidates Stage 3 pruned; or why none was selected. fn write_selection(out: &mut String, stages: &PlanningStagesRun) { - let _ = (out, stages); - todo!("#1207 PR 9: print the selected DAG over the new physical candidates") -} - -/// The label of `group`'s own operator, without its input groups. -fn group_label(group: &MemoGroup) -> String { - let _ = group; - todo!("#1207 PR 9: label a group by its expression") + let run = &stages.run; + let selection = match &run.selection { + Ok(selection) => selection, + Err(error) => { + let _ = writeln!(out, "error: {error}"); + return; + } + }; + let report = &selection.search_report; + let _ = writeln!( + out, + "search: {:?}, {} MILP variables, {} constraints, {} ms solving", + report.status, report.milp_variables, report.milp_constraints, report.solver_ms + ); + let dag = &selection.selected_dag; + let physical = run.physical_asap_candidates.as_ref(); + let rows = dag + .candidate_of_node + .iter() + .enumerate() + .map(|(node, candidate)| { + let mut inputs: Vec<_> = dag + .edges + .iter() + .filter(|edge| edge.consumer.0 == node) + .collect(); + inputs.sort_by_key(|edge| edge.input_index_of_consumer); + let producers: Vec = inputs + .iter() + .map(|edge| format!("node{}", edge.producer.0)) + .collect(); + let (what, operator) = physical.map_or_else( + || (format!("C{}", candidate.0), String::new()), + |physical| { + let logical = physical.physical_candidates[candidate.0].logical_candidate_id; + ( + physical_candidate_text(physical, *candidate), + operator_label( + &physical + .logical_candidates + .memo + .candidate(logical) + .expression + .operator, + ), + ) + }, + ); + vec![format!("node{node}:"), what, operator, reads(&producers)] + }) + .collect(); + write_rows(out, "", rows); + let outputs: Vec = dag + .node_of_output_reference + .iter() + .map(|node| format!("node{}", node.0)) + .collect(); + let _ = writeln!(out, "node_of_output_reference: [{}]", outputs.join(", ")); + let cost = &selection.cost; + let _ = writeln!( + out, + "cost_per_second: {}", + cost.cost_per_second + .map_or("none".to_owned(), |cost| format!("{cost:.6}")) + ); + // Keyed by the realized plan's node ids. + let rows = cost + .per_node + .iter() + .map(|(node, charge)| { + vec![ + format!("#{node}"), + format!("{:?}", charge.operator), + format!("{:?}", charge.timing), + charge + .cost_per_second + .map_or("none".to_owned(), |cost| format!("{cost:.6}")), + charge.detail.clone(), + ] + }) + .collect(); + write_rows(out, " ", rows); + let _ = writeln!(out, "accepted accuracy:"); + for (query, accepted) in selection.accepted_accuracy_per_query.iter().enumerate() { + let _ = writeln!(out, " q{}: {accepted}", query + 1); + } + let _ = writeln!( + out, + "pruned by Stage 3 ({}):", + selection.pruned_candidates.len() + ); + let rows = selection + .pruned_candidates + .iter() + .map(|pruned| { + vec![ + physical.map_or_else( + || format!("C{}", pruned.candidate.0), + |physical| physical_candidate_text(physical, pruned.candidate), + ), + format!("{:?}", pruned.reason), + ] + }) + .collect(); + write_rows(out, " ", rows); } #[cfg(test)] From 3c8bc32c7782a6b20dbb77b3008e6d599425fda9 Mon Sep 17 00:00:00 2001 From: zzylol <50204836+zzylol@users.noreply.github.com> Date: Sat, 7 Nov 2026 03:49:16 +0000 Subject: [PATCH 02/11] fix(devtools): planner_fuzz costs witnesses with asap_cost::plan_cost instead of planning them again (#1207 PR 9) --- crates/devtools/src/planner_fuzz/README.md | 35 +-- crates/devtools/src/planner_fuzz/mod.rs | 213 ++++++++++++------ crates/devtools/src/planner_fuzz/relations.rs | 60 +++-- crates/devtools/src/planner_fuzz/report.rs | 19 +- crates/devtools/tests/planner_fuzz.rs | 34 +-- 5 files changed, 216 insertions(+), 145 deletions(-) diff --git a/crates/devtools/src/planner_fuzz/README.md b/crates/devtools/src/planner_fuzz/README.md index 044dbf232..4b3e90f33 100644 --- a/crates/devtools/src/planner_fuzz/README.md +++ b/crates/devtools/src/planner_fuzz/README.md @@ -102,31 +102,32 @@ cost(W ∪ {q'}) − cost(W) ≤ derive_cost + max(rel_tol · cost(W ∪ {q'}), derive_cost = cost(witness) − cost(W's plan) ``` -**How `derive_cost` is computed.** It comes from Stage 3's per-node prices, -never from a guess: - -1. Stage 2 and Stage 3 implement and price the witness the same way they price - any candidate. Each physical properties assignment goes through - `optimize_physical_asap` and `select_plan`, using the same cost model, - deployment capabilities and accuracy checks as the search. The cheapest assignment is kept. -2. `W`'s selected logical plan is priced the same way. This gives the witness +**How `derive_cost` is computed.** It comes from the cost model's per-node +costs, never from a guess: + +1. The witness is costed by `asap_cost::plan_cost`, as Stage 3 costs a + selected plan, with the same cost inputs as the search. Each node of `W`'s + plan keeps the timing, lifetime and θ its selection gave it; each derived + node runs at query time, not materialized. The witness holds ASAP + operators, which Pass 1 does not take as input, so it is not planned + again, and its accuracy is not checked: each relation derives `q'` at + `q`'s target or a looser one. +2. `W`'s selected plan is costed the same way. This gives the witness a reference point on the same footing. 3. `derive_cost` is the difference between the two. Under cost model 1, a - candidate's cost is the sum of its nodes' prices. So `derive_cost` is the - price of the derived operator alone, plus any change it causes in the - shared nodes' prices (for example, a shared node now materialized once - instead of computed per reader). + plan's cost is the sum of its nodes' costs. So `derive_cost` is the + cost of the derived operator alone, plus any change it causes in the + shared nodes' costs (for example, a shared node read once more). 4. Each draft also lists the witness's per-node cost of the nodes only `q'` reads, and their operators. Two rules decide whether a check counts: -- A witness that Stage 2, Stage 3 or validation rejects makes the check +- A witness that cannot be built, exported or costed makes the check *inconclusive*, never violated. - A `Filter` on a group key keeps its input's guarantee in the witness. This is because whole groups selected by an exact key keep each remaining row's - bound. Stage 1's guarantee composition gives no guarantee to any filter over - approximate rows. + bound; the draft notes when the witness relies on it. | Relation | `q'` from `q` | Derived by (witness) | |---|---|---| @@ -137,7 +138,7 @@ Two rules decide whether a check counts: | `e-other-quantile-rank` | `q` at another rank | `q`'s estimate (or exact quantile aggregate) at the other rank, same input | | `f-exact-duplicate` | `q` | reading `q`'s node | | `g-outer-over-result` | an operator over `q`, by `q`'s outer operator: `topk(3, q)` (sum), `bottomk(3, q)` (count), `max(q)` (max), `quantile(0.5, q)` (avg), `q > 0` (min, quantile) | the operator's lowering grafted onto `q`'s node | -| `h-other-statistic` | SQL, ungrouped: another frequency statistic of `q`'s column (distinct count → row count, L2 → distinct count, entropy → L2) | a `SummaryEstimate` of it from `q`'s state, when its family answers it (`FamilyCapability::answers`); or `W ∪ {q'}` planned with UnivMon as the only sketch family, priced with every family | +| `h-other-statistic` | SQL, ungrouped: another frequency statistic of `q`'s column (distinct count → row count, L2 → distinct count, entropy → L2) | a `SummaryEstimate` of it from `q`'s state, when its family answers it (`FamilyCapability::answers`); or `W ∪ {q'}` planned with UnivMon as the only sketch family, costed with every family | | `i-other-repeat-interval` | `q` at a longer repeat interval | reading `q`'s node | | `j-smaller-topk` | `q`'s top-k at k = 3 | `q`'s `Limit` / `TopK` at 3 over the same input | | `k-union-of-selections` | `q` over `label =~ "v1\|v2"`, with `q`'s `v2` twin added to `W` | `SummaryMerge` of the two states, then `q`'s estimate | @@ -161,7 +162,7 @@ Two rules decide whether a check counts: | `reordered` | queries in reverse order | `|cost(W') − cost(W)| ≤ tol` | | `disjoint-copy` | `W` plus a copy over renamed sources | `|cost(W') − 2·cost(W)| ≤ tol` | -When a monotonicity relation is violated, the draft also prices the other +When a monotonicity relation is violated, the draft also costs the other side's logical plan for this side's workload. That is a concrete plan the search could have selected. diff --git a/crates/devtools/src/planner_fuzz/mod.rs b/crates/devtools/src/planner_fuzz/mod.rs index 9823c4b8b..7f2368aa0 100644 --- a/crates/devtools/src/planner_fuzz/mod.rs +++ b/crates/devtools/src/planner_fuzz/mod.rs @@ -7,18 +7,22 @@ //! from `q`'s result or state (the same query with a looser accuracy //! target, a filter on a group key, a coarser grouping, ...), it builds a //! *witness*: `W`'s selected logical plan plus `q'` derived from `q`'s -//! node by one operator. Stage 2 and Stage 3 implement and price the -//! witness exactly as they price any candidate, and the relation +//! node by one operator. The witness is costed by `asap_cost::plan_cost`, +//! as Stage 3 costs a selected plan: each node of `W`'s plan with the +//! timing, lifetime and θ its selection gave it, each derived node at query +//! time, not materialized (the witness holds ASAP operators, which Pass 1 +//! does not take as input, so it is not planned again). The relation //! //! ```text //! cost(W ∪ {q'}) − cost(W) ≤ derive_cost + tolerance, -//! derive_cost = cost(witness) − cost(W's plan priced the same way) +//! derive_cost = cost(witness) − cost(W's plan costed the same way) //! ``` //! -//! must hold. `derive_cost` is what Stage 3 charges for the derived -//! operator alone (its per-node price, plus any change it causes in the -//! shared nodes' prices, such as a shared node now materialized); it is -//! never a guess. A violation means a cheaper plan for `W ∪ {q'}` exists +//! must hold. `derive_cost` is what the cost model charges for the derived +//! operator alone (its per-node cost, plus any change it causes in the +//! shared nodes' costs, such as a shared node read once more); it is never +//! a guess. The witness's accuracy is not checked: each relation derives +//! `q'` at `q`'s accuracy target or a looser one. A violation means a cheaper plan for `W ∪ {q'}` exists //! that the planner did not select. Monotonicity and invariance relations //! (tightening accuracy, adding a query or dropping raw retention never //! lowers cost; relaxing a latency bound never raises it; renaming, @@ -40,12 +44,15 @@ use std::rc::Rc; use serde::{Deserialize, Serialize}; use serde_json::{json, Value}; -use asap_cost::CostInputs; +use asap_cost::{materialized_tumbling_window_chains, node_map, plan_cost, CostInputs}; use asap_planner::{PlanSearchSettings, PlanningModels}; use asap_types::deployment_capabilities::DeploymentCapabilities; -use asap_types::ir::properties::AccuracyTarget; +use asap_types::ir::flat::flatten; +use asap_types::ir::physical_export::{physical_asap_dag_with_assignments, ExportedNodeAssignment}; +use asap_types::ir::properties::{AccuracyTarget, ExecutionTiming}; use asap_types::ir::schema::sketch::SketchAlgorithm; -use asap_types::ir::QueryRoot; +use asap_types::ir::{OperatorNode, QueryRoot}; +use asap_types::physical::{Lifetime, PhysicalProperties, StorageMedium}; use asap_types::workload::{ DataArrival, DataWorkload, PlanningWorkload, QueryLanguage, QueryWorkload, RepeatingEntry, SqlDialect, @@ -340,19 +347,22 @@ impl FuzzSettings { pub struct Planned { /// The selected physical plan's stable archive ID. pub selected: String, - /// Its price per second under cost model 1. + /// Its cost per second under cost model 1. pub cost_per_second: f64, /// The frontends' roots, one per query. pub stage0_roots: Vec, - /// The selected Stage 1 (logical) candidate's roots, the plan a witness - /// extends; absent only when the selected logical plan is unavailable. + /// The selected plan's roots, as the realizer built them: the plan a + /// witness extends; absent only when no plan is realized. pub logical_roots: Option>, + /// What the realizer assigned each node of `logical_roots` (timing, + /// lifetime, θ, coverage), read back from the realized plan's DAG. + assignments: Vec<(Rc, ExportedNodeAssignment)>, } -/// A plan priced by Stage 2 and Stage 3 outside the search: the cheapest -/// physical properties assignment of given logical roots. +/// A plan costed outside the search ([`Planner::cost`]): given roots with +/// the assignments their plannings gave their nodes. #[derive(Debug, Clone, PartialEq, Serialize)] -pub struct Priced { +pub struct Costed { pub selected: String, pub cost_per_second: f64, /// The nodes only the last root reads: in a witness, the operators @@ -369,12 +379,31 @@ pub struct PrivateNodes { pub operators: Vec, } -/// Plans and prices workloads, caching each workload's plan and the -/// reference price of its selected logical plan. +/// The nodes the last of `roots` reads that another root reads too. +fn shared_with_last_root(roots: &[QueryRoot]) -> BTreeSet<*const OperatorNode> { + let reached = |root: &QueryRoot| -> BTreeSet<*const OperatorNode> { + root.operator_refs() + .into_iter() + .flat_map(|node| OperatorNode::reachable(node)) + .map(|node| Rc::as_ptr(&node)) + .collect() + }; + let Some((last, others)) = roots.split_last() else { + return BTreeSet::new(); + }; + let others: BTreeSet<_> = others.iter().flat_map(reached).collect(); + reached(last).intersection(&others).copied().collect() +} + +/// Plans and costs workloads, caching each workload's plan and the +/// reference cost of its selected plan. pub struct Planner { pub settings: FuzzSettings, cache: HashMap, String>>, - reference_prices: HashMap>, + reference_costs: HashMap>, + /// Every planned node's assignment, by the node's address; the cached + /// [`Planned`]s hold the nodes, so no address is reused. + assignment_of_node: HashMap<*const OperatorNode, ExportedNodeAssignment>, } impl Planner { @@ -382,7 +411,8 @@ impl Planner { Self { settings, cache: HashMap::new(), - reference_prices: HashMap::new(), + reference_costs: HashMap::new(), + assignment_of_node: HashMap::new(), } } @@ -409,6 +439,12 @@ impl Planner { return planned.clone(); } let planned = self.plan_uncached(workload).map(Rc::new); + if let Ok(planned) = &planned { + for (node, assignment) in &planned.assignments { + self.assignment_of_node + .insert(Rc::as_ptr(node), assignment.clone()); + } + } self.cache.insert(key, planned.clone()); planned } @@ -443,62 +479,98 @@ impl Planner { .cost .cost_per_second .ok_or("no cost per second (cost model 3)")?; + // The realizer exported its roots in flattened order: node `i` of + // the flattened roots is node `i` of the realized DAG. + let assignments = match &run.run.selected_physical_plan { + Some(realized) => { + let (_, nodes) = flatten(&realized.plan.roots); + nodes + .into_iter() + .zip(&realized.plan.dag.nodes) + .map(|(node, exported)| { + let physical_properties = PhysicalProperties::new( + exported.output_state.timing, + exported.lifetime, + ) + .map_err(|e| format!("realized node {}: {e}", exported.id))?; + Ok(( + node, + ExportedNodeAssignment { + physical_properties, + parameters: exported.parameters.clone(), + summary_coverage: exported.summary_coverage.clone(), + }, + )) + }) + .collect::>()? + } + None => Vec::new(), + }; Ok(Planned { selected: "selected".into(), cost_per_second, stage0_roots: roots, logical_roots: run.run.selected_plan.as_ref().cloned(), + assignments, }) } - /// Stages 0–3 over the witness plan `roots` of `workload`'s queries - /// (one root per query, in order), with the same models as - /// [`plan`](Self::plan): the witness's own operators are hash-consed - /// into the memo and Stage 3 selects the cheapest plan of them, each - /// summary at the θ its consumers' parameter floors allow. The cost is - /// that plan's, and `derived_root` the nodes of the realized plan only - /// the last root reads. `last_root_is_key_filter` is accepted for the - /// relations' interface; Stage 3 checks accuracy at the roots - /// (constraint (K)). - pub fn price( - &self, - workload: &FuzzWorkload, - roots: &[QueryRoot], - last_root_is_key_filter: bool, - ) -> Result { - let _ = last_root_is_key_filter; + /// The cost of the plan `roots` of `workload`'s queries (one root per + /// query, in order) under the same cost inputs as [`plan`](Self::plan), + /// by `asap_cost::plan_cost` as Stage 3 costs a selected plan: each node + /// a planning of this planner realized keeps the timing, lifetime, θ and + /// coverage it was given; every other node (a witness's derived + /// operators) runs at query time, not materialized. A query-time node + /// that is not materialized and is read by the last root and another + /// is materialized for one evaluation instead (`OneEvaluation(Memory)`): + /// built once per evaluation and read by both, as the planner may + /// select (the derived query runs with the query it derives from). + /// `derived_root` is the nodes only the last root reads. + pub fn cost(&self, workload: &FuzzWorkload, roots: &[QueryRoot]) -> Result { let planning = workload.planning_workload(); let entries: Vec<_> = planning.query_workload.entries().collect(); let cost_inputs = self.cost_inputs(); - let deployment = workload.deployment(); - let models = PlanningModels::builtin() - .with_cost_inputs(&cost_inputs) - .with_deployment_capabilities(&deployment) - .with_ignore_accuracy_guarantees(!self.settings.enforce_accuracy_guarantees); - let run = run_search_over( - roots.to_vec(), - &entries, + let at_query_time = |lifetime| { + PhysicalProperties::new(ExecutionTiming::QueryTime, lifetime) + .expect("query time is valid with every lifetime") + }; + let derived = ExportedNodeAssignment { + physical_properties: at_query_time(Lifetime::None), + parameters: None, + summary_coverage: None, + }; + let shared = shared_with_last_root(roots); + let (dag, _) = physical_asap_dag_with_assignments(roots, &|node| { + let mut assignment = self + .assignment_of_node + .get(&Rc::as_ptr(node)) + .cloned() + .unwrap_or_else(|| derived.clone()); + if assignment.physical_properties == at_query_time(Lifetime::None) + && shared.contains(&Rc::as_ptr(node)) + { + assignment.physical_properties = + at_query_time(Lifetime::OneEvaluation(StorageMedium::Memory)); + } + assignment + }) + .map_err(|e| format!("witness: {e}"))?; + let recurrence: Vec<_> = entries.iter().map(|e| e.recurrence.clone()).collect(); + let ranges: Vec<_> = entries.iter().map(|e| e.range_evaluation).collect(); + let (cost, _) = plan_cost( + &dag, + &node_map(&dag), + &materialized_tumbling_window_chains(&dag), + &recurrence, + &ranges, &workload.data, - models, - PlanSearchSettings::default(), + &cost_inputs, + cost_inputs.frozen_calibration_factor.unwrap_or(1.0), ) - .map_err(|e| format!("witness: {e}"))?; - let selection = run - .run - .selection - .as_ref() - .map_err(|e| format!("witness selection: {e}"))?; - let cost = &selection.cost; + .map_err(|(node, e)| format!("witness: node {node}: {e}"))?; let cost_per_second = cost .cost_per_second .ok_or("no cost per second (cost model 3)")?; - let dag = &run - .run - .selected_physical_plan - .as_ref() - .ok_or("a selection has a realized plan")? - .plan - .dag; let mut inputs: BTreeMap<_, Vec<_>> = BTreeMap::new(); for edge in &dag.edges { inputs.entry(edge.consumer).or_default().push(edge.producer); @@ -520,7 +592,7 @@ impl Planner { .filter(|node| others.iter().all(|set| !set.contains(node))) .filter_map(|node| cost.per_node.get(node)) .collect(); - Ok(Priced { + Ok(Costed { selected: "selected".into(), cost_per_second, derived_root: PrivateNodes { @@ -533,20 +605,19 @@ impl Planner { }) } - /// [`price`](Self::price) of `workload`'s selected logical plan - /// `roots`, cached per workload: every marginal check of a case prices - /// the same `W`. - pub fn reference_price( + /// [`cost`](Self::cost) of `workload`'s selected plan `roots`, cached + /// per workload: every marginal check of a case costs the same `W`. + pub fn reference_cost( &mut self, workload: &FuzzWorkload, roots: &[QueryRoot], - ) -> Result { + ) -> Result { let key = serde_json::to_string(workload).expect("a workload serializes"); - if let Some(priced) = self.reference_prices.get(&key) { - return priced.clone(); + if let Some(costed) = self.reference_costs.get(&key) { + return costed.clone(); } - let priced = self.price(workload, roots, false); - self.reference_prices.insert(key, priced.clone()); - priced + let costed = self.cost(workload, roots); + self.reference_costs.insert(key, costed.clone()); + costed } } diff --git a/crates/devtools/src/planner_fuzz/relations.rs b/crates/devtools/src/planner_fuzz/relations.rs index 9b6d71ae9..285909330 100644 --- a/crates/devtools/src/planner_fuzz/relations.rs +++ b/crates/devtools/src/planner_fuzz/relations.rs @@ -29,7 +29,7 @@ use super::generate::{ label_value, looser, tighter, OuterAggregation, OuterOp, PromqlSpec, QuerySpec, RangeFunction, SqlAggregate, }; -use super::{FuzzQuery, FuzzWorkload, Language, Planned, Planner, Priced}; +use super::{Costed, FuzzQuery, FuzzWorkload, Language, Planned, Planner}; /// A metamorphic relation the tester checks. #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)] @@ -270,7 +270,7 @@ pub enum Witness { GraftWithOperand { text: String, operand: String }, /// `W ∪ {q'}` planned with UnivMon as the only sketch family, so the /// planner sizes one UnivMon for both statistics (its summary-capability - /// rule), priced with every family. + /// rule), costed with every family. UnivMonOnly, } @@ -304,7 +304,7 @@ pub struct Measurement { /// The derived or added query's text, for a relation that adds one. pub related_query: Option, /// The witness (marginal relations) or the confirming plan (a violated - /// monotonicity relation: the other side's logical plan priced for this + /// monotonicity relation: the other side's logical plan costed for this /// side). pub witness: Option, /// The bound `related_cost_per_second` was checked against, tolerance @@ -321,7 +321,7 @@ pub struct WitnessReport { pub derivation: Option, pub cost_per_second: f64, pub plan: String, - /// Marginal relations: `W`'s selected logical plan priced the same way. + /// Marginal relations: `W`'s selected logical plan costed the same way. pub base_reference_cost_per_second: Option, /// `cost_per_second − base_reference_cost_per_second`. pub derive_cost_per_second: Option, @@ -341,7 +341,7 @@ pub enum Outcome { Holds(Measurement), Violated(Measurement), /// Not applicable to this workload, a side failed to plan, or no - /// witness could be built or priced. + /// witness could be built or costed. Inconclusive { reason: String, }, @@ -1623,7 +1623,7 @@ pub fn related_workloads( Ok((w.clone(), related, None)) } -/// The other side's logical plan priced for `workload` (its first +/// The other side's logical plan costed for `workload` (its first /// `keep` roots): a plan for `workload` the search could have selected. fn confirming( planner: &Planner, @@ -1631,11 +1631,11 @@ fn confirming( roots: Option<&Vec>, keep: usize, ) -> Option { - let priced = planner.price(workload, &roots?[..keep], false).ok()?; + let costed = planner.cost(workload, &roots?[..keep]).ok()?; Some(WitnessReport { derivation: None, - cost_per_second: priced.cost_per_second, - plan: priced.selected, + cost_per_second: costed.cost_per_second, + plan: costed.selected, base_reference_cost_per_second: None, derive_cost_per_second: None, derived_node_cost_per_second: None, @@ -1711,11 +1711,11 @@ fn evaluate_inner(planner: &mut Planner, check: &Check) -> Result derive_cost + tolerance`) and its plain reading (the /// witness is cheaper than the planner's `W ∪ {q'}` by more than the -/// tolerance) fail, so a search that prices `W` below Stage 3's price of +/// tolerance) fail, so a search that costs `W` below Stage 3's cost of /// the same plan cannot make a false violation. fn evaluate_marginal( planner: &mut Planner, @@ -1730,12 +1730,12 @@ fn evaluate_marginal( return inconclusive("the search keeps no logical plan for W"); }; let base_reference = planner - .reference_price(base_workload, &base_roots) - .or_else(|e| inconclusive(format!("W's plan does not price: {e}")))?; - let mut best: Option<(Witness, Priced)> = None; + .reference_cost(base_workload, &base_roots) + .or_else(|e| inconclusive(format!("W's plan does not cost: {e}")))?; + let mut best: Option<(Witness, Costed)> = None; let mut failures = Vec::new(); for witness in &derived.witnesses { - let priced = witness_roots( + let costed = witness_roots( planner, witness, base_workload, @@ -1744,35 +1744,33 @@ fn evaluate_marginal( &base_roots, check.target, ) - .and_then(|roots| { - planner.price(related, &roots, matches!(witness, Witness::Filter { .. })) - }); - match priced { - Ok(priced) + .and_then(|roots| planner.cost(related, &roots)); + match costed { + Ok(costed) if best .as_ref() - .is_none_or(|(_, b)| priced.cost_per_second < b.cost_per_second) => + .is_none_or(|(_, b)| costed.cost_per_second < b.cost_per_second) => { - best = Some((witness.clone(), priced)) + best = Some((witness.clone(), costed)) } Ok(_) => {} Err(e) => failures.push(e), } } - let Some((witness, priced)) = best else { + let Some((witness, costed)) = best else { return inconclusive(format!("no witness: {}", failures.join("; "))); }; - let derive_cost = priced.cost_per_second - base_reference.cost_per_second; + let derive_cost = costed.cost_per_second - base_reference.cost_per_second; let delta = with.cost_per_second - base.cost_per_second; let tolerance = planner.settings.tolerance(with.cost_per_second); let violated = delta > derive_cost + tolerance - && with.cost_per_second > priced.cost_per_second + tolerance; + && with.cost_per_second > costed.cost_per_second + tolerance; let summary = format!( "cost(W ∪ {{q'}}) − cost(W) = {:.6} − {:.6} = {delta:.6}; derive_cost = {:.6} (witness {:.6} − W's plan {:.6}); tolerance {tolerance:.6}", with.cost_per_second, base.cost_per_second, derive_cost, - priced.cost_per_second, + costed.cost_per_second, base_reference.cost_per_second, ); let key_filter = matches!(witness, Witness::Filter { .. }); @@ -1784,15 +1782,15 @@ fn evaluate_marginal( related_query: Some(derived.query.text().to_string()), witness: Some(WitnessReport { derivation: Some(witness), - cost_per_second: priced.cost_per_second, - plan: priced.selected.clone(), + cost_per_second: costed.cost_per_second, + plan: costed.selected.clone(), base_reference_cost_per_second: Some(base_reference.cost_per_second), derive_cost_per_second: Some(derive_cost), - derived_node_cost_per_second: Some(priced.derived_root.cost_per_second), - derived_operators: priced.derived_root.operators.clone(), + derived_node_cost_per_second: Some(costed.derived_root.cost_per_second), + derived_operators: costed.derived_root.operators.clone(), key_filter_keeps_input_guarantee: key_filter, }), - bound_per_second: (base.cost_per_second + derive_cost).max(priced.cost_per_second) + bound_per_second: (base.cost_per_second + derive_cost).max(costed.cost_per_second) + tolerance, tolerance_per_second: tolerance, summary, diff --git a/crates/devtools/src/planner_fuzz/report.rs b/crates/devtools/src/planner_fuzz/report.rs index 330c8de94..0cbbde4c3 100644 --- a/crates/devtools/src/planner_fuzz/report.rs +++ b/crates/devtools/src/planner_fuzz/report.rs @@ -743,7 +743,7 @@ fn derivation_text(witness: &Witness) -> String { plan, planned with `W`" ), Witness::UnivMonOnly => { - "`W ∪ {q'}` planned with UnivMon as the only sketch family, priced with every family" + "`W ∪ {q'}` planned with UnivMon as the only sketch family, costed with every family" .into() } Witness::LongerWindow { window_ms, rollup } => { @@ -907,7 +907,7 @@ fn write_draft( "Witness: `W`'s plan with `q'` derived by {}", derivation_text(d) ), - None => "The other side's plan, priced for this workload".into(), + None => "The other side's plan, costed for this workload".into(), }; text.push_str(&format!( "| {label} | `{}` | {:.6} |\n", @@ -923,7 +923,7 @@ fn write_draft( match witness.and_then(|w| w.derive_cost_per_second.map(|d| (w, d))) { Some((w, derive_cost)) => text.push_str(&format!( "**Expected:** a candidate for `{related_name}` costing at most about {:.6} per second \ - (the witness): `W`'s plan ({:.6} as Stage 3 prices it) plus `q'` derived for \ + (the witness): `W`'s plan ({:.6} as `asap_cost::plan_cost` costs it) plus `q'` derived for \ {derive_cost:.6}. Of that, the nodes only `q'` reads cost {:.6} ({}).\n\n", w.cost_per_second, w.base_reference_cost_per_second.unwrap_or_default(), @@ -939,7 +939,7 @@ fn write_draft( check.relation.statement(), witness .map(|w| format!( - " The other side's plan prices at {:.6} per second for this workload.", + " The other side's plan costs at {:.6} per second for this workload.", w.cost_per_second )) .unwrap_or_default() @@ -948,9 +948,10 @@ fn write_draft( text.push_str("## Why it happens\n\nNot diagnosed yet. "); if marginal { text.push_str( - "The witness is priced by Stage 2 and Stage 3 (`optimize_physical_asap`, \ - `select_plan`) with the same models as the search, so the cheaper plan passes \ - Stage 3's checks, but the search did not select it.", + "The witness is costed by `asap_cost::plan_cost` with the same cost inputs as \ + the search, its nodes from `W`'s plan with the timing, lifetime and parameters \ + that plan gave them, but the search did not select it. Its accuracy is not \ + checked: `q'` is derived at `q`'s target or a looser one.", ); if witness.is_some_and(|w| w.key_filter_keeps_input_guarantee) { text.push_str( @@ -967,8 +968,8 @@ fn write_draft( ); if witness.is_some() { text.push_str( - " The other side's logical plan, priced for this workload by Stage 2 and \ - Stage 3, is that plan.", + " The other side's plan, costed for this workload by \ + `asap_cost::plan_cost`, is that plan.", ); } } diff --git a/crates/devtools/tests/planner_fuzz.rs b/crates/devtools/tests/planner_fuzz.rs index 73df7cc00..9cc43468a 100644 --- a/crates/devtools/tests/planner_fuzz.rs +++ b/crates/devtools/tests/planner_fuzz.rs @@ -219,7 +219,7 @@ fn promql( } /// The witness `relation` builds for `workload`'s query, which must build -/// and price (the check is conclusive). +/// and cost (the check is conclusive). fn witness_of(relation: Relation, workload: FuzzWorkload) -> Witness { match check(relation, workload, 0) { Outcome::Holds(m) | Outcome::Violated(m) => m @@ -230,10 +230,10 @@ fn witness_of(relation: Relation, workload: FuzzWorkload) -> Witness { } } -/// The sketch rollup witness builds and prices for a grouped quantile: +/// The sketch rollup witness builds and costs for a grouped quantile: /// a `SummaryMerge` with `group_by` over the finer per-group KLL. #[test] -fn sketch_rollup_witness_prices_for_a_grouped_quantile() { +fn sketch_rollup_witness_costs_for_a_grouped_quantile() { let q = promql( "m_gauge", None, @@ -247,10 +247,10 @@ fn sketch_rollup_witness_prices_for_a_grouped_quantile() { ); } -/// The exact rollup witness builds and prices for a grouped count (a sum +/// The exact rollup witness builds and costs for a grouped count (a sum /// of the finer counts). #[test] -fn exact_rollup_witness_prices_for_a_grouped_count() { +fn exact_rollup_witness_costs_for_a_grouped_count() { let q = promql( "m_gauge", None, @@ -262,9 +262,9 @@ fn exact_rollup_witness_prices_for_a_grouped_count() { )); } -/// The quantile-rank witness builds and prices from the same KLL. +/// The quantile-rank witness builds and costs from the same KLL. #[test] -fn quantile_rank_witness_prices_from_the_same_sketch() { +fn quantile_rank_witness_costs_from_the_same_sketch() { let q = promql("m_gauge", Some(RangeFunction::QuantileOverTime(0.9)), None); assert_eq!( witness_of(Relation::OtherQuantileRank, generated(q, true)), @@ -272,9 +272,9 @@ fn quantile_rank_witness_prices_from_the_same_sketch() { ); } -/// The smaller top-k witness builds and prices over the same input. +/// The smaller top-k witness builds and costs over the same input. #[test] -fn smaller_topk_witness_prices_over_the_same_input() { +fn smaller_topk_witness_costs_over_the_same_input() { let q = promql( "m_counter", Some(RangeFunction::Rate), @@ -287,10 +287,10 @@ fn smaller_topk_witness_prices_over_the_same_input() { } /// (l): a filtered share of a grouped rate reads the rate from q's result -/// (ASAPWorkloads #12); the plain graft cannot price (its numerator is an +/// (ASAPWorkloads #12); the plain graft cannot cost (its numerator is an /// unplanned raw rate), so the witness planned with the operand must. #[test] -fn ratio_witness_prices_over_the_shared_rate() { +fn ratio_witness_costs_over_the_shared_rate() { let q = promql( "m_counter", Some(RangeFunction::Rate), @@ -304,7 +304,7 @@ fn ratio_witness_prices_over_the_shared_rate() { /// (l), avg as sum / count: the sum is read from q's result. #[test] -fn sum_over_count_witness_prices_over_the_shared_sum() { +fn sum_over_count_witness_costs_over_the_shared_sum() { let q = promql( "m_gauge", Some(RangeFunction::SumOverTime), @@ -318,7 +318,7 @@ fn sum_over_count_witness_prices_over_the_shared_sum() { /// (o): `increase` is q's `rate` times the window. #[test] -fn increase_witness_prices_as_the_scaled_rate() { +fn increase_witness_costs_as_the_scaled_rate() { let q = promql( "m_counter", Some(RangeFunction::Rate), @@ -332,7 +332,7 @@ fn increase_witness_prices_as_the_scaled_rate() { /// (g): a threshold over a grouped minimum reads q's result. #[test] -fn threshold_witness_prices_over_the_result() { +fn threshold_witness_costs_over_the_result() { let q = promql( "m_gauge", Some(RangeFunction::MaxOverTime), @@ -346,7 +346,7 @@ fn threshold_witness_prices_over_the_result() { /// (m): a longer window lengthens q's tumbling-window chain of exact sums. #[test] -fn longer_window_witness_prices_over_a_lengthened_chain() { +fn longer_window_witness_costs_over_a_lengthened_chain() { let q = promql( "m_gauge", Some(RangeFunction::SumOverTime), @@ -360,7 +360,7 @@ fn longer_window_witness_prices_over_a_lengthened_chain() { /// (n): the lengthened chain rolled up to one key fewer. #[test] -fn longer_window_rollup_witness_prices() { +fn longer_window_rollup_witness_costs() { let q = promql( "m_gauge", Some(RangeFunction::SumOverTime), @@ -379,7 +379,7 @@ fn longer_window_rollup_witness_prices() { /// frequency L2 reads one UnivMon, from q's own state or from `W ∪ {q'}` /// planned with UnivMon only (planner-layering Example 2). #[test] -fn other_frequency_statistic_witness_prices_from_one_univmon() { +fn other_frequency_statistic_witness_costs_from_one_univmon() { use asap_devtools::planner_fuzz::generate::generated_workload; use asap_devtools::planner_fuzz::{FuzzQuery, Language}; use asap_types::ir::properties::AccuracyTarget; From b93c5a48cf32c7974aa7098d233a0f650dcd2d3f Mon Sep 17 00:00:00 2001 From: zzylol <50204836+zzylol@users.noreply.github.com> Date: Sat, 7 Nov 2026 03:49:17 +0000 Subject: [PATCH 03/11] =?UTF-8?q?feat(devtools):=20viewer=20document=20wit?= =?UTF-8?q?h=20memo=20candidates,=20physical=20edges=20with=20=CE=B1=20and?= =?UTF-8?q?=20every=20stage's=20pruned=20candidates;=20tests=20adapted=20(?= =?UTF-8?q?#1207=20PR=209)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/devtools/src/bin/asap_planner.rs | 6 +- crates/devtools/tests/asap_planner.rs | 287 ++++++++++-------- .../devtools/tests/asap_planner_acceptance.rs | 19 +- docs/user_guide_docs/asap-planner.md | 2 +- tools/dag-viewer/README.md | 4 +- tools/dag-viewer/app.js | 2 +- tools/dag-viewer/enumeration.js | 2 +- tools/dag-viewer/index.html | 2 +- tools/dag-viewer/server.py | 4 +- tools/dag-viewer/stages.js | 4 +- tools/dag-viewer/test_server.py | 2 +- 11 files changed, 182 insertions(+), 152 deletions(-) diff --git a/crates/devtools/src/bin/asap_planner.rs b/crates/devtools/src/bin/asap_planner.rs index 9bd94d559..374277bda 100644 --- a/crates/devtools/src/bin/asap_planner.rs +++ b/crates/devtools/src/bin/asap_planner.rs @@ -7,7 +7,7 @@ // Runs the planner stages over a workload up to and including // `--run-until` (`stage0`, `stage1_pass1`, `stage1_pass2`, `stage2` or // `stage3`) and writes each stage's output, as text (`--format text`, the default; -// `asap_devtools::planning_stages_text`) or as an `asap-stage-pipeline/v1` +// `asap_devtools::planning_stages_text`) or as an `asap-stage-pipeline/v2` // document for the Stage Viewer (`--format json`), to `--out` or standard // output. // @@ -308,7 +308,7 @@ fn document_of( match result { Ok(run) => Ok(document(queries, entries, &run)), Err(PlanningStagesError::Pass1(error)) => Ok(json!({ - "format": "asap-stage-pipeline/v1", + "format": "asap-stage-pipeline/v2", "run_until": run_until.name(), "workload": { "queries": queries }, "stage0_query_language_frontends": { "dag": export(roots) }, @@ -383,7 +383,7 @@ fn document(queries: Vec, entries: &[QueryWorkloadEntry], run: &PlanningS }); let stage3 = (until == RunUntil::Stage3).then(|| stage3_json(run, entries)); json!({ - "format": "asap-stage-pipeline/v1", + "format": "asap-stage-pipeline/v2", "run_until": until.name(), "workload": { "queries": queries }, "stage0_query_language_frontends": { "dag": export(&run.stage0_query_language_frontends) }, diff --git a/crates/devtools/tests/asap_planner.rs b/crates/devtools/tests/asap_planner.rs index 98f51f3da..f96038517 100644 --- a/crates/devtools/tests/asap_planner.rs +++ b/crates/devtools/tests/asap_planner.rs @@ -218,22 +218,6 @@ fn selected_physical(document: &Value, queries: usize) -> PhysicalASAPDAG { dag } -/// Stage 1's `pruned_candidates`: each candidate Pass 1 pruned, with its -/// reason, in pruning order. -fn pass1_pruned(document: &Value) -> Vec<(String, String)> { - document["stage1_logical_asap_optimization"]["pruned_candidates"] - .as_array() - .unwrap() - .iter() - .map(|pruned| { - ( - pruned["candidate"].as_str().unwrap().to_string(), - pruned["reason"].as_str().unwrap().to_string(), - ) - }) - .collect() -} - /// Every candidate label of the memo step `step`. fn memo_labels(document: &Value, step: &str) -> Vec { document["memo"]["steps"] @@ -257,7 +241,7 @@ fn memo_labels(document: &Value, step: &str) -> Vec { #[test] fn example1_document_validates_its_stage_dags() { let document = example_document("example1", &["--run-until", "stage3"]); - assert_eq!(document["format"], "asap-stage-pipeline/v1"); + assert_eq!(document["format"], "asap-stage-pipeline/v2"); let queries = document["workload"]["queries"].as_array().unwrap().len(); assert_eq!(queries, 2); validated_dag(&document["stage0_query_language_frontends"]["dag"], queries); @@ -296,11 +280,11 @@ fn example1_document_validates_its_stage_dags() { } /// A top-k partitioned by every label of its input has no item, so a heap -/// over it could not be composed; such a heap reads one row per item and -/// is pruned in Pass 1 (`TopKHeapOverOneRowPerItem`), listed under -/// `pruned_candidates`, and the selected plan's logical DAG composes. +/// over it could not be composed; Pass 1 offers no heap for it (a heap +/// would read one row per item), and the selected plan's logical DAG +/// composes. #[test] -fn a_topk_heap_over_one_row_per_item_is_pruned_with_its_reason() { +fn a_topk_heap_over_one_row_per_item_is_not_offered() { let document = document( &adhoc( &["topk by (job) (3, sum by (job) (rate(m[5m])))"], @@ -309,15 +293,10 @@ fn a_topk_heap_over_one_row_per_item_is_pruned_with_its_reason() { ), &["--run-until", "stage3", "--ignore-accuracy-guarantees"], ); - assert_eq!( - pass1_pruned(&document), - [ - ("CMS+heap".into(), "TopKHeapOverOneRowPerItem".into()), - ( - "CountSketch+heap".into(), - "TopKHeapOverOneRowPerItem".into() - ), - ] + let labels = memo_labels(&document, "pass1"); + assert!( + labels.iter().all(|label| !label.contains("WithHeap")), + "{labels:?}" ); let candidates = document["stage1_logical_asap_optimization"]["candidates"] .as_array() @@ -786,11 +765,6 @@ fn a_quantile_target_without_a_metric_accepts_rank_or_relative() { assert!(unset["workload"]["queries"][0]["requirements"] .get("default_metric") .is_some_and(Value::is_null)); - assert!( - pass1_pruned(&unset).is_empty(), - "{:?}", - pass1_pruned(&unset) - ); let labels = memo_labels(&unset, "pass1"); for family in ["Kll", "DDSketch"] { assert!( @@ -808,11 +782,9 @@ fn a_quantile_target_without_a_metric_accepts_rank_or_relative() { .is_string() ); + // A DDSketch states a relative error, which a rank target cannot + // read (the metric rule): only KLL or an exact plan is accepted. let rank = query(Some("rank")); - assert_eq!( - pass1_pruned(&rank), - [("DDSketch".into(), "NoErrorBoundForQueryTarget".into())] - ); let accepted = summary(&rank); assert!( accepted == "metric rank; accepted rank (Kll)" || accepted == "metric rank; accepted exact", @@ -821,9 +793,9 @@ fn a_quantile_target_without_a_metric_accepts_rank_or_relative() { } /// The `--cost-inputs` cost model decides how Example 4's candidates are -/// compared: cost model 1 (the default) selects a priced plan, and Stage 3's -/// selection MILP refuses cost models 2 and 3 with an error naming the -/// model (#888). +/// compared: cost model 1 (the default) selects a plan with a cost per +/// second, and Stage 3's selection MILP refuses cost models 2 and 3 with +/// an error saying it implements cost model 1 only (#888). #[test] fn the_cost_model_chooses_how_candidates_are_compared() { use asap_cost::{ClusterLimits, ClusterObjective, CostInputs, CostModel, ResourceUnitCost}; @@ -838,25 +810,22 @@ fn the_cost_model_chooses_how_candidates_are_compared() { let usage = selected(CostModel::UsageOverTime(ResourceUnitCost::illustrative())); assert!(selects_a_plan(&usage), "{usage}"); assert!(usage["cost"]["cost_per_second"].is_number()); - for (cost_model, name) in [ - ( - CostModel::ProvisionedCapacity(ResourceUnitCost::illustrative()), - "ProvisionedCapacity (cost model 2)", - ), - ( - CostModel::ClusterCapacity(ClusterLimits { - memory_bytes: 256_000_000_000, - disk_bytes: 1_000_000_000_000, - cpu_cores: None, - objective: ClusterObjective::LowestLatency, - }), - "ClusterCapacity (cost model 3)", - ), + for cost_model in [ + CostModel::ProvisionedCapacity(ResourceUnitCost::illustrative()), + CostModel::ClusterCapacity(ClusterLimits { + memory_bytes: 256_000_000_000, + disk_bytes: 1_000_000_000_000, + cpu_cores: None, + objective: ClusterObjective::LowestLatency, + }), ] { let refused = selected(cost_model); assert!(!selects_a_plan(&refused), "{refused}"); assert!( - refused["error"].as_str().unwrap().contains(name), + refused["error"] + .as_str() + .unwrap() + .contains("implements cost model 1 only"), "{refused}" ); } @@ -890,8 +859,7 @@ fn aws_fargate_prices_example_4_in_dollars() { /// the document's `deployment_capabilities` shows (defaults filled in; /// without the flag, every summary supported, raw data retained, no /// query-time result retained). For Pattern B with KLL only and query-time -/// results retained: no DDSketch candidate is offered, and Stage 1's -/// `pruned_candidates` says why. Without raw data, a plan is still selected +/// results retained: Pass 1 offers no DDSketch candidate. Without raw data, a plan is still selected /// with guarantees enforced, from materialized views. A deployment with an /// unknown field is refused. #[test] @@ -932,12 +900,13 @@ fn deployment_capabilities_flag_sets_the_capabilities_and_shows_them() { "query_time_results_retained": true, }) ); - // Pass 1 lists why DDSketch is gone. - assert_eq!( - pass1_pruned(&kll_kept), - [("DDSketch".into(), "UnsupportedByDeployment".into())] - ); - assert!(pass1_pruned(&default).is_empty()); + let has_ddsketch = |document: &Value| { + memo_labels(document, "pass1") + .iter() + .any(|l| l.contains("DDSketch")) + }; + assert!(!has_ddsketch(&kll_kept)); + assert!(has_ddsketch(&default)); assert!(selects_a_plan(&kll_kept["stage3_plan_selection"])); let physical = kll_kept["stage2_physical_asap_optimization"]["candidates"] .as_array() @@ -1057,12 +1026,12 @@ fn milp_lower_bound_is_consistent_with_the_selected_cost() { } } -/// The default is to enforce accuracy guarantees: Pass 1 prunes every -/// sketch candidate of an average of p99s, which has no guarantee -/// (`NoErrorBoundForQueryTarget`). With `--ignore-accuracy-guarantees`, the -/// selected sketch is accepted regardless of its guarantee and records why -/// the guarantee check would have rejected it. The document says which -/// mode it planned under, and a `--cost-inputs` file cannot carry the mode. +/// The default is to enforce accuracy guarantees: an average of p99s has +/// no guarantee from any sketch, so constraint (K) leaves only an exact +/// plan (or none). With `--ignore-accuracy-guarantees`, the selected sketch +/// is accepted regardless of its guarantee and records why the guarantee +/// check would have rejected it. The document says which mode it planned +/// under, and a `--cost-inputs` file cannot carry the mode. #[test] fn accuracy_guarantees_are_enforced_by_default_and_ignored_on_request() { let workload = adhoc( @@ -1070,31 +1039,33 @@ fn accuracy_guarantees_are_enforced_by_default_and_ignored_on_request() { json!({"max_error": 0.01, "failure_probability": 0.01, "accuracy_metric": "rank"}), &["x"], ); - let enforced = document(&workload, &["--run-until", "stage1_pass1"]); + let enforced = document(&workload, &["--run-until", "stage3"]); assert_eq!(enforced["accuracy_guarantees"], "enforced"); - let no_bound: Vec<&str> = enforced["stage1_logical_asap_optimization"]["pruned_candidates"] - .as_array() - .unwrap() - .iter() - .filter(|pruned| pruned["reason"] == "NoErrorBoundForQueryTarget") - .map(|pruned| pruned["candidate"].as_str().unwrap()) - .collect(); - assert!(!no_bound.is_empty(), "{enforced}"); + let selection = &enforced["stage3_plan_selection"]; + if selects_a_plan(selection) { + let accepted = &selection["accepted_accuracy_per_query"][0]; + assert_eq!(accepted["sketches"], json!([]), "{accepted}"); + } let ignored = document( &workload, &["--run-until", "stage3", "--ignore-accuracy-guarantees"], ); assert_eq!(ignored["accuracy_guarantees"], "ignored"); - assert!(pass1_pruned(&ignored).is_empty()); + // Accepted regardless of its guarantee; a sketch output records that + // it has none (here the exact plan is the cheapest, which needs none). let accepted = &ignored["stage3_plan_selection"]["accepted_accuracy_per_query"][0]; assert_eq!( accepted["accepted_regardless_of_guarantee"], true, "{accepted}" ); + let expected = match accepted["sketches"] == json!([]) { + true => Value::Null, + false => json!("no_accuracy_guarantee"), + }; assert_eq!( - accepted["guarantee_check_rejection"], - "no_accuracy_guarantee" + accepted["guarantee_check_rejection"], expected, + "{accepted}" ); let settings = TempFile::new(r#"{"ignore_accuracy_guarantees": true}"#); @@ -1270,7 +1241,7 @@ fn check_workload_example(root: &Path, example: &Value) { /// With no supported summaries declared, `asap_planner` uses the executor's /// families, as `plan_installable` does. CountSketch cannot answer a total, so -/// Pass 1 neither generates it for count nor reports it deployment-pruned. +/// Pass 1 does not offer it for count. #[test] fn undeclared_supported_summaries_default_to_the_executors_families() { let document = document( @@ -1289,7 +1260,6 @@ fn undeclared_supported_summaries_default_to_the_executors_families() { ); } assert!(labels.iter().all(|label| !label.contains("CountSketch"))); - assert!(pass1_pruned(&document).is_empty()); assert_eq!( document["deployment_capabilities"]["supported_summaries"], serde_json::to_value(asap_executor::supported_summary_families()).unwrap() @@ -1299,7 +1269,8 @@ fn undeclared_supported_summaries_default_to_the_executors_families() { /// Two windowed quantiles over one metric (Q1 over 1 m, Q2 over 5 m, both /// every 10 s): with a shared scan, Stage 2 also offers the scan built once /// per evaluation, which reads the 5 m window once (≈0.1364/s) instead of -/// once per query (0.2203/s); the selected plan costs at most 0.143/s. +/// once per query (0.2203/s); the selected plan reads the scan built once +/// per evaluation and costs at most 0.144/s. #[test] fn a_scan_two_queries_share_is_offered_built_once_per_evaluation() { let workload = json!({ @@ -1324,10 +1295,25 @@ fn a_scan_two_queries_share_is_offered_built_once_per_evaluation() { .as_array() .unwrap(); assert!(physical.iter().any(|p| p["id"] == SELECTED)); - let cost = document["stage3_plan_selection"]["cost"]["cost_per_second"] - .as_f64() + let selection = &document["stage3_plan_selection"]; + let cost = selection["cost"]["cost_per_second"].as_f64().unwrap(); + assert!(cost <= 0.144, "{cost}"); + // The scan's candidate built once per evaluation (group 0, the scan). + let candidates = document["stage2_physical_asap_optimization"]["physical_candidates"] + .as_array() .unwrap(); - assert!(cost <= 0.143, "{cost}"); + let selected_scans: Vec<&Value> = selection["selected_dag"]["candidate_of_node"] + .as_array() + .unwrap() + .iter() + .map(|id| &candidates[id.as_u64().unwrap() as usize]) + .filter(|candidate| candidate["group"] == 0) + .collect(); + assert_eq!(selected_scans.len(), 1, "{selected_scans:?}"); + assert_eq!( + selected_scans[0]["properties"]["lifetime"], + json!({"OneEvaluation": "Memory"}) + ); } /// The search is the candidate-connection search; its report has no @@ -1680,13 +1666,13 @@ fn a_classic_histogram_quantile_gets_a_selected_plan() { const MEMO_RATIO_OF_QUANTILES: &str = "../../tools/dag-viewer/memo-examples/promql/ratio-of-quantiles-5m.json"; -/// The `memo` section: the memo after each step and its node table, on the -/// issue's example with guarantees ignored (so Pass 1 keeps every sketch), -/// and with guarantees enforced the selected choice. +/// The `memo` section: the memo after each step, each candidate with its +/// operator over its input groups, $p^{\log}$ and one requirement per +/// input, on the issue's example with guarantees ignored; and with +/// guarantees enforced the selected candidates. #[test] -fn memo_section_lists_each_step_and_the_selected_choice() { +fn memo_section_lists_each_step_and_the_selected_candidates() { let path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join(MEMO_RATIO_OF_QUANTILES); - // Up to Stage 2: Stage 3 over every sketch candidate takes minutes. let document = document_of(&[ "--workload", path.to_str().unwrap(), @@ -1711,38 +1697,34 @@ fn memo_section_lists_each_step_and_the_selected_choice() { }; // The PromQL frontend gives each series its identity as a column, so the // two `quantile_over_time(0.5, data[5m])` have a unique key and share one - // group: 7 groups (scan, range, two quantile groups, ratio, sum, avg), - // 5 + 5 + 5 Pass 1 candidates (each quantile group: exact, DDSketch and - // a KLL sized for the whole result for the whole budget, DDSketch and a - // KLL for half of it). + // group: 7 groups at Stage 0 (scan, range, two quantile groups, ratio, + // sum, avg). Pass 1 adds the summary-state and readout groups (19) and + // one candidate per θ of the lists. assert_eq!(steps[0]["groups"].as_array().unwrap().len(), 7); assert_eq!(candidates(&steps[0]), 0); - assert_eq!(steps[1]["groups"].as_array().unwrap().len(), 7); - assert_eq!(candidates(&steps[1]), 15); - // The node table is a valid FlatDag (children before parents) holding - // each node once; every group's and candidate's `node` names a node of - // it, and each boundary names a node and one of the candidate's child - // groups. - let nodes = memo["nodes"].as_array().unwrap(); - validated_dag(&json!({ "nodes": nodes, "roots": [] }), 0); - let distinct: HashSet = nodes.iter().map(Value::to_string).collect(); - assert_eq!(distinct.len(), nodes.len()); - let in_table = |id: &Value| (id.as_u64().unwrap() as usize) < nodes.len(); + assert_eq!(steps[1]["groups"].as_array().unwrap().len(), 19); + assert_eq!(candidates(&steps[1]), 36); + // Every candidate is one operator over its input groups, with one + // requirement per input, and every group it reads is in the step. for step in steps { - for group in step["groups"].as_array().unwrap() { - assert!(in_table(&group["node"]) && group.get("dag").is_none()); + let groups = step["groups"].as_array().unwrap(); + for group in groups { + assert!(group.get("node").is_none() && group["operator"].is_object()); for candidate in group["candidates"].as_array().unwrap() { - assert!(in_table(&candidate["node"]) && candidate.get("dag").is_none()); let children = candidate["children"].as_array().unwrap(); - for (node, child) in candidate["group_of_node"].as_object().unwrap() { - assert!(node.parse::().unwrap() < nodes.len()); - assert!(children.contains(child)); - } + assert_eq!( + candidate["input_requirements"].as_array().unwrap().len(), + children.len() + ); + assert!(children + .iter() + .all(|child| (child.as_u64().unwrap() as usize) < groups.len())); + assert!(candidate["logical_properties"].is_object()); } } } - assert!(memo.get("selected_choice").is_none()); - // Every candidate of the selected choice exists in the last step. + assert!(memo.get("selected_candidates").is_none()); + // Every selected candidate exists in the last step. let enforced = document_of(&[ "--workload", path.to_str().unwrap(), @@ -1753,11 +1735,66 @@ fn memo_section_lists_each_step_and_the_selected_choice() { let last = memo["steps"].as_array().unwrap().last().unwrap()["groups"] .as_array() .unwrap(); - let choice = memo["selected_choice"].as_object().unwrap(); - assert!(!choice.is_empty()); - for (group, index) in choice { + let selected = memo["selected_candidates"].as_object().unwrap(); + assert!(!selected.is_empty()); + for (group, indices) in selected { let group = &last[group.parse::().unwrap()]; - assert!(index.as_u64().unwrap() < group["candidate_count"].as_u64().unwrap()); + for index in indices.as_array().unwrap() { + assert!(index.as_u64().unwrap() < group["candidate_count"].as_u64().unwrap()); + } + } +} + +/// Stage 2's `physical_candidates` list, per input, every producer of the +/// input group with $\alpha^{\log}$, $\alpha^{\mathrm{phys}}$ and the reason +/// when one is 0; the selected DAG's edges are marked, and Stage 2's pruned +/// candidates carry their properties and reason. +#[test] +fn stage2_lists_every_edge_with_its_alpha_and_rejection() { + let path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join(MEMO_RATIO_OF_QUANTILES); + let document = document_of(&[ + "--workload", + path.to_str().unwrap(), + "--run-until", + "stage3", + ]); + let stage2 = &document["stage2_physical_asap_optimization"]; + let candidates = stage2["physical_candidates"].as_array().unwrap(); + assert!(!candidates.is_empty()); + let (mut admissible, mut rejected, mut selected) = (0, 0, 0); + for candidate in candidates { + assert!(candidate["properties"]["timing"].is_string()); + for input in candidate["inputs"].as_array().unwrap() { + for edge in input["edges"].as_array().unwrap() { + assert!((edge["producer"].as_u64().unwrap() as usize) < candidates.len()); + let ok = edge["satisfies_logical_requirement"] == true + && edge["satisfies_physical_requirement"] == true; + assert_eq!(edge["rejection"].is_null(), ok, "{edge}"); + if ok { + admissible += 1; + } else { + rejected += 1; + assert!(edge["rejection"].as_str().unwrap().starts_with("α^")); + } + if edge["selected"] == true { + assert!(ok, "a selected edge is admissible: {edge}"); + selected += 1; + } + } + } + } + assert!(admissible > 0 && rejected > 0); + let dag_edges = document["stage3_plan_selection"]["selected_dag"]["edges"] + .as_array() + .unwrap() + .len(); + assert!(selected > 0 && selected <= dag_edges); + for pruned in stage2["pruned_candidates"].as_array().unwrap() { + assert!( + pruned["properties"]["lifetime"].is_string() + || pruned["properties"]["lifetime"].is_object() + ); + assert!(pruned["reason"].is_string()); } } @@ -1878,12 +1915,6 @@ fn milp_search_selects_checked_plans_on_ratio_and_rollupheavy() { "{workload}: {query}" ); } - let pruned = pass1_pruned(&document); - assert!( - pruned.iter().any(|(family, reason)| family == pruned_family - && reason == "NoErrorBoundForQueryTarget"), - "{workload}: {pruned:?}" - ); } } diff --git a/crates/devtools/tests/asap_planner_acceptance.rs b/crates/devtools/tests/asap_planner_acceptance.rs index 7567cbde3..644b54aa0 100644 --- a/crates/devtools/tests/asap_planner_acceptance.rs +++ b/crates/devtools/tests/asap_planner_acceptance.rs @@ -116,28 +116,27 @@ fn run_until_prints_exactly_the_stages_up_to_it() { } } -/// Pass 2 composes tumbling-window candidates over every legal width, not only -/// the seed grid: a 5 m quantile within 1% every 60 s gets a mergeable -/// summary's tumbling-window chain for every width that divides 60 s (in ms), from -/// 1 ms to 60 s. +/// Pass 2 composes tumbling-window candidates at the greatest common +/// divisor of the ranges and evaluation steps (phase 0): a 5 m quantile +/// within 1% every 60 s gets its mergeable summary's tumbling windows of +/// 60 s only. #[test] -fn pass2_holds_a_tumbling_window_candidate_for_every_width_dividing_the_grid() { +fn pass2_holds_tumbling_windows_at_the_gcd_of_ranges_and_steps() { let quantile = workload("quantile_over_time(0.5, data[5m])", 60_000, 0.01, "data"); let text = stdout(planner(&quantile, &["--run-until", "stage1_pass2"])); let widths: BTreeSet = text - .split("tumbling_window_width_ms=") + .split("ω=tumbling ") .skip(1) .map(|rest| { let digits: String = rest.chars().take_while(char::is_ascii_digit).collect(); digits.parse().unwrap() }) .collect(); - let divisors: BTreeSet = (1..=60_000).filter(|w| 60_000 % w == 0).collect(); - assert_eq!(widths, divisors); + assert_eq!(widths, BTreeSet::from([60_000])); } /// Stage 3 selects among the candidates Stage 2 lists: every candidate a -/// selected node runs (`nodeN: C`) is a line of Stage 2's output. +/// selected node runs (`nodeN: C = ...`) is a line of Stage 2's output. #[test] fn stage3_selects_candidates_stage2_lists() { let text = stdout(planner(&rate_workload(), &["--run-until", "stage3"])); @@ -150,7 +149,7 @@ fn stage3_selects_candidates_stage2_lists() { assert!(!selected.is_empty(), "{stage3}"); for candidate in selected { assert!( - stage2.contains(&format!("\n {candidate}:")), + stage2.contains(&format!("\n {candidate} = ")), "{candidate} is not in Stage 2's output" ); } diff --git a/docs/user_guide_docs/asap-planner.md b/docs/user_guide_docs/asap-planner.md index 3b29c71f9..957a6c545 100644 --- a/docs/user_guide_docs/asap-planner.md +++ b/docs/user_guide_docs/asap-planner.md @@ -43,7 +43,7 @@ asap_planner (--workload )... --run-until stage0|stage1_pass1|stage1_pass2 | --- | --- | | `--workload ` | A `PlanningWorkload` JSON file: the queries, their requirements and recurrence, and the data-source facts. Repeat it to plan several files together, including PromQL and SQL files; sources they share must have the same facts. Required. | | `--run-until ` | The last stage to run. Every stage up to and including it is printed. Required. | -| `--format text\|json` | `text` (the default) for reading; `json` for an `asap-stage-pipeline/v1` document. | +| `--format text\|json` | `text` (the default) for reading; `json` for an `asap-stage-pipeline/v2` document. | | `--out ` | Write to this file instead of standard output. | | `--sql-catalog-table ` | One SQL table a SQL workload reads, as `{"name", "columns": [{"name", "type", "nullable"}], "time_index"}`. Repeat it per table. | | `--cost-inputs ` | The cost model and its prices (`CostInputs` JSON). The files in `tools/dag-viewer/cost-inputs/` are ready to use. Without it, the built-in usage-over-time model is used. Stage 3 prices only usage-over-time models (`aws-fargate-us-east-1.json` is one); a provisioned- or cluster-capacity model ends Stage 3 with an `UnsupportedCostModel` error. | diff --git a/tools/dag-viewer/README.md b/tools/dag-viewer/README.md index f713f4a0f..51795c2f0 100644 --- a/tools/dag-viewer/README.md +++ b/tools/dag-viewer/README.md @@ -1,7 +1,7 @@ # ASAPPlanner Stage Viewer A browser view of what the planner does with one workload, read from an -`asap-stage-pipeline/v1` document written by the `asap_planner` devtool +`asap-stage-pipeline/v2` document written by the `asap_planner` devtool (`asap_planner --workload --run-until stage3 --format json`). The document shows: @@ -127,7 +127,7 @@ sharing; open one with **Open stage document or workload…**. ## Document format -The `asap-stage-pipeline/v1` document is described in the header comment of +The `asap-stage-pipeline/v2` document is described in the header comment of `crates/devtools/src/bin/asap_planner.rs`. ## Tests diff --git a/tools/dag-viewer/app.js b/tools/dag-viewer/app.js index 34aed44c5..8318af9ba 100644 --- a/tools/dag-viewer/app.js +++ b/tools/dag-viewer/app.js @@ -1,4 +1,4 @@ -// ASAPPlanner Stage Viewer: an asap-stage-pipeline/v1 document as a Stage 3 +// ASAPPlanner Stage Viewer: an asap-stage-pipeline/v2 document as a Stage 3 // candidate list beside three DAG lanes stacked top to bottom (Stage 0, // then the Stage 1 candidate, then its Stage 2 candidate), details below. // Each lane shows the whole workload. Document checks, the candidate list diff --git a/tools/dag-viewer/enumeration.js b/tools/dag-viewer/enumeration.js index bc584ecc6..3fe25a6ce 100644 --- a/tools/dag-viewer/enumeration.js +++ b/tools/dag-viewer/enumeration.js @@ -1,4 +1,4 @@ -// The Enumerated DAGs panel: `memo.enumeration` of an asap-stage-pipeline/v1 +// The Enumerated DAGs panel: `memo.enumeration` of an asap-stage-pipeline/v2 // document, the complete candidate DAGs the memo stands for, as `asap_planner` // enumerated and composed them. The document holds each listed choice's DAG // as its `roots` in the memo's node table (`memo.nodes`), so the page diff --git a/tools/dag-viewer/index.html b/tools/dag-viewer/index.html index ea70d34ad..7eb4bc9c0 100644 --- a/tools/dag-viewer/index.html +++ b/tools/dag-viewer/index.html @@ -236,7 +236,7 @@

ASAPPlanner Stage Viewer

-
Documents are written by the asap_planner devtool (asap-stage-pipeline/v1). Statistics in the examples are illustrative, so only each example's ranking is meaningful.
+
Documents are written by the asap_planner devtool (asap-stage-pipeline/v2). Statistics in the examples are illustrative, so only each example's ranking is meaningful.
diff --git a/tools/dag-viewer/server.py b/tools/dag-viewer/server.py index 3777227a3..1ec3f90a4 100644 --- a/tools/dag-viewer/server.py +++ b/tools/dag-viewer/server.py @@ -51,7 +51,7 @@ def sidecar_tables(workload: Path) -> list: def planner_args(workload: Path, tables: list, capabilities: str | None, cost_model: str | None, accuracy_guarantees: str | None, out: str) -> list[str]: """The `asap_planner` arguments that plan `workload` through Stage 3 into - the asap-stage-pipeline/v1 document `out`: the SQL `tables` it reads, + the asap-stage-pipeline/v2 document `out`: the SQL `tables` it reads, the deployment capabilities file `capabilities`, the cost model `cost_model` (a COST_MODELS name) and the accuracy guarantee mode (`"enforced"`; anything else ignores them). Without capabilities or a @@ -180,7 +180,7 @@ def workload_args(payload: object, tmp: str, out: str) -> list[str]: def plan_workload(payload: object) -> dict: """Plan a PlanningWorkload request (`workload_args`) with `asap_planner`; - returns its asap-stage-pipeline/v1 document. Requests run one at a + returns its asap-stage-pipeline/v2 document. Requests run one at a time.""" print("\n[planner] workload", flush=True) with PLAN_LOCK, tempfile.TemporaryDirectory() as tmp: diff --git a/tools/dag-viewer/stages.js b/tools/dag-viewer/stages.js index d30b2c307..1e61d8aa5 100644 --- a/tools/dag-viewer/stages.js +++ b/tools/dag-viewer/stages.js @@ -1,8 +1,8 @@ -// DOM-free logic of the Stage Viewer: checking an `asap-stage-pipeline/v1` +// DOM-free logic of the Stage Viewer: checking an `asap-stage-pipeline/v2` // document (written by the `asap_planner` devtool), the Stage 3 candidate // list, and each stage's DAG as cytoscape elements with readable labels. // app.js draws them; test_viewer.py runs this file headless. -const STAGE_PIPELINE_FORMAT = 'asap-stage-pipeline/v1'; +const STAGE_PIPELINE_FORMAT = 'asap-stage-pipeline/v2'; // Documents written before #1163 name the tumbling-window chain `PaneChain`, // its fields `pane_*`, and the memo origin `panes` (`Panes` in older MILP diff --git a/tools/dag-viewer/test_server.py b/tools/dag-viewer/test_server.py index 909609a13..3c11f72e0 100644 --- a/tools/dag-viewer/test_server.py +++ b/tools/dag-viewer/test_server.py @@ -320,7 +320,7 @@ def test_plan_workload_endpoint_plans_a_planning_workload(self): } document = post_plan({"workload": workload, "deployment_capabilities": {"raw_data_retained": False}, "cost_model": "usage-over-time"}, "/api/plan-workload") - self.assertEqual(document["format"], "asap-stage-pipeline/v1") + self.assertEqual(document["format"], "asap-stage-pipeline/v2") self.assertEqual(document["run_until"], "stage3") self.assertEqual(document["accuracy_guarantees"], "ignored") self.assertEqual(document["workload"]["data_workload"]["sources"]["m"]["series_count"], 100) From 05f654db8e1b5f5581572fccccdaefa14ff5a956 Mon Sep 17 00:00:00 2001 From: zzylol <50204836+zzylol@users.noreply.github.com> Date: Sat, 7 Nov 2026 03:54:33 +0000 Subject: [PATCH 04/11] test(devtools): sketch plan snapshots record a workload whose selection fails (#1207 PR 9) --- crates/devtools/tests/corpus_snapshots.rs | 26 +++++++++++++------ .../devtools/tests/sketch_plan_snapshots.rs | 8 +++--- .../stored_outputs_on_main.json | 10 ------- 3 files changed, 23 insertions(+), 21 deletions(-) delete mode 100644 crates/integration-tests/tests/materialized_view_fixtures/stored_outputs_on_main.json diff --git a/crates/devtools/tests/corpus_snapshots.rs b/crates/devtools/tests/corpus_snapshots.rs index 40bf88751..526296644 100644 --- a/crates/devtools/tests/corpus_snapshots.rs +++ b/crates/devtools/tests/corpus_snapshots.rs @@ -64,8 +64,9 @@ fn plan(workload: &Value, args: &[String], scratch: &Path) -> Value { } /// Runs `asap_planner --run-until stage3 --format json` with `args`, which -/// name its input (paths relative to the repository root); panics (a -/// planner crash) on failure. +/// name its input (paths relative to the repository root). A run whose plan +/// selection failed still writes its document, with Stage 3's `error`, +/// which is returned; any other failure (a planner crash) panics. fn asap_planner(args: &[String], scratch: &Path) -> Value { let output = scratch.join("document.json"); let mut command = Command::new(env!("CARGO_BIN_EXE_asap_planner")); @@ -76,12 +77,21 @@ fn asap_planner(args: &[String], scratch: &Path) -> Value { .arg("--out") .arg(&output); let result = command.output().unwrap(); - assert!( - result.status.success(), - "{command:?} failed: {}", - String::from_utf8_lossy(&result.stderr) - ); - serde_json::from_str(&std::fs::read_to_string(output).unwrap()).unwrap() + let document: Option = std::fs::read_to_string(&output) + .ok() + .and_then(|text| serde_json::from_str(&text).ok()); + match document { + Some(document) + if result.status.success() + || document["stage3_plan_selection"]["error"].is_string() => + { + document + } + _ => panic!( + "{command:?} failed: {}", + String::from_utf8_lossy(&result.stderr) + ), + } } /// The selected plan's search status (`optimal`), or null without a plan. diff --git a/crates/devtools/tests/sketch_plan_snapshots.rs b/crates/devtools/tests/sketch_plan_snapshots.rs index 1ab0097d1..01d8d9b75 100644 --- a/crates/devtools/tests/sketch_plan_snapshots.rs +++ b/crates/devtools/tests/sketch_plan_snapshots.rs @@ -20,8 +20,9 @@ //! `UPDATE_SNAPSHOTS=1 cargo test --release -p asap-devtools --test corpus_snapshots -- --ignored sketch_plans_match_snapshots`. //! //! Each workload is planned by `asap_planner --run-until stage3`. Planning -//! has no time limit, so every workload must end with status `optimal`; any -//! other ending fails instead of being recorded. +//! has no time limit, so every selected plan must end with status +//! `optimal`; any other ending fails instead of being recorded. A workload +//! whose selection fails records its error, as a corpus query does. use std::path::PathBuf; @@ -124,7 +125,8 @@ fn sketch_plans_match_snapshots() { for entry in entries { let id = entry["id"].as_str().unwrap(); let document = asap_planner(&arguments(&manifest, entry), &scratch); - if !proven_optimal(&document) { + let selected = document["stage3_plan_selection"]["cost"].is_object(); + if selected && !proven_optimal(&document) { failures.push(format!( "{id}: the plan is not proven optimal (status {})", search_status(&document) diff --git a/crates/integration-tests/tests/materialized_view_fixtures/stored_outputs_on_main.json b/crates/integration-tests/tests/materialized_view_fixtures/stored_outputs_on_main.json deleted file mode 100644 index f822d6b70..000000000 --- a/crates/integration-tests/tests/materialized_view_fixtures/stored_outputs_on_main.json +++ /dev/null @@ -1,10 +0,0 @@ -[ -{"name":"repeating p99-60m/no_raw","dag":{"edges":[{"consumer":1,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":2,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":1,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":3,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":4,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":3,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":5,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":4,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":6,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":7,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":6,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":8,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":7,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":9,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":10,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":9,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":11,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":10,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":12,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":13,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":12,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":14,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":13,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":15,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":16,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":15,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":17,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":16,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":18,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":19,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":18,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":20,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":19,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":21,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":22,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":21,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":23,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":22,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":24,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":25,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":24,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":26,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":25,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":27,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":28,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":27,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":29,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":28,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":30,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":31,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":30,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":32,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":31,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":33,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":34,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":33,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":35,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":34,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":36,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":37,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":36,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":38,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":37,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":39,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":40,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":39,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":41,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":40,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":42,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":43,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":42,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":44,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":43,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":45,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":46,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":45,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":47,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":46,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":48,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":49,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":48,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":50,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":49,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":51,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":52,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":51,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":53,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":52,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":2,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":5,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":8,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":11,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":14,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":17,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":20,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":23,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":26,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":29,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":32,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":35,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":38,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":41,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":44,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":47,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":50,"role":"Input","window":"NotApplicable"},{"consumer":54,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":53,"role":"Input","window":"NotApplicable"},{"consumer":55,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":54,"role":"Input","window":"NotApplicable"},{"consumer":56,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"quantile","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":55,"role":"Input","window":"NotApplicable"}],"nodes":[{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":0,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"source":{"TimeSeries":{"metric":"latency_ms"}}}}}},{"guarantee":null,"id":1,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":0,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":2,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":1,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":3,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":200000}}}}},{"guarantee":null,"id":4,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":3,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":5,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":4,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":6,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":400000}}}}},{"guarantee":null,"id":7,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":6,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":8,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":7,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":9,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":600000}}}}},{"guarantee":null,"id":10,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":9,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":11,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":10,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":12,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":800000}}}}},{"guarantee":null,"id":13,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":12,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":14,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":13,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":15,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":1000000}}}}},{"guarantee":null,"id":16,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":15,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":17,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":16,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":18,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":1200000}}}}},{"guarantee":null,"id":19,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":18,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":20,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":19,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":21,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":1400000}}}}},{"guarantee":null,"id":22,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":21,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":23,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":22,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":24,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":1600000}}}}},{"guarantee":null,"id":25,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":24,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":26,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":25,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":27,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":1800000}}}}},{"guarantee":null,"id":28,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":27,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":29,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":28,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":30,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":2000000}}}}},{"guarantee":null,"id":31,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":30,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":32,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":31,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":33,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":2200000}}}}},{"guarantee":null,"id":34,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":33,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":35,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":34,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":36,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":2400000}}}}},{"guarantee":null,"id":37,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":36,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":38,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":37,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":39,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":2600000}}}}},{"guarantee":null,"id":40,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":39,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":41,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":40,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":42,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":2800000}}}}},{"guarantee":null,"id":43,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":42,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":44,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":43,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":45,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":3000000}}}}},{"guarantee":null,"id":46,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":45,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":47,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":46,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":48,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":3200000}}}}},{"guarantee":null,"id":49,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":48,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":50,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":49,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":51,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":3400000}}}}},{"guarantee":null,"id":52,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":51,"kind":"range","range":{"nanos":0,"secs":200}}}}},{"guarantee":null,"id":53,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":52,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":54,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryMerge":{"children":[2,5,8,11,14,17,20,23,26,29,32,35,38,41,44,47,50,53]}}}},{"guarantee":{"provenance":[{"algorithm":"Kll","contract":"apache_datasketches_kll_empirical_99_delta_scaled_a9b42755072b","kind":"sketch_evaluation","params":{"Kll":{"failure_probability":1e-05,"k":469}},"query":"Quantile { q: 0.99 }"}],"spec":{"accuracy_metric":"rank","accuracy_scope":"per_value","error":{"op":"constant","value":0.009954464416322084},"failure_probability":{"op":"constant","value":1e-05}}},"id":55,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"quantile","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"SummaryEstimate":{"query":{"Quantile":{"q":0.99}},"summary_input":54}}}},{"guarantee":{"provenance":[{"algorithm":"Kll","contract":"apache_datasketches_kll_empirical_99_delta_scaled_a9b42755072b","kind":"sketch_evaluation","params":{"Kll":{"failure_probability":1e-05,"k":469}},"query":"Quantile { q: 0.99 }"}],"spec":{"accuracy_metric":"rank","accuracy_scope":"per_value","error":{"op":"constant","value":0.009954464416322084},"failure_probability":{"op":"constant","value":1e-05}}},"id":56,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"NonASAP":{"Project":{"child":55,"cols":[{"alias":"ts","expr":{"Column":0}},{"alias":"value","expr":{"Column":1}},{"alias":"$promql_series_identity","expr":{"Column":2}}],"qualifier":null}}}}],"roots":[56],"scalar_roots":[]},"stored_outputs":[{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-200000},{"included":0}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":0,"scan_node_id":0,"time_range_node_id":1,"width_ms":200000}],"stored_outputs":[]},"node_id":2,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-400000},{"included":-200000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":200000,"scan_node_id":0,"time_range_node_id":4,"width_ms":200000}],"stored_outputs":[]},"node_id":5,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-600000},{"included":-400000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":400000,"scan_node_id":0,"time_range_node_id":7,"width_ms":200000}],"stored_outputs":[]},"node_id":8,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-800000},{"included":-600000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":600000,"scan_node_id":0,"time_range_node_id":10,"width_ms":200000}],"stored_outputs":[]},"node_id":11,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-1000000},{"included":-800000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":800000,"scan_node_id":0,"time_range_node_id":13,"width_ms":200000}],"stored_outputs":[]},"node_id":14,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-1200000},{"included":-1000000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":1000000,"scan_node_id":0,"time_range_node_id":16,"width_ms":200000}],"stored_outputs":[]},"node_id":17,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-1400000},{"included":-1200000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":1200000,"scan_node_id":0,"time_range_node_id":19,"width_ms":200000}],"stored_outputs":[]},"node_id":20,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-1600000},{"included":-1400000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":1400000,"scan_node_id":0,"time_range_node_id":22,"width_ms":200000}],"stored_outputs":[]},"node_id":23,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-1800000},{"included":-1600000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":1600000,"scan_node_id":0,"time_range_node_id":25,"width_ms":200000}],"stored_outputs":[]},"node_id":26,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-2000000},{"included":-1800000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":1800000,"scan_node_id":0,"time_range_node_id":28,"width_ms":200000}],"stored_outputs":[]},"node_id":29,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-2200000},{"included":-2000000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":2000000,"scan_node_id":0,"time_range_node_id":31,"width_ms":200000}],"stored_outputs":[]},"node_id":32,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-2400000},{"included":-2200000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":2200000,"scan_node_id":0,"time_range_node_id":34,"width_ms":200000}],"stored_outputs":[]},"node_id":35,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-2600000},{"included":-2400000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":2400000,"scan_node_id":0,"time_range_node_id":37,"width_ms":200000}],"stored_outputs":[]},"node_id":38,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-2800000},{"included":-2600000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":2600000,"scan_node_id":0,"time_range_node_id":40,"width_ms":200000}],"stored_outputs":[]},"node_id":41,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-3000000},{"included":-2800000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":2800000,"scan_node_id":0,"time_range_node_id":43,"width_ms":200000}],"stored_outputs":[]},"node_id":44,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-3200000},{"included":-3000000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":3000000,"scan_node_id":0,"time_range_node_id":46,"width_ms":200000}],"stored_outputs":[]},"node_id":47,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-3400000},{"included":-3200000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":3200000,"scan_node_id":0,"time_range_node_id":49,"width_ms":200000}],"stored_outputs":[]},"node_id":50,"retention_ms":3600000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-3600000},{"included":-3400000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":3400000,"scan_node_id":0,"time_range_node_id":52,"width_ms":200000}],"stored_outputs":[]},"node_id":53,"retention_ms":3600000}]}, -{"name":"repeating offset-chain/no_raw","dag":{"edges":[{"consumer":1,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":2,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":1,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":3,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":2,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":4,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":5,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":4,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":6,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":5,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":7,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":8,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":7,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":9,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":8,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":10,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":11,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":10,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":12,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":11,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":13,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":14,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":13,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":15,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":14,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":16,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":17,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":16,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":18,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":17,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":19,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":20,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":19,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":21,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":20,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":22,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":23,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":22,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":24,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":23,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":25,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":26,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":25,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":27,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":26,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":28,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":29,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":28,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":30,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":29,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":31,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":3,"role":"Input","window":"NotApplicable"},{"consumer":31,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":6,"role":"Input","window":"NotApplicable"},{"consumer":31,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":9,"role":"Input","window":"NotApplicable"},{"consumer":31,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":12,"role":"Input","window":"NotApplicable"},{"consumer":31,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":15,"role":"Input","window":"NotApplicable"},{"consumer":31,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":18,"role":"Input","window":"NotApplicable"},{"consumer":31,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":21,"role":"Input","window":"NotApplicable"},{"consumer":31,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":24,"role":"Input","window":"NotApplicable"},{"consumer":31,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":27,"role":"Input","window":"NotApplicable"},{"consumer":31,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":30,"role":"Input","window":"NotApplicable"},{"consumer":32,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":31,"role":"Input","window":"NotApplicable"},{"consumer":33,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"quantile","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":32,"role":"Input","window":"NotApplicable"}],"nodes":[{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":0,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"source":{"TimeSeries":{"metric":"latency_ms"}}}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":1,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":300000}}}}},{"guarantee":null,"id":2,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":1,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":3,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":2,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":4,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":360000}}}}},{"guarantee":null,"id":5,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":4,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":6,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":5,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":7,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":420000}}}}},{"guarantee":null,"id":8,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":7,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":9,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":8,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":10,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":480000}}}}},{"guarantee":null,"id":11,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":10,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":12,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":11,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":13,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":540000}}}}},{"guarantee":null,"id":14,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":13,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":15,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":14,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":16,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":600000}}}}},{"guarantee":null,"id":17,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":16,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":18,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":17,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":19,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":660000}}}}},{"guarantee":null,"id":20,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":19,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":21,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":20,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":22,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":720000}}}}},{"guarantee":null,"id":23,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":22,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":24,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":23,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":25,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":780000}}}}},{"guarantee":null,"id":26,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":25,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":27,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":26,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":28,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":840000}}}}},{"guarantee":null,"id":29,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":28,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":30,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":29,"family":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":31,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Sketch":[{"algorithm":"Kll","params":{"Kll":{"failure_probability":1e-05,"k":469}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryMerge":{"children":[3,6,9,12,15,18,21,24,27,30]}}}},{"guarantee":{"provenance":[{"algorithm":"Kll","contract":"apache_datasketches_kll_empirical_99_delta_scaled_a9b42755072b","kind":"sketch_evaluation","params":{"Kll":{"failure_probability":1e-05,"k":469}},"query":"Quantile { q: 0.99 }"}],"spec":{"accuracy_metric":"rank","accuracy_scope":"per_value","error":{"op":"constant","value":0.009954464416322084},"failure_probability":{"op":"constant","value":1e-05}}},"id":32,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"quantile","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"SummaryEstimate":{"query":{"Quantile":{"q":0.99}},"summary_input":31}}}},{"guarantee":{"provenance":[{"algorithm":"Kll","contract":"apache_datasketches_kll_empirical_99_delta_scaled_a9b42755072b","kind":"sketch_evaluation","params":{"Kll":{"failure_probability":1e-05,"k":469}},"query":"Quantile { q: 0.99 }"}],"spec":{"accuracy_metric":"rank","accuracy_scope":"per_value","error":{"op":"constant","value":0.009954464416322084},"failure_probability":{"op":"constant","value":1e-05}}},"id":33,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"NonASAP":{"Project":{"child":32,"cols":[{"alias":"ts","expr":{"Column":0}},{"alias":"value","expr":{"Column":1}},{"alias":"$promql_series_identity","expr":{"Column":2}}],"qualifier":null}}}}],"roots":[33],"scalar_roots":[]},"stored_outputs":[{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-360000},{"included":-300000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":300000,"scan_node_id":0,"time_range_node_id":2,"width_ms":60000}],"stored_outputs":[]},"node_id":3,"retention_ms":900000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-420000},{"included":-360000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":360000,"scan_node_id":0,"time_range_node_id":5,"width_ms":60000}],"stored_outputs":[]},"node_id":6,"retention_ms":900000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-480000},{"included":-420000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":420000,"scan_node_id":0,"time_range_node_id":8,"width_ms":60000}],"stored_outputs":[]},"node_id":9,"retention_ms":900000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-540000},{"included":-480000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":480000,"scan_node_id":0,"time_range_node_id":11,"width_ms":60000}],"stored_outputs":[]},"node_id":12,"retention_ms":900000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-600000},{"included":-540000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":540000,"scan_node_id":0,"time_range_node_id":14,"width_ms":60000}],"stored_outputs":[]},"node_id":15,"retention_ms":900000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-660000},{"included":-600000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":600000,"scan_node_id":0,"time_range_node_id":17,"width_ms":60000}],"stored_outputs":[]},"node_id":18,"retention_ms":900000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-720000},{"included":-660000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":660000,"scan_node_id":0,"time_range_node_id":20,"width_ms":60000}],"stored_outputs":[]},"node_id":21,"retention_ms":900000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-780000},{"included":-720000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":720000,"scan_node_id":0,"time_range_node_id":23,"width_ms":60000}],"stored_outputs":[]},"node_id":24,"retention_ms":900000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-840000},{"included":-780000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":780000,"scan_node_id":0,"time_range_node_id":26,"width_ms":60000}],"stored_outputs":[]},"node_id":27,"retention_ms":900000},{"built_at":"ingestion_run","coverage":{"definition_id":"9f0c9036ac7789a53d65f287a16aad22","selection":[{"columns":[],"relative_time":[{"excluded":-900000},{"included":-840000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":840000,"scan_node_id":0,"time_range_node_id":29,"width_ms":60000}],"stored_outputs":[]},"node_id":30,"retention_ms":900000}]}, -{"name":"repeating rollup/no_raw","dag":{"edges":[{"consumer":1,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":2,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":1,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":3,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":4,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":3,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":5,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":4,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":6,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":7,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":6,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":8,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":7,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":9,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":10,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":9,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":11,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":10,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":12,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":13,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":12,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":14,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":13,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":15,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":16,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":15,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":17,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":16,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":18,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":19,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":18,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":20,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":19,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":21,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":22,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":21,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":23,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":22,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":24,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":25,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":24,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":26,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":25,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":27,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":28,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":27,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":29,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":28,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":30,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":2,"role":"Input","window":"NotApplicable"},{"consumer":30,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":5,"role":"Input","window":"NotApplicable"},{"consumer":30,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":8,"role":"Input","window":"NotApplicable"},{"consumer":30,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":11,"role":"Input","window":"NotApplicable"},{"consumer":30,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":14,"role":"Input","window":"NotApplicable"},{"consumer":30,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":17,"role":"Input","window":"NotApplicable"},{"consumer":30,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":20,"role":"Input","window":"NotApplicable"},{"consumer":30,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":23,"role":"Input","window":"NotApplicable"},{"consumer":30,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":26,"role":"Input","window":"NotApplicable"},{"consumer":30,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":29,"role":"Input","window":"NotApplicable"},{"consumer":31,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":30,"role":"Input","window":"NotApplicable"},{"consumer":32,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":31,"role":"Input","window":"NotApplicable"},{"consumer":33,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]},"producer":32,"role":"Input","window":"NotApplicable"},{"consumer":34,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"sum","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]},"producer":33,"role":"Input","window":"NotApplicable"},{"consumer":35,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[]},"producer":34,"role":"Input","window":"NotApplicable"}],"nodes":[{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":0,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"source":{"TimeSeries":{"metric":"latency_ms"}}}}}},{"guarantee":null,"id":1,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":0,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":2,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":1,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":3,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":60000}}}}},{"guarantee":null,"id":4,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":3,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":5,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":4,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":6,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":120000}}}}},{"guarantee":null,"id":7,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":6,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":8,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":7,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":9,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":180000}}}}},{"guarantee":null,"id":10,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":9,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":11,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":10,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":12,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":240000}}}}},{"guarantee":null,"id":13,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":12,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":14,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":13,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":15,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":300000}}}}},{"guarantee":null,"id":16,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":15,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":17,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":16,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":18,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":360000}}}}},{"guarantee":null,"id":19,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":18,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":20,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":19,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":21,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":420000}}}}},{"guarantee":null,"id":22,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":21,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":23,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":22,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":24,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":480000}}}}},{"guarantee":null,"id":25,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":24,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":26,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":25,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":27,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":540000}}}}},{"guarantee":null,"id":28,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":27,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":29,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":28,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":30,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryMerge":{"children":[2,5,8,11,14,17,20,23,26,29]}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":31,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":30}}}},{"guarantee":null,"id":32,"lifetime":{"OneEvaluation":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryAgg":{"child":31,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":{"Reduce":[2]}}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":33,"lifetime":{"OneEvaluation":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"sum","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":32}}}},{"guarantee":null,"id":34,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryAgg":{"child":33,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":{"Named":"sum"}},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":{"Reduce":[]}}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":35,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"float64"},"name":"sum","nullable":false,"table":null}],"time_index":null,"unique_keys":[]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":34}}}}],"roots":[33,35],"scalar_roots":[]},"stored_outputs":[{"built_at":"ingestion_run","coverage":{"definition_id":"89d70c922a6f3de8ed2220ac945ac927","selection":[{"columns":[],"relative_time":[{"excluded":-60000},{"included":0}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":0,"scan_node_id":0,"time_range_node_id":1,"width_ms":60000}],"stored_outputs":[]},"node_id":2,"retention_ms":600000},{"built_at":"ingestion_run","coverage":{"definition_id":"89d70c922a6f3de8ed2220ac945ac927","selection":[{"columns":[],"relative_time":[{"excluded":-120000},{"included":-60000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":60000,"scan_node_id":0,"time_range_node_id":4,"width_ms":60000}],"stored_outputs":[]},"node_id":5,"retention_ms":600000},{"built_at":"ingestion_run","coverage":{"definition_id":"89d70c922a6f3de8ed2220ac945ac927","selection":[{"columns":[],"relative_time":[{"excluded":-180000},{"included":-120000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":120000,"scan_node_id":0,"time_range_node_id":7,"width_ms":60000}],"stored_outputs":[]},"node_id":8,"retention_ms":600000},{"built_at":"ingestion_run","coverage":{"definition_id":"89d70c922a6f3de8ed2220ac945ac927","selection":[{"columns":[],"relative_time":[{"excluded":-240000},{"included":-180000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":180000,"scan_node_id":0,"time_range_node_id":10,"width_ms":60000}],"stored_outputs":[]},"node_id":11,"retention_ms":600000},{"built_at":"ingestion_run","coverage":{"definition_id":"89d70c922a6f3de8ed2220ac945ac927","selection":[{"columns":[],"relative_time":[{"excluded":-300000},{"included":-240000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":240000,"scan_node_id":0,"time_range_node_id":13,"width_ms":60000}],"stored_outputs":[]},"node_id":14,"retention_ms":600000},{"built_at":"ingestion_run","coverage":{"definition_id":"89d70c922a6f3de8ed2220ac945ac927","selection":[{"columns":[],"relative_time":[{"excluded":-360000},{"included":-300000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":300000,"scan_node_id":0,"time_range_node_id":16,"width_ms":60000}],"stored_outputs":[]},"node_id":17,"retention_ms":600000},{"built_at":"ingestion_run","coverage":{"definition_id":"89d70c922a6f3de8ed2220ac945ac927","selection":[{"columns":[],"relative_time":[{"excluded":-420000},{"included":-360000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":360000,"scan_node_id":0,"time_range_node_id":19,"width_ms":60000}],"stored_outputs":[]},"node_id":20,"retention_ms":600000},{"built_at":"ingestion_run","coverage":{"definition_id":"89d70c922a6f3de8ed2220ac945ac927","selection":[{"columns":[],"relative_time":[{"excluded":-480000},{"included":-420000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":420000,"scan_node_id":0,"time_range_node_id":22,"width_ms":60000}],"stored_outputs":[]},"node_id":23,"retention_ms":600000},{"built_at":"ingestion_run","coverage":{"definition_id":"89d70c922a6f3de8ed2220ac945ac927","selection":[{"columns":[],"relative_time":[{"excluded":-540000},{"included":-480000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":480000,"scan_node_id":0,"time_range_node_id":25,"width_ms":60000}],"stored_outputs":[]},"node_id":26,"retention_ms":600000},{"built_at":"ingestion_run","coverage":{"definition_id":"89d70c922a6f3de8ed2220ac945ac927","selection":[{"columns":[],"relative_time":[{"excluded":-600000},{"included":-540000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":540000,"scan_node_id":0,"time_range_node_id":28,"width_ms":60000}],"stored_outputs":[]},"node_id":29,"retention_ms":600000}]}, -{"name":"repeating rate-5m/no_raw","dag":{"edges":[{"consumer":1,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":2,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":1,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":3,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":4,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":3,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":5,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":4,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":6,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":7,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":6,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":8,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":7,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":9,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":10,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":9,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":11,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":10,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":12,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":13,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":12,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":14,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":13,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":15,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":2,"role":"Input","window":"NotApplicable"},{"consumer":15,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":5,"role":"Input","window":"NotApplicable"},{"consumer":15,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":8,"role":"Input","window":"NotApplicable"},{"consumer":15,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":11,"role":"Input","window":"NotApplicable"},{"consumer":15,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":14,"role":"Input","window":"NotApplicable"},{"consumer":16,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":15,"role":"Input","window":"NotApplicable"},{"consumer":17,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":16,"role":"Input","window":"NotApplicable"},{"consumer":18,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[]},"producer":17,"role":"Input","window":"NotApplicable"},{"consumer":19,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":20,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":19,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":21,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":20,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":22,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":23,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":22,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":24,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":23,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":25,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":26,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":25,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":27,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":26,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":28,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":29,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":28,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":30,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":29,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":31,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":32,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":31,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":33,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":32,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":34,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":21,"role":"Input","window":"NotApplicable"},{"consumer":34,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":24,"role":"Input","window":"NotApplicable"},{"consumer":34,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":27,"role":"Input","window":"NotApplicable"},{"consumer":34,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":30,"role":"Input","window":"NotApplicable"},{"consumer":34,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":33,"role":"Input","window":"NotApplicable"},{"consumer":35,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":34,"role":"Input","window":"NotApplicable"},{"consumer":36,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":35,"role":"Input","window":"NotApplicable"},{"consumer":37,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[]},"producer":36,"role":"Input","window":"NotApplicable"}],"nodes":[{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":0,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"source":{"TimeSeries":{"metric":"latency_ms"}}}}}},{"guarantee":null,"id":1,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":0,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":2,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":1,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":3,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":60000}}}}},{"guarantee":null,"id":4,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":3,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":5,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":4,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":6,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":120000}}}}},{"guarantee":null,"id":7,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":6,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":8,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":7,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":9,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":180000}}}}},{"guarantee":null,"id":10,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":9,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":11,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":10,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":12,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":240000}}}}},{"guarantee":null,"id":13,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":12,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":14,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":13,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":15,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryMerge":{"children":[2,5,8,11,14]}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":16,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":15}}}},{"guarantee":null,"id":17,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryAgg":{"child":16,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":{"Reduce":[]}}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":18,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"float64"},"name":"sum","nullable":false,"table":null}],"time_index":null,"unique_keys":[]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":17}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":19,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":3600000}}}}},{"guarantee":null,"id":20,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":19,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":21,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":20,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":22,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":3660000}}}}},{"guarantee":null,"id":23,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":22,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":24,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":23,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":25,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":3720000}}}}},{"guarantee":null,"id":26,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":25,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":27,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":26,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":28,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":3780000}}}}},{"guarantee":null,"id":29,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":28,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":30,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":29,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":31,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":3840000}}}}},{"guarantee":null,"id":32,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":31,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":33,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":32,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":34,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryMerge":{"children":[21,24,27,30,33]}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":35,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":34}}}},{"guarantee":null,"id":36,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryAgg":{"child":35,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":{"Reduce":[]}}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":37,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"float64"},"name":"sum","nullable":false,"table":null}],"time_index":null,"unique_keys":[]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":36}}}}],"roots":[18,37],"scalar_roots":[]},"stored_outputs":[{"built_at":"ingestion_run","coverage":{"definition_id":"b615b22773d1e90b57e97e16aecb4b80","selection":[{"columns":[],"relative_time":[{"excluded":-60000},{"included":0}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":0,"scan_node_id":0,"time_range_node_id":1,"width_ms":60000}],"stored_outputs":[]},"node_id":2,"retention_ms":300000},{"built_at":"ingestion_run","coverage":{"definition_id":"b615b22773d1e90b57e97e16aecb4b80","selection":[{"columns":[],"relative_time":[{"excluded":-120000},{"included":-60000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":60000,"scan_node_id":0,"time_range_node_id":4,"width_ms":60000}],"stored_outputs":[]},"node_id":5,"retention_ms":300000},{"built_at":"ingestion_run","coverage":{"definition_id":"b615b22773d1e90b57e97e16aecb4b80","selection":[{"columns":[],"relative_time":[{"excluded":-180000},{"included":-120000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":120000,"scan_node_id":0,"time_range_node_id":7,"width_ms":60000}],"stored_outputs":[]},"node_id":8,"retention_ms":300000},{"built_at":"ingestion_run","coverage":{"definition_id":"b615b22773d1e90b57e97e16aecb4b80","selection":[{"columns":[],"relative_time":[{"excluded":-240000},{"included":-180000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":180000,"scan_node_id":0,"time_range_node_id":10,"width_ms":60000}],"stored_outputs":[]},"node_id":11,"retention_ms":300000},{"built_at":"ingestion_run","coverage":{"definition_id":"b615b22773d1e90b57e97e16aecb4b80","selection":[{"columns":[],"relative_time":[{"excluded":-300000},{"included":-240000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":240000,"scan_node_id":0,"time_range_node_id":13,"width_ms":60000}],"stored_outputs":[]},"node_id":14,"retention_ms":300000},{"built_at":"ingestion_run","coverage":{"definition_id":"b615b22773d1e90b57e97e16aecb4b80","selection":[{"columns":[],"relative_time":[{"excluded":-3660000},{"included":-3600000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":3600000,"scan_node_id":0,"time_range_node_id":20,"width_ms":60000}],"stored_outputs":[]},"node_id":21,"retention_ms":3900000},{"built_at":"ingestion_run","coverage":{"definition_id":"b615b22773d1e90b57e97e16aecb4b80","selection":[{"columns":[],"relative_time":[{"excluded":-3720000},{"included":-3660000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":3660000,"scan_node_id":0,"time_range_node_id":23,"width_ms":60000}],"stored_outputs":[]},"node_id":24,"retention_ms":3900000},{"built_at":"ingestion_run","coverage":{"definition_id":"b615b22773d1e90b57e97e16aecb4b80","selection":[{"columns":[],"relative_time":[{"excluded":-3780000},{"included":-3720000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":3720000,"scan_node_id":0,"time_range_node_id":26,"width_ms":60000}],"stored_outputs":[]},"node_id":27,"retention_ms":3900000},{"built_at":"ingestion_run","coverage":{"definition_id":"b615b22773d1e90b57e97e16aecb4b80","selection":[{"columns":[],"relative_time":[{"excluded":-3840000},{"included":-3780000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":3780000,"scan_node_id":0,"time_range_node_id":29,"width_ms":60000}],"stored_outputs":[]},"node_id":30,"retention_ms":3900000},{"built_at":"ingestion_run","coverage":{"definition_id":"b615b22773d1e90b57e97e16aecb4b80","selection":[{"columns":[],"relative_time":[{"excluded":-3900000},{"included":-3840000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":3840000,"scan_node_id":0,"time_range_node_id":32,"width_ms":60000}],"stored_outputs":[]},"node_id":33,"retention_ms":3900000}]}, -{"name":"runtime_install a_coarse_sum_rolls_up_from_the_stored_fine_sum","dag":{"edges":[{"consumer":1,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":2,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"producer":1,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":3,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0,1]]},"producer":2,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":4,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"sum","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0,1]]},"producer":3,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":5,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]},"producer":4,"role":"Input","window":"NotApplicable"},{"consumer":6,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0,1]]},"producer":2,"role":"Input","window":"NotApplicable"}],"nodes":[{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":0,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"source":{"TimeSeries":{"metric":"m"}}}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":1,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":0,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":2,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0,1]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":1,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":{"Reduce":[2,3]}}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":3,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"sum","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0,1]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":2}}}},{"guarantee":null,"id":4,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":3,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":{"Named":"sum"}},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":{"Reduce":[1]}}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":5,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"sum","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":4}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":6,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"sum","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0,1]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":2}}}}],"roots":[5,6],"scalar_roots":[]},"stored_outputs":[{"built_at":"ingestion_run","coverage":{"definition_id":"db0c9241a79202b6925e84aef010e89a","selection":[{"columns":[],"relative_time":[{"excluded":-60000},{"included":0}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":0,"scan_node_id":0,"time_range_node_id":1,"width_ms":60000}],"stored_outputs":[]},"node_id":2,"retention_ms":60000},{"built_at":"ingestion_run","coverage":{"definition_id":"3c90a6b5ff3ecaa445ea9bf285e1dc0b","selection":[{"columns":[],"relative_time":[{"excluded":-60000},{"included":0}]}]},"inputs":{"raw_sample_windows":[],"stored_outputs":[2]},"node_id":4,"retention_ms":60000}]}, -{"name":"runtime_install a_materialized_sliding_window_merge_is_listed_and_built","dag":{"edges":[{"consumer":1,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"NotApplicable"},{"consumer":2,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":1,"role":"Input","window":"NotApplicable"},{"consumer":3,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"NotApplicable"},{"consumer":4,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":3,"role":"Input","window":"NotApplicable"},{"consumer":5,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":4,"role":"Input","window":"NotApplicable"},{"consumer":6,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"NotApplicable"},{"consumer":7,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":6,"role":"Input","window":"NotApplicable"},{"consumer":8,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":7,"role":"Input","window":"NotApplicable"},{"consumer":9,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"NotApplicable"},{"consumer":10,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":9,"role":"Input","window":"NotApplicable"},{"consumer":11,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":10,"role":"Input","window":"NotApplicable"},{"consumer":12,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":0,"role":"Input","window":"NotApplicable"},{"consumer":13,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":12,"role":"Input","window":"NotApplicable"},{"consumer":14,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":13,"role":"Input","window":"NotApplicable"},{"consumer":15,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":2,"role":"Input","window":"NotApplicable"},{"consumer":15,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":5,"role":"Input","window":"NotApplicable"},{"consumer":15,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":8,"role":"Input","window":"NotApplicable"},{"consumer":15,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":11,"role":"Input","window":"NotApplicable"},{"consumer":15,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":14,"role":"Input","window":"NotApplicable"},{"consumer":16,"data_state":{"primitive":"SummaryState","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"producer":15,"role":"Input","window":"NotApplicable"}],"nodes":[{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":0,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"source":{"TimeSeries":{"metric":"m"}}}}}},{"guarantee":null,"id":1,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"NonASAP":{"TimeRange":{"child":0,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":2,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryAgg":{"child":1,"family":{"ExactAggregate":["Max","Max"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":3,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":60000}}}}},{"guarantee":null,"id":4,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"NonASAP":{"TimeRange":{"child":3,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":5,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryAgg":{"child":4,"family":{"ExactAggregate":["Max","Max"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":6,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":120000}}}}},{"guarantee":null,"id":7,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"NonASAP":{"TimeRange":{"child":6,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":8,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryAgg":{"child":7,"family":{"ExactAggregate":["Max","Max"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":9,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":180000}}}}},{"guarantee":null,"id":10,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"NonASAP":{"TimeRange":{"child":9,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":11,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryAgg":{"child":10,"family":{"ExactAggregate":["Max","Max"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":12,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"NonASAP":{"TimeShift":{"child":0,"shift":{"at":null,"offset_ms":240000}}}}},{"guarantee":null,"id":13,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"NonASAP":{"TimeRange":{"child":12,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":14,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryAgg":{"child":13,"family":{"ExactAggregate":["Max","Max"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":null,"id":15,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"SummaryState","timing":"query_time"},"payload":{"ASAP":{"SummaryMerge":{"children":[2,5,8,11,14]}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":16,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":15}}}}],"roots":[16],"scalar_roots":[]},"stored_outputs":[{"built_at":"query_run","coverage":{"definition_id":"71610a93a8af5ae7ee6ecc0839e28d3b","selection":[{"columns":[],"relative_time":[{"excluded":-60000},{"included":0}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":0,"scan_node_id":0,"time_range_node_id":1,"width_ms":60000}],"stored_outputs":[]},"node_id":2,"retention_ms":3900000},{"built_at":"query_run","coverage":{"definition_id":"71610a93a8af5ae7ee6ecc0839e28d3b","selection":[{"columns":[],"relative_time":[{"excluded":-120000},{"included":-60000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":60000,"scan_node_id":0,"time_range_node_id":4,"width_ms":60000}],"stored_outputs":[]},"node_id":5,"retention_ms":3900000},{"built_at":"query_run","coverage":{"definition_id":"71610a93a8af5ae7ee6ecc0839e28d3b","selection":[{"columns":[],"relative_time":[{"excluded":-180000},{"included":-120000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":120000,"scan_node_id":0,"time_range_node_id":7,"width_ms":60000}],"stored_outputs":[]},"node_id":8,"retention_ms":3900000},{"built_at":"query_run","coverage":{"definition_id":"71610a93a8af5ae7ee6ecc0839e28d3b","selection":[{"columns":[],"relative_time":[{"excluded":-240000},{"included":-180000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":180000,"scan_node_id":0,"time_range_node_id":10,"width_ms":60000}],"stored_outputs":[]},"node_id":11,"retention_ms":3900000},{"built_at":"query_run","coverage":{"definition_id":"71610a93a8af5ae7ee6ecc0839e28d3b","selection":[{"columns":[],"relative_time":[{"excluded":-300000},{"included":-240000}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":240000,"scan_node_id":0,"time_range_node_id":13,"width_ms":60000}],"stored_outputs":[]},"node_id":14,"retention_ms":3900000},{"built_at":"query_run","coverage":{"definition_id":"71610a93a8af5ae7ee6ecc0839e28d3b","selection":[{"columns":[],"relative_time":[{"excluded":-300000},{"included":0}]}]},"inputs":{"raw_sample_windows":[],"stored_outputs":[2,5,8,11,14]},"node_id":15,"retention_ms":3900000}]}, -{"name":"runtime_install a_summary_across_series_from_per_series_summaries_is_listed_and_built","dag":{"edges":[{"consumer":1,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":2,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":1,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":3,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":2,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":4,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":3,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":5,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]},"producer":4,"role":"Input","window":"NotApplicable"},{"consumer":6,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":2,"role":"Input","window":"NotApplicable"},{"consumer":7,"data_state":{"primitive":"Raw","timing":"query_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":6,"role":"Input","window":"NotApplicable"}],"nodes":[{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":0,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"source":{"TimeSeries":{"metric":"m"}}}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":1,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":0,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":2,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":1,"family":{"ExactAggregate":["Max","Max"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":3,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":2}}}},{"guarantee":null,"id":4,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":3,"family":{"ExactAggregate":["Max","Max"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":{"Reduce":[2]}}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":5,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"max","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":4}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":6,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":2}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":7,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[2,0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"NonASAP":{"Project":{"child":6,"cols":[{"alias":"ts","expr":{"Column":0}},{"alias":"value","expr":{"Column":1}},{"alias":"$promql_series_identity","expr":{"Column":3}}],"qualifier":null}}}}],"roots":[5,7],"scalar_roots":[]},"stored_outputs":[{"built_at":"ingestion_run","coverage":{"definition_id":"5555de6812a18c62345c199d5ba8f06e","selection":[{"columns":[],"relative_time":[{"excluded":-60000},{"included":0}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":0,"scan_node_id":0,"time_range_node_id":1,"width_ms":60000}],"stored_outputs":[]},"node_id":2,"retention_ms":60000},{"built_at":"ingestion_run","coverage":{"definition_id":"f35ee4e847802c130cbd5221a81f7ea1","selection":[{"columns":[],"relative_time":[{"excluded":-60000},{"included":0}]}]},"inputs":{"raw_sample_windows":[],"stored_outputs":[2]},"node_id":4,"retention_ms":60000}]}, -{"name":"runtime_install group_outputs_from_one_stored_per_series_sum_are_listed_and_built","dag":{"edges":[{"consumer":1,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"producer":0,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":2,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"producer":1,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":3,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"producer":2,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":4,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"producer":3,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":5,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"producer":4,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":6,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]},"producer":5,"role":"Input","window":"NotApplicable"},{"consumer":7,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"producer":2,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":8,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"producer":7,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":9,"data_state":{"primitive":"Raw","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"producer":8,"role":"Input","window":"RequiresAlignedPanePhaseOrExactBoundaryResidual"},{"consumer":10,"data_state":{"primitive":"SummaryState","timing":"ingestion_time"},"grouping":"NotApplicable","intermediate_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0,1]]},"producer":9,"role":"Input","window":"NotApplicable"}],"nodes":[{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":0,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"source":{"TimeSeries":{"metric":"m"}}}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":1,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"TimeRange":{"child":0,"kind":"range","range":{"nanos":0,"secs":60}}}}},{"guarantee":null,"id":2,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":1,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":3,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":2}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":4,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"Project":{"child":3,"cols":[{"alias":"ts","expr":{"Column":0}},{"alias":"value","expr":{"Column":1}},{"alias":"job","expr":{"Column":2}},{"alias":"$promql_series_identity","expr":{"Column":4}}],"qualifier":null}}}},{"guarantee":null,"id":5,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Max","Max"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":4,"family":{"ExactAggregate":["Max","Max"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":{"Reduce":[2]}}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":6,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"max","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":5}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":7,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":2}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":8,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[4,0]]},"output_state":{"primitive":"Raw","timing":"ingestion_time"},"payload":{"NonASAP":{"Project":{"child":7,"cols":[{"alias":"ts","expr":{"Column":0}},{"alias":"value","expr":{"Column":1}},{"alias":"instance","expr":{"Column":3}},{"alias":"job","expr":{"Column":2}},{"alias":"$promql_series_identity","expr":{"Column":4}}],"qualifier":null}}}},{"guarantee":null,"id":9,"lifetime":{"AcrossEvaluations":"Memory"},"output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0,1]]},"output_state":{"primitive":"SummaryState","timing":"ingestion_time"},"payload":{"ASAP":{"SummaryAgg":{"child":8,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":{"Reduce":[2,3]}}}}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"id":10,"lifetime":"None","output_schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"instance","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"sum","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0,1]]},"output_state":{"primitive":"Raw","timing":"query_time"},"payload":{"ASAP":{"FinalizeExactAccumulator":{"child":9}}}}],"roots":[6,10],"scalar_roots":[]},"stored_outputs":[{"built_at":"ingestion_run","coverage":{"definition_id":"672f965318f2bf2ba350748044719b9b","selection":[{"columns":[],"relative_time":[{"excluded":-60000},{"included":0}]}]},"inputs":{"raw_sample_windows":[{"end_offset_ms":0,"scan_node_id":0,"time_range_node_id":1,"width_ms":60000}],"stored_outputs":[]},"node_id":2,"retention_ms":60000},{"built_at":"ingestion_run","coverage":{"definition_id":"7976839b25e74a9cfac2ab1d6d01a63a","selection":[{"columns":[],"relative_time":[{"excluded":-60000},{"included":0}]}]},"inputs":{"raw_sample_windows":[],"stored_outputs":[2]},"node_id":5,"retention_ms":60000},{"built_at":"ingestion_run","coverage":{"definition_id":"84209f44520311bced823b9e98eaf85c","selection":[{"columns":[],"relative_time":[{"excluded":-60000},{"included":0}]}]},"inputs":{"raw_sample_windows":[],"stored_outputs":[2]},"node_id":9,"retention_ms":60000}]} -] From 4a84c9c1276c64db917baee2157389d279ce210c Mon Sep 17 00:00:00 2001 From: zzylol <50204836+zzylol@users.noreply.github.com> Date: Sat, 7 Nov 2026 03:54:33 +0000 Subject: [PATCH 05/11] test(devtools): re-baseline corpus and sketch plan snapshots (#1207 PR 9) --- .../corpus_snapshots/o11y_bench/q02.json | 802 +- .../corpus_snapshots/o11y_bench/q05.json | 1188 +- .../corpus_snapshots/o11y_bench/q06.json | 725 +- .../corpus_snapshots/o11y_bench/q11.json | 413 +- .../corpus_snapshots/o11y_bench/q12.json | 86 +- .../corpus_snapshots/o11y_bench/q18.json | 7357 +-------- .../corpus_snapshots/o11y_bench/q19.json | 7235 +-------- .../corpus_snapshots/o11y_bench/q20.json | 235 +- .../corpus_snapshots/o11y_bench/q21.json | 763 +- .../corpus_snapshots/o11y_bench/q22.json | 714 +- .../corpus_snapshots/o11y_bench/q23.json | 630 +- .../corpus_snapshots/o11y_bench/q25.json | 5553 +------ .../corpus_snapshots/o11y_bench/q26.json | 2689 +--- .../corpus_snapshots/o11y_bench/q27.json | 235 +- .../fuzz-issue903-raw-retained.json | 543 +- .../nested-windows-15m-1h-mvp.json | 3518 +--- .../quantile-grouped-mvp.json | 3157 +--- .../quantile-single-mvp.json | 1903 +-- ...random-mixed-seed-862-long-w01-q3-mvp.json | 13417 +--------------- .../random-mixed-seed-862-w01-q3-q8-mvp.json | 8359 +--------- .../random-mixed-seed-862-w02-q2-q7-mvp.json | 9119 +---------- .../ratio-of-quantiles-1h-mvp.json | 3667 +---- .../shared-quantiles-1h-mvp.json | 3517 +--- .../topk-rate-guarantees-ignored-mvp.json | 2097 +-- 24 files changed, 2662 insertions(+), 75260 deletions(-) diff --git a/crates/devtools/tests/corpus_snapshots/o11y_bench/q02.json b/crates/devtools/tests/corpus_snapshots/o11y_bench/q02.json index 5cb411f72..795a4d28b 100644 --- a/crates/devtools/tests/corpus_snapshots/o11y_bench/q02.json +++ b/crates/devtools/tests/corpus_snapshots/o11y_bench/q02.json @@ -1,267 +1,6 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "4f999e82e92588ae4def6db7bcbd4fd7", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "http_request_duration_seconds_bucket" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "4f999e82e92588ae4def6db7bcbd4fd7", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "http_request_duration_seconds_bucket" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "4f999e82e92588ae4def6db7bcbd4fd7", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "http_request_duration_seconds_bucket" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "4f999e82e92588ae4def6db7bcbd4fd7", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "http_request_duration_seconds_bucket" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "4f999e82e92588ae4def6db7bcbd4fd7", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "http_request_duration_seconds_bucket" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - } - ], + "materialized_views": [], "proven_optimal": true, "query": "histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket{job=\"order-service\"}[5m])) by (le))", "selected": { @@ -276,34 +15,34 @@ } ], "cost": { - "cost_per_second": 0.481566859833, + "cost_per_second": 2.8721322047, "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.0000195666666667, + "cpu_core_seconds_per_second": 0.00287208333333, "per_node": { "0": { - "cost_per_second": 0.0074, - "cpu_core_seconds_per_second": 7.4e-6, - "detail": "scan 1000 samples; x 1.0000/s", + "cost_per_second": 2.25700002298, + "cpu_core_seconds_per_second": 0.002257, + "detail": "scan 300000 samples; x 1.0167/s; keeps 19200000 bytes of raw data on disk; holds 64 bytes for 2.8 ms", "multiplier": 1, "operator": "Scan", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "1": { - "cost_per_second": 0.464, - "cpu_core_seconds_per_second": 2e-6, - "detail": "build exact Rate accumulator in 5 tumbling windows of 60000 ms for 1000 groups: 1000 rows x (1 + depth 1); x 1.0000/s; keeps 3696000 bytes", + "cost_per_second": 0.305000022977, + "cpu_core_seconds_per_second": 0.000305, + "detail": "time range 300s: keep 300000 of 300000 rows; x 1.0167/s; holds 64 bytes for 2.8 ms", "multiplier": 1, - "operator": "SummaryTumblingWindowChain", + "operator": "TimeRange", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "2": { - "cost_per_second": 0.0050834045, - "cpu_core_seconds_per_second": 5.08333333333e-6, - "detail": "merge 5000 states into 1000; x 1.0167/s; holds 56000 bytes for 0.0 ms", + "cost_per_second": 0.305020104583, + "cpu_core_seconds_per_second": 0.000305, + "detail": "build exact Rate accumulator into 1000 states: 300000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 2.8 ms", "multiplier": 1, - "operator": "SummaryMerge", + "operator": "SummaryAgg", "price_source": "analytical", "timing": "query_time" }, @@ -317,27 +56,18 @@ "timing": "query_time" }, "4": { - "cost_per_second": 0.00101673783333, - "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1000 states: 1000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 0.0 ms", + "cost_per_second": 0.00204769375, + "cpu_core_seconds_per_second": 2.03333333333e-6, + "detail": "hash aggregate 1000 rows into 1000 groups; x 1.0167/s; holds 40000 bytes for 2.8 ms", "multiplier": 1, - "operator": "SummaryAgg", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" }, "5": { - "cost_per_second": 0.00101666666667, - "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "finalize 1000 accumulators; x 1.0167/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", - "price_source": "analytical", - "timing": "query_time" - }, - "6": { - "cost_per_second": 0.00203338416667, + "cost_per_second": 0.00204769375, "cpu_core_seconds_per_second": 2.03333333333e-6, - "detail": "hash aggregate 1000 rows into 1000 groups; x 1.0167/s; holds 40000 bytes for 0.0 ms", + "detail": "hash aggregate 1000 rows into 1000 groups; x 1.0167/s; holds 40000 bytes for 2.8 ms", "multiplier": 1, "operator": "Aggregate", "price_source": "analytical", @@ -346,18 +76,18 @@ }, "source": "analytical-cost-v2 (illustrative statistics)", "usage": { - "average_memory_bytes": 3696001.54533, - "cpu_ops_per_second": 13166.6666667, - "disk_bytes": 0, + "average_memory_bytes": 390.97096, + "cpu_ops_per_second": 920083.333333, + "disk_bytes": 19200000, "latency_per_query": [ { "compaction_ms": 0.0, - "query_ms": 0.01 + "query_ms": 2.825 } ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 3848064, - "scanned_bytes_per_second": 64000.0 + "peak_cpu_cores": 1, + "peak_memory_bytes": 136128, + "scanned_bytes_per_second": 19520000.0 } }, "dag": { @@ -366,7 +96,7 @@ "consumer": 1, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -377,40 +107,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -423,13 +148,13 @@ }, "producer": 0, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { "consumer": 2, "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -440,43 +165,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -506,8 +223,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -517,32 +233,28 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -572,40 +284,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -622,47 +329,6 @@ }, { "consumer": 5, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "le", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 6, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -676,16 +342,14 @@ "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -695,31 +359,14 @@ ] ] }, - "producer": 5, + "producer": 4, "role": "Input", "window": "NotApplicable" } ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, "lifetime": "None", "output_schema": { @@ -730,40 +377,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -776,7 +418,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -805,40 +447,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -861,9 +498,7 @@ { "guarantee": null, "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, + "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -872,43 +507,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -920,33 +547,18 @@ ] }, "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { + "NonASAP": { + "TimeRange": { "child": 0, - "family": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 5, - "tumbling_window_width_ms": 60000 + "kind": "range", + "range": { + "nanos": 0, + "secs": 300 + } } } } @@ -963,8 +575,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -974,32 +585,28 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -1016,33 +623,62 @@ }, "payload": { "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] + "SummaryAgg": { + "child": 1, + "family": { + "ExactAggregate": [ + "Rate", + "Rate" + ] + }, + "filter": null, + "grouping": "PerSubpopulationInstance", + "input": { + "item": null, + "weight": { + "Column": "SampleValue" + }, + "weight_domain": { + "kind": "unknown_or_signed" + } + }, + "reduction": "PerEntity" } } + }, + "summary_coverage": { + "definition_id": "aeefdc49d753aea37b0b17fda7fe2d25", + "selection": [ + { + "columns": [ + { + "column": { + "column": "job", + "source": "http_request_duration_seconds_bucket" + }, + "constraint": { + "in": [ + { + "Utf8": "order-service" + } + ] + } + } + ], + "relative_time": [ + { + "excluded": -300000 + }, + { + "included": 0 + } + ] + } + ] } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 3, "lifetime": "None", "output_schema": { @@ -1053,40 +689,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -1121,19 +752,14 @@ "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, @@ -1144,30 +770,24 @@ ] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { + "NonASAP": { + "Aggregate": { "child": 3, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [ 3 @@ -1178,86 +798,9 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 5, "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "le", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 4 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 6, - "lifetime": "None", "output_schema": { "closed": false, "fields": [ @@ -1266,8 +809,7 @@ "Plain": "float64" }, "name": "histogram_quantile", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -1280,7 +822,7 @@ "payload": { "NonASAP": { "Aggregate": { - "child": 5, + "child": 4, "filters": [], "having": null, "measures": [ @@ -1306,13 +848,11 @@ } ], "roots": [ - 6 + 5 ], "scalar_roots": [] }, - "display_name": "Q1 Sum acc + Rate acc ×5 tumbling windows · ingestion time: Rate acc for Q1, 5 × 1m tumbling windows" + "display_name": "Q1 Rate acc" }, - "tumbling_window_retention_ms": { - "1": 3900000 - } + "tumbling_window_retention_ms": {} } diff --git a/crates/devtools/tests/corpus_snapshots/o11y_bench/q05.json b/crates/devtools/tests/corpus_snapshots/o11y_bench/q05.json index 4d42935a1..468c8f6e6 100644 --- a/crates/devtools/tests/corpus_snapshots/o11y_bench/q05.json +++ b/crates/devtools/tests/corpus_snapshots/o11y_bench/q05.json @@ -16,169 +16,142 @@ } ], "cost": { - "cost_per_second": 0.955439633013, + "cost_per_second": 5.25966804639, "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.0000314394333333, + "cpu_core_seconds_per_second": 0.00525007073333, "per_node": { "0": { - "cost_per_second": 0.0074, - "cpu_core_seconds_per_second": 7.4e-6, - "detail": "scan 1000 samples; x 1.0000/s", + "cost_per_second": 2.257000042, + "cpu_core_seconds_per_second": 0.002257, + "detail": "scan 300000 samples; x 1.0167/s; keeps 19200000 bytes of raw data on disk; holds 64 bytes for 5.2 ms", "multiplier": 1, "operator": "Scan", "price_source": "analytical", - "timing": "ingestion_time" - }, - "1": { - "cost_per_second": 0.464, - "cpu_core_seconds_per_second": 2e-6, - "detail": "build exact Rate accumulator in 5 tumbling windows of 60000 ms for 1000 groups: 1000 rows x (1 + depth 1); x 1.0000/s; keeps 3696000 bytes", - "multiplier": 1, - "operator": "SummaryTumblingWindowChain", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "10": { - "cost_per_second": 0.00101666676634, - "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.0 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", "timing": "query_time" }, - "11": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", + "1": { + "cost_per_second": 0.305000042001, + "cpu_core_seconds_per_second": 0.000305, + "detail": "time range 300s: keep 300000 of 300000 rows; x 1.0167/s; holds 64 bytes for 5.2 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "TimeRange", "price_source": "analytical", "timing": "query_time" }, - "12": { - "cost_per_second": 1.0166809061e-6, + "10": { + "cost_per_second": 1.0219167374e-6, "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "operator: pass 1 rows; x 1.0167/s; holds 8 bytes for 0.0 ms", + "detail": "operator: pass 1 rows; x 1.0167/s; holds 8 bytes for 5.2 ms", "multiplier": 1, "operator": "BinaryOp", "price_source": "analytical", "timing": "query_time" }, - "13": { - "cost_per_second": 1.0166809061e-6, + "11": { + "cost_per_second": 1.0219167374e-6, "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "operator: pass 1 rows; x 1.0167/s; holds 8 bytes for 0.0 ms", + "detail": "operator: pass 1 rows; x 1.0167/s; holds 8 bytes for 5.2 ms", "multiplier": 1, "operator": "PromqlSubquery", "price_source": "analytical", "timing": "query_time" }, - "14": { - "cost_per_second": 1.0167663427e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "build exact Max accumulator into 1 states: 1 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.0 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "15": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", + "12": { + "cost_per_second": 2.059583687e-6, + "cpu_core_seconds_per_second": 2.03333333333e-9, + "detail": "hash aggregate 1 rows into 1 groups; x 1.0167/s; holds 40 bytes for 5.2 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" }, "2": { - "cost_per_second": 0.00508343300937, - "cpu_core_seconds_per_second": 5.08333333333e-6, - "detail": "merge 5000 states into 1000; x 1.0167/s; holds 56000 bytes for 0.0 ms", + "cost_per_second": 0.305036750495, + "cpu_core_seconds_per_second": 0.000305, + "detail": "build exact Rate accumulator into 1000 states: 300000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 5.2 ms", "multiplier": 1, - "operator": "SummaryMerge", + "operator": "SummaryAgg", "price_source": "analytical", "timing": "query_time" }, "3": { - "cost_per_second": 0.00101666666667, + "cost_per_second": 0.00105866723253, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "finalize 1000 accumulators; x 1.0167/s", + "detail": "finalize 1000 accumulators; x 1.0167/s; holds 64000 bytes for 5.2 ms", "multiplier": 1, "operator": "FinalizeExactAccumulator", "price_source": "analytical", "timing": "query_time" }, "4": { - "cost_per_second": 0.00101666676634, + "cost_per_second": 0.00101668241688, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.0 ms", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 5.2 ms", "multiplier": 1, - "operator": "SummaryAgg", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" }, "5": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", + "cost_per_second": 1.7690000315, + "cpu_core_seconds_per_second": 0.001769, + "detail": "scan 300000 samples; x 1.0167/s; holds 48 bytes for 5.2 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Scan", "price_source": "analytical", "timing": "query_time" }, "6": { - "cost_per_second": 0.0058, - "cpu_core_seconds_per_second": 5.8e-6, - "detail": "scan 1000 samples; x 1.0000/s", + "cost_per_second": 0.31445012732, + "cpu_core_seconds_per_second": 0.000305, + "detail": "time range 300s: keep 300000 of 300000 rows; x 1.0167/s; holds 14400000 bytes for 5.2 ms", "multiplier": 1, - "operator": "Scan", + "operator": "TimeRange", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "7": { - "cost_per_second": 0.464, - "cpu_core_seconds_per_second": 2e-6, - "detail": "build exact Rate accumulator in 5 tumbling windows of 60000 ms for 1000 groups: 1000 rows x (1 + depth 1); x 1.0000/s; keeps 3696000 bytes", + "cost_per_second": 0.305036750495, + "cpu_core_seconds_per_second": 0.000305, + "detail": "build exact Rate accumulator into 1000 states: 300000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 5.2 ms", "multiplier": 1, - "operator": "SummaryTumblingWindowChain", + "operator": "SummaryAgg", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "8": { - "cost_per_second": 0.00508343300937, - "cpu_core_seconds_per_second": 5.08333333333e-6, - "detail": "merge 5000 states into 1000; x 1.0167/s; holds 56000 bytes for 0.0 ms", + "cost_per_second": 0.00104816709107, + "cpu_core_seconds_per_second": 1.01666666667e-6, + "detail": "finalize 1000 accumulators; x 1.0167/s; holds 48000 bytes for 5.2 ms", "multiplier": 1, - "operator": "SummaryMerge", + "operator": "FinalizeExactAccumulator", "price_source": "analytical", "timing": "query_time" }, "9": { - "cost_per_second": 0.00101666666667, + "cost_per_second": 0.00101668241688, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "finalize 1000 accumulators; x 1.0167/s", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 5.2 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" } }, "source": "analytical-cost-v2 (illustrative statistics)", "usage": { - "average_memory_bytes": 7392001.59744, - "cpu_ops_per_second": 20239.4333333, - "disk_bytes": 0, + "average_memory_bytes": 76778.5044241, + "cpu_ops_per_second": 1834070.73333, + "disk_bytes": 19200000, "latency_per_query": [ { "compaction_ms": 0.0, - "query_ms": 0.014006 + "query_ms": 5.164004 } ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 7504296, - "scanned_bytes_per_second": 112000.0 + "peak_cpu_cores": 1, + "peak_memory_bytes": 14624280, + "scanned_bytes_per_second": 34160000.0 } }, "dag": { @@ -187,7 +160,7 @@ "consumer": 1, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -198,40 +171,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -244,13 +212,13 @@ }, "producer": 0, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { "consumer": 2, "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -261,43 +229,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -327,8 +287,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -338,32 +297,28 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -393,40 +348,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -442,39 +392,10 @@ "window": "NotApplicable" }, { - "consumer": 5, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 7, + "consumer": 6, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -485,32 +406,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -521,15 +438,15 @@ ] ] }, - "producer": 6, + "producer": 5, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { - "consumer": 8, + "consumer": 7, "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -540,35 +457,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -579,12 +489,12 @@ ] ] }, - "producer": 7, + "producer": 6, "role": "Input", "window": "NotApplicable" }, { - "consumer": 9, + "consumer": 8, "data_state": { "primitive": "SummaryState", "timing": "query_time" @@ -598,8 +508,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -609,24 +518,21 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -637,12 +543,12 @@ ] ] }, - "producer": 8, + "producer": 7, "role": "Input", "window": "NotApplicable" }, { - "consumer": 10, + "consumer": 9, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -656,32 +562,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -692,41 +594,12 @@ ] ] }, - "producer": 9, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 11, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 10, + "producer": 8, "role": "Input", "window": "NotApplicable" }, { - "consumer": 12, + "consumer": 10, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -740,19 +613,18 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, "unique_keys": [] }, - "producer": 5, + "producer": 4, "role": "Left", "window": "NotApplicable" }, { - "consumer": 12, + "consumer": 10, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -766,19 +638,18 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, "unique_keys": [] }, - "producer": 11, + "producer": 9, "role": "Right", "window": "NotApplicable" }, { - "consumer": 13, + "consumer": 11, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -792,19 +663,18 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, "unique_keys": [] }, - "producer": 12, + "producer": 10, "role": "Input", "window": "NotApplicable" }, { - "consumer": 14, + "consumer": 12, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -818,67 +688,20 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 13, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 15, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Max", - "Max" - ] - }, - "name": "state", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, "unique_keys": [] }, - "producer": 14, + "producer": 11, "role": "Input", "window": "NotApplicable" } ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, "lifetime": "None", "output_schema": { @@ -889,40 +712,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -935,7 +753,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -978,40 +796,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -1034,9 +847,7 @@ { "guarantee": null, "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, + "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -1045,43 +856,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -1093,33 +896,18 @@ ] }, "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { + "NonASAP": { + "TimeRange": { "child": 0, - "family": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 5, - "tumbling_window_width_ms": 60000 + "kind": "range", + "range": { + "nanos": 0, + "secs": 300 + } } } } @@ -1136,8 +924,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -1147,32 +934,28 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -1189,35 +972,66 @@ }, "payload": { "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] + "SummaryAgg": { + "child": 1, + "family": { + "ExactAggregate": [ + "Rate", + "Rate" + ] + }, + "filter": null, + "grouping": "PerSubpopulationInstance", + "input": { + "item": null, + "weight": { + "Column": "SampleValue" + }, + "weight_domain": { + "kind": "unknown_or_signed" + } + }, + "reduction": "PerEntity" } } + }, + "summary_coverage": { + "definition_id": "caf3fecd1c6dc71951cfb72b2edf5845", + "selection": [ + { + "columns": [ + { + "column": { + "column": "job", + "source": "http_requests_total" + }, + "constraint": { + "in": [ + { + "Utf8": "order-service" + } + ] + } + } + ], + "relative_time": [ + { + "excluded": -300000 + }, + { + "included": 0 + } + ] + } + ] } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 3, - "lifetime": "None", + "lifetime": { + "OneEvaluation": "Memory" + }, "output_schema": { "closed": true, "fields": [ @@ -1226,40 +1040,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -1291,44 +1100,34 @@ "fields": [ { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, "unique_keys": [] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { + "NonASAP": { + "Aggregate": { "child": 3, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [] } @@ -1337,74 +1136,9 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 5, "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 4 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 6, - "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -1413,32 +1147,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -1451,7 +1181,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -1480,32 +1210,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -1527,9 +1253,9 @@ }, { "guarantee": null, - "id": 7, + "id": 6, "lifetime": { - "AcrossEvaluations": "Memory" + "OneEvaluation": "Memory" }, "output_schema": { "closed": true, @@ -1539,35 +1265,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -1579,41 +1298,28 @@ ] }, "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 6, - "family": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 5, - "tumbling_window_width_ms": 60000 + "NonASAP": { + "TimeRange": { + "child": 5, + "kind": "range", + "range": { + "nanos": 0, + "secs": 300 + } } } } }, { "guarantee": null, - "id": 8, - "lifetime": "None", + "id": 7, + "lifetime": { + "OneEvaluation": "Memory" + }, "output_schema": { "closed": true, "fields": [ @@ -1622,8 +1328,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -1633,24 +1338,21 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -1667,35 +1369,66 @@ }, "payload": { "ASAP": { - "SummaryMerge": { - "children": [ - 7 - ] + "SummaryAgg": { + "child": 6, + "family": { + "ExactAggregate": [ + "Rate", + "Rate" + ] + }, + "filter": null, + "grouping": "PerSubpopulationInstance", + "input": { + "item": null, + "weight": { + "Column": "SampleValue" + }, + "weight_domain": { + "kind": "unknown_or_signed" + } + }, + "reduction": "PerEntity" } } + }, + "summary_coverage": { + "definition_id": "8be6f460159e1d9e159ea39fa3f1c90b", + "selection": [ + { + "columns": [ + { + "column": { + "column": "job", + "source": "http_requests_total" + }, + "constraint": { + "in": [ + { + "Utf8": "order-service" + } + ] + } + } + ], + "relative_time": [ + { + "excluded": -300000 + }, + { + "included": 0 + } + ] + } + ] } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } + "guarantee": null, + "id": 8, + "lifetime": { + "OneEvaluation": "Memory" }, - "id": 9, - "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -1704,32 +1437,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -1747,86 +1476,17 @@ "payload": { "ASAP": { "FinalizeExactAccumulator": { - "child": 8 + "child": 7 } } } }, { "guarantee": null, - "id": 10, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryAgg": { - "child": 9, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": { - "Reduce": [] - } - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } + "id": 9, + "lifetime": { + "OneEvaluation": "Memory" }, - "id": 11, - "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -1835,8 +1495,7 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -1847,34 +1506,33 @@ "timing": "query_time" }, "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 10 + "NonASAP": { + "Aggregate": { + "child": 8, + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" + } + ], + "output_names": [ + "" + ], + "reduction": { + "Reduce": [] + } } } } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } + "guarantee": null, + "id": 10, + "lifetime": { + "OneEvaluation": "Memory" }, - "id": 12, - "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -1883,8 +1541,7 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -1897,7 +1554,7 @@ "payload": { "NonASAP": { "BinaryOp": { - "lhs": 5, + "lhs": 4, "operator": { "checked_finite_division": false, "checked_relative_division": false, @@ -1907,32 +1564,17 @@ "vector_match": null }, "return_bool": false, - "rhs": 11 + "rhs": 9 } } } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } + "guarantee": null, + "id": 11, + "lifetime": { + "OneEvaluation": "Memory" }, - "id": 13, - "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -1941,8 +1583,7 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -1955,7 +1596,7 @@ "payload": { "NonASAP": { "PromqlSubquery": { - "child": 12, + "child": 10, "range": { "nanos": 0, "secs": 21600 @@ -1970,76 +1611,7 @@ }, { "guarantee": null, - "id": 14, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Max", - "Max" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryAgg": { - "child": 13, - "family": { - "ExactAggregate": [ - "Max", - "Max" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity" - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 15, + "id": 12, "lifetime": "None", "output_schema": { "closed": true, @@ -2049,8 +1621,7 @@ "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -2061,23 +1632,32 @@ "timing": "query_time" }, "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 14 + "NonASAP": { + "Aggregate": { + "child": 11, + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "max" + } + ], + "output_names": [ + "" + ], + "reduction": "PerEntity" } } } } ], "roots": [ - 15 + 12 ], "scalar_roots": [] }, - "display_name": "Q1 Max acc + Sum acc + Rate acc ×5 tumbling windows · ingestion time: Rate acc for Q1, 5 × 1m tumbling windows, Rate acc for Q1, 5 × 1m tumbling windows" + "display_name": "Q1 Rate acc · query time, shared: FinalizeExactAccumulator, TimeRange, Rate acc, FinalizeExactAccumulator, Aggregate, BinaryOp, PromqlSubquery" }, - "tumbling_window_retention_ms": { - "1": 3900000, - "7": 3900000 - } + "tumbling_window_retention_ms": {} } diff --git a/crates/devtools/tests/corpus_snapshots/o11y_bench/q06.json b/crates/devtools/tests/corpus_snapshots/o11y_bench/q06.json index 8cca94ae9..b2b35a452 100644 --- a/crates/devtools/tests/corpus_snapshots/o11y_bench/q06.json +++ b/crates/devtools/tests/corpus_snapshots/o11y_bench/q06.json @@ -16,34 +16,34 @@ } ], "cost": { - "cost_per_second": 0.484617010313, + "cost_per_second": 2.87519663514, "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.0000226166666667, + "cpu_core_seconds_per_second": 0.00287513333333, "per_node": { "0": { - "cost_per_second": 0.0074, - "cpu_core_seconds_per_second": 7.4e-6, - "detail": "scan 1000 samples; x 1.0000/s", + "cost_per_second": 2.257000023, + "cpu_core_seconds_per_second": 0.002257, + "detail": "scan 300000 samples; x 1.0167/s; keeps 19200000 bytes of raw data on disk; holds 64 bytes for 2.8 ms", "multiplier": 1, "operator": "Scan", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "1": { - "cost_per_second": 0.464, - "cpu_core_seconds_per_second": 2e-6, - "detail": "build exact Rate accumulator in 5 tumbling windows of 60000 ms for 1000 groups: 1000 rows x (1 + depth 1); x 1.0000/s; keeps 3696000 bytes", + "cost_per_second": 0.305000023001, + "cpu_core_seconds_per_second": 0.000305, + "detail": "time range 300s: keep 300000 of 300000 rows; x 1.0167/s; holds 64 bytes for 2.8 ms", "multiplier": 1, - "operator": "SummaryTumblingWindowChain", + "operator": "TimeRange", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "2": { - "cost_per_second": 0.00508342585, - "cpu_core_seconds_per_second": 5.08333333333e-6, - "detail": "merge 5000 states into 1000; x 1.0167/s; holds 56000 bytes for 0.0 ms", + "cost_per_second": 0.305020125933, + "cpu_core_seconds_per_second": 0.000305, + "detail": "build exact Rate accumulator into 1000 states: 300000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 2.8 ms", "multiplier": 1, - "operator": "SummaryMerge", + "operator": "SummaryAgg", "price_source": "analytical", "timing": "query_time" }, @@ -57,74 +57,56 @@ "timing": "query_time" }, "4": { - "cost_per_second": 0.00101675918333, - "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1000 states: 1000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 0.0 ms", + "cost_per_second": 0.002047709, + "cpu_core_seconds_per_second": 2.03333333333e-6, + "detail": "hash aggregate 1000 rows into 1000 groups; x 1.0167/s; holds 40000 bytes for 2.8 ms", "multiplier": 1, - "operator": "SummaryAgg", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" }, "5": { - "cost_per_second": 0.00101666666667, - "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "finalize 1000 accumulators; x 1.0167/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", - "price_source": "analytical", - "timing": "query_time" - }, - "6": { - "cost_per_second": 0.00203339941667, + "cost_per_second": 0.002047709, "cpu_core_seconds_per_second": 2.03333333333e-6, - "detail": "hash aggregate 1000 rows into 1000 groups; x 1.0167/s; holds 40000 bytes for 0.0 ms", + "detail": "hash aggregate 1000 rows into 1000 groups; x 1.0167/s; holds 40000 bytes for 2.8 ms", "multiplier": 1, "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" }, - "7": { - "cost_per_second": 0.00101666667988, + "6": { + "cost_per_second": 0.0010166695418, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "operator: pass 1000 rows; x 1.0167/s; holds 8 bytes for 0.0 ms", + "detail": "operator: pass 1000 rows; x 1.0167/s; holds 8 bytes for 2.8 ms", "multiplier": 1, "operator": "PromqlSubquery", "price_source": "analytical", "timing": "query_time" }, - "8": { - "cost_per_second": 0.00101675918333, - "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Max accumulator into 1000 states: 1000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 0.0 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "9": { - "cost_per_second": 0.00101666666667, - "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "finalize 1000 accumulators; x 1.0167/s", + "7": { + "cost_per_second": 0.002047709, + "cpu_core_seconds_per_second": 2.03333333333e-6, + "detail": "hash aggregate 1000 rows into 1000 groups; x 1.0167/s; holds 40000 bytes for 2.8 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" } }, "source": "analytical-cost-v2 (illustrative statistics)", "usage": { - "average_memory_bytes": 3696002.74917, - "cpu_ops_per_second": 16216.6666667, - "disk_bytes": 0, + "average_memory_bytes": 506.4144848, + "cpu_ops_per_second": 923133.333333, + "disk_bytes": 19200000, "latency_per_query": [ { "compaction_ms": 0.0, - "query_ms": 0.013 + "query_ms": 2.828 } ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 3904072, - "scanned_bytes_per_second": 64000.0 + "peak_cpu_cores": 1, + "peak_memory_bytes": 176136, + "scanned_bytes_per_second": 19520000.0 } }, "dag": { @@ -133,7 +115,7 @@ "consumer": 1, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -144,40 +126,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -190,13 +167,13 @@ }, "producer": 0, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { "consumer": 2, "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -207,43 +184,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -273,8 +242,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -284,32 +252,28 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -339,40 +303,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -389,47 +348,6 @@ }, { "consumer": 5, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "le", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 6, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -443,16 +361,14 @@ "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -462,12 +378,12 @@ ] ] }, - "producer": 5, + "producer": 4, "role": "Input", "window": "NotApplicable" }, { - "consumer": 7, + "consumer": 6, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -481,19 +397,18 @@ "Plain": "float64" }, "name": "histogram_quantile", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, "unique_keys": [] }, - "producer": 6, + "producer": 5, "role": "Input", "window": "NotApplicable" }, { - "consumer": 8, + "consumer": 7, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -507,67 +422,20 @@ "Plain": "float64" }, "name": "histogram_quantile", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 7, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 9, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": false, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Max", - "Max" - ] - }, - "name": "state", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, "unique_keys": [] }, - "producer": 8, + "producer": 6, "role": "Input", "window": "NotApplicable" } ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, "lifetime": "None", "output_schema": { @@ -578,40 +446,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -624,7 +487,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -653,40 +516,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -709,9 +567,7 @@ { "guarantee": null, "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, + "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -720,43 +576,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -768,33 +616,18 @@ ] }, "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { + "NonASAP": { + "TimeRange": { "child": 0, - "family": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 5, - "tumbling_window_width_ms": 60000 + "kind": "range", + "range": { + "nanos": 0, + "secs": 300 + } } } } @@ -811,8 +644,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -822,32 +654,28 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -864,33 +692,62 @@ }, "payload": { "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] + "SummaryAgg": { + "child": 1, + "family": { + "ExactAggregate": [ + "Rate", + "Rate" + ] + }, + "filter": null, + "grouping": "PerSubpopulationInstance", + "input": { + "item": null, + "weight": { + "Column": "SampleValue" + }, + "weight_domain": { + "kind": "unknown_or_signed" + } + }, + "reduction": "PerEntity" } } + }, + "summary_coverage": { + "definition_id": "aeefdc49d753aea37b0b17fda7fe2d25", + "selection": [ + { + "columns": [ + { + "column": { + "column": "job", + "source": "http_request_duration_seconds_bucket" + }, + "constraint": { + "in": [ + { + "Utf8": "user-service" + } + ] + } + } + ], + "relative_time": [ + { + "excluded": -300000 + }, + { + "included": 0 + } + ] + } + ] } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 3, "lifetime": "None", "output_schema": { @@ -901,40 +758,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -969,19 +821,14 @@ "Plain": "utf8" }, "name": "le", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, @@ -992,30 +839,24 @@ ] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { + "NonASAP": { + "Aggregate": { "child": 3, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [ 3 @@ -1026,86 +867,9 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 5, "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "le", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 4 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 6, - "lifetime": "None", "output_schema": { "closed": false, "fields": [ @@ -1114,8 +878,7 @@ "Plain": "float64" }, "name": "histogram_quantile", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -1128,7 +891,7 @@ "payload": { "NonASAP": { "Aggregate": { - "child": 5, + "child": 4, "filters": [], "having": null, "measures": [ @@ -1153,25 +916,8 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 7, + "guarantee": null, + "id": 6, "lifetime": "None", "output_schema": { "closed": false, @@ -1181,8 +927,7 @@ "Plain": "float64" }, "name": "histogram_quantile", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -1195,7 +940,7 @@ "payload": { "NonASAP": { "PromqlSubquery": { - "child": 6, + "child": 5, "range": { "nanos": 0, "secs": 43200 @@ -1210,76 +955,7 @@ }, { "guarantee": null, - "id": 8, - "lifetime": "None", - "output_schema": { - "closed": false, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Max", - "Max" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryAgg": { - "child": 7, - "family": { - "ExactAggregate": [ - "Max", - "Max" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity" - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 9, + "id": 7, "lifetime": "None", "output_schema": { "closed": false, @@ -1289,8 +965,7 @@ "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -1301,22 +976,32 @@ "timing": "query_time" }, "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 8 + "NonASAP": { + "Aggregate": { + "child": 6, + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "max" + } + ], + "output_names": [ + "" + ], + "reduction": "PerEntity" } } } } ], "roots": [ - 9 + 7 ], "scalar_roots": [] }, - "display_name": "Q1 Max acc + Sum acc + Rate acc ×5 tumbling windows · ingestion time: Rate acc for Q1, 5 × 1m tumbling windows" + "display_name": "Q1 Rate acc" }, - "tumbling_window_retention_ms": { - "1": 3900000 - } + "tumbling_window_retention_ms": {} } diff --git a/crates/devtools/tests/corpus_snapshots/o11y_bench/q11.json b/crates/devtools/tests/corpus_snapshots/o11y_bench/q11.json index 33b444675..bb30ea13d 100644 --- a/crates/devtools/tests/corpus_snapshots/o11y_bench/q11.json +++ b/crates/devtools/tests/corpus_snapshots/o11y_bench/q11.json @@ -16,9 +16,9 @@ } ], "cost": { - "cost_per_second": 0.00630740014507, + "cost_per_second": 0.00630638344054, "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 6.3074e-6, + "cpu_core_seconds_per_second": 6.30638333333e-6, "per_node": { "0": { "cost_per_second": 0.00427000002523, @@ -30,7 +30,7 @@ "timing": "query_time" }, "1": { - "cost_per_second": 0.0010166666919, + "cost_per_second": 0.00101666669189, "cpu_core_seconds_per_second": 1.01666666667e-6, "detail": "time range 1s: keep 1000 of 1000 rows; x 1.0167/s; holds 32 bytes for 0.0 ms", "multiplier": 1, @@ -39,25 +39,16 @@ "timing": "query_time" }, "2": { - "cost_per_second": 0.00101666671082, + "cost_per_second": 0.00101666668559, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.0 ms", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 0.0 ms", "multiplier": 1, - "operator": "SummaryAgg", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" }, "3": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", - "price_source": "analytical", - "timing": "query_time" - }, - "4": { - "cost_per_second": 1.01667297407e-6, + "cost_per_second": 1.01667297305e-6, "cpu_core_seconds_per_second": 1.01666666667e-9, "detail": "operator: pass 1 rows; x 1.0167/s; holds 8 bytes for 0.0 ms", "multiplier": 1, @@ -65,38 +56,29 @@ "price_source": "analytical", "timing": "query_time" }, - "5": { - "cost_per_second": 1.01671081847e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "build exact Max accumulator into 1 states: 1 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.0 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "6": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", + "4": { + "cost_per_second": 2.03336486525e-6, + "cpu_core_seconds_per_second": 2.03333333333e-9, + "detail": "hash aggregate 1 rows into 1 groups; x 1.0167/s; holds 40 bytes for 0.0 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" } }, "source": "analytical-cost-v2 (illustrative statistics)", "usage": { - "average_memory_bytes": 0.0011605616, - "cpu_ops_per_second": 3054.06666667, + "average_memory_bytes": 0.000857668133333, + "cpu_ops_per_second": 3053.05, "disk_bytes": 32000, "latency_per_query": [ { "compaction_ms": 0.0, - "query_ms": 0.006204 + "query_ms": 0.006203 } ], "peak_cpu_cores": 1, - "peak_memory_bytes": 184, + "peak_memory_bytes": 136, "scanned_bytes_per_second": 32533.3333333 } }, @@ -117,24 +99,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -164,24 +143,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -198,35 +174,6 @@ }, { "consumer": 3, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 2, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 4, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -240,19 +187,18 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, "unique_keys": [] }, - "producer": 3, + "producer": 2, "role": "Input", "window": "NotApplicable" }, { - "consumer": 5, + "consumer": 4, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -266,67 +212,20 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 6, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Max", - "Max" - ] - }, - "name": "state", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, "unique_keys": [] }, - "producer": 5, + "producer": 3, "role": "Input", "window": "NotApplicable" } ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, "lifetime": "None", "output_schema": { @@ -337,24 +236,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -381,24 +277,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -419,24 +312,7 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 1, "lifetime": "None", "output_schema": { @@ -447,24 +323,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -501,44 +374,34 @@ "fields": [ { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, "unique_keys": [] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { + "NonASAP": { + "Aggregate": { "child": 1, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [] } @@ -547,24 +410,7 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 3, "lifetime": "None", "output_schema": { @@ -575,56 +421,7 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 2 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 4, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -637,7 +434,7 @@ "payload": { "NonASAP": { "PromqlSubquery": { - "child": 3, + "child": 2, "range": { "nanos": 0, "secs": 21600 @@ -652,76 +449,7 @@ }, { "guarantee": null, - "id": 5, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Max", - "Max" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryAgg": { - "child": 4, - "family": { - "ExactAggregate": [ - "Max", - "Max" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity" - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 6, + "id": 4, "lifetime": "None", "output_schema": { "closed": true, @@ -731,8 +459,7 @@ "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -743,20 +470,32 @@ "timing": "query_time" }, "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 5 + "NonASAP": { + "Aggregate": { + "child": 3, + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "max" + } + ], + "output_names": [ + "" + ], + "reduction": "PerEntity" } } } } ], "roots": [ - 6 + 4 ], "scalar_roots": [] }, - "display_name": "Q1 Max acc + Sum acc" + "display_name": "Q1 exact" }, "tumbling_window_retention_ms": {} } diff --git a/crates/devtools/tests/corpus_snapshots/o11y_bench/q12.json b/crates/devtools/tests/corpus_snapshots/o11y_bench/q12.json index 8f1b22d92..3abe8e63f 100644 --- a/crates/devtools/tests/corpus_snapshots/o11y_bench/q12.json +++ b/crates/devtools/tests/corpus_snapshots/o11y_bench/q12.json @@ -71,32 +71,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -114,24 +110,7 @@ ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, "lifetime": "None", "output_schema": { @@ -142,32 +121,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -209,32 +184,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -255,24 +226,7 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 1, "lifetime": "None", "output_schema": { @@ -283,32 +237,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, diff --git a/crates/devtools/tests/corpus_snapshots/o11y_bench/q18.json b/crates/devtools/tests/corpus_snapshots/o11y_bench/q18.json index a491b2f63..652fbf523 100644 --- a/crates/devtools/tests/corpus_snapshots/o11y_bench/q18.json +++ b/crates/devtools/tests/corpus_snapshots/o11y_bench/q18.json @@ -1,6247 +1,6 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -21660000 - }, - { - "included": -21600000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21600000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 0, - "node_id": 3, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -21720000 - }, - { - "included": -21660000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21660000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 1, - "node_id": 6, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -21780000 - }, - { - "included": -21720000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21720000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 2, - "node_id": 9, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -21840000 - }, - { - "included": -21780000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21780000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 3, - "node_id": 12, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -21900000 - }, - { - "included": -21840000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21840000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 4, - "node_id": 15, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -21960000 - }, - { - "included": -21900000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21900000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 5, - "node_id": 18, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22020000 - }, - { - "included": -21960000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21960000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 6, - "node_id": 21, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22080000 - }, - { - "included": -22020000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22020000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 7, - "node_id": 24, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22140000 - }, - { - "included": -22080000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22080000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 8, - "node_id": 27, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22200000 - }, - { - "included": -22140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22140000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 9, - "node_id": 30, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22260000 - }, - { - "included": -22200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22200000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 10, - "node_id": 33, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22320000 - }, - { - "included": -22260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22260000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 11, - "node_id": 36, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22380000 - }, - { - "included": -22320000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22320000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 12, - "node_id": 39, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22440000 - }, - { - "included": -22380000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22380000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 13, - "node_id": 42, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22500000 - }, - { - "included": -22440000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22440000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 14, - "node_id": 45, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22560000 - }, - { - "included": -22500000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22500000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 15, - "node_id": 48, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22620000 - }, - { - "included": -22560000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22560000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 16, - "node_id": 51, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22680000 - }, - { - "included": -22620000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22620000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 17, - "node_id": 54, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22740000 - }, - { - "included": -22680000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22680000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 18, - "node_id": 57, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22800000 - }, - { - "included": -22740000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22740000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 19, - "node_id": 60, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22860000 - }, - { - "included": -22800000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22800000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 20, - "node_id": 63, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22920000 - }, - { - "included": -22860000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22860000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 21, - "node_id": 66, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22980000 - }, - { - "included": -22920000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22920000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 22, - "node_id": 69, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23040000 - }, - { - "included": -22980000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22980000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 23, - "node_id": 72, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23100000 - }, - { - "included": -23040000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23040000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 24, - "node_id": 75, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23160000 - }, - { - "included": -23100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23100000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 25, - "node_id": 78, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23220000 - }, - { - "included": -23160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23160000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 26, - "node_id": 81, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23280000 - }, - { - "included": -23220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23220000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 27, - "node_id": 84, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23340000 - }, - { - "included": -23280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23280000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 28, - "node_id": 87, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23400000 - }, - { - "included": -23340000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23340000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 29, - "node_id": 90, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23460000 - }, - { - "included": -23400000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23400000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 30, - "node_id": 93, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23520000 - }, - { - "included": -23460000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23460000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 31, - "node_id": 96, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23580000 - }, - { - "included": -23520000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23520000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 32, - "node_id": 99, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23640000 - }, - { - "included": -23580000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23580000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 33, - "node_id": 102, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23700000 - }, - { - "included": -23640000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23640000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 34, - "node_id": 105, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23760000 - }, - { - "included": -23700000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23700000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 35, - "node_id": 108, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23820000 - }, - { - "included": -23760000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23760000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 36, - "node_id": 111, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23880000 - }, - { - "included": -23820000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23820000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 37, - "node_id": 114, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23940000 - }, - { - "included": -23880000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23880000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 38, - "node_id": 117, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24000000 - }, - { - "included": -23940000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23940000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 39, - "node_id": 120, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24060000 - }, - { - "included": -24000000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24000000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 40, - "node_id": 123, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24120000 - }, - { - "included": -24060000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24060000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 41, - "node_id": 126, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24180000 - }, - { - "included": -24120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24120000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 42, - "node_id": 129, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24240000 - }, - { - "included": -24180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24180000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 43, - "node_id": 132, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24300000 - }, - { - "included": -24240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24240000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 44, - "node_id": 135, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24360000 - }, - { - "included": -24300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24300000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 45, - "node_id": 138, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24420000 - }, - { - "included": -24360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24360000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 46, - "node_id": 141, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24480000 - }, - { - "included": -24420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24420000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 47, - "node_id": 144, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24540000 - }, - { - "included": -24480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24480000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 48, - "node_id": 147, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24600000 - }, - { - "included": -24540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24540000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 49, - "node_id": 150, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24660000 - }, - { - "included": -24600000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24600000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 50, - "node_id": 153, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24720000 - }, - { - "included": -24660000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24660000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 51, - "node_id": 156, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24780000 - }, - { - "included": -24720000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24720000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 52, - "node_id": 159, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24840000 - }, - { - "included": -24780000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24780000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 53, - "node_id": 162, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24900000 - }, - { - "included": -24840000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24840000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 54, - "node_id": 165, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24960000 - }, - { - "included": -24900000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24900000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 55, - "node_id": 168, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -25020000 - }, - { - "included": -24960000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24960000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 56, - "node_id": 171, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -25080000 - }, - { - "included": -25020000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 25020000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 57, - "node_id": 174, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -25140000 - }, - { - "included": -25080000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 25080000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 58, - "node_id": 177, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -25200000 - }, - { - "included": -25140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 25140000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 59, - "node_id": 180, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -21660000 - }, - { - "included": -21600000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21600000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 0, - "node_id": 188, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -21720000 - }, - { - "included": -21660000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21660000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 1, - "node_id": 191, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -21780000 - }, - { - "included": -21720000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21720000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 2, - "node_id": 194, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -21840000 - }, - { - "included": -21780000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21780000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 3, - "node_id": 197, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -21900000 - }, - { - "included": -21840000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21840000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 4, - "node_id": 200, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -21960000 - }, - { - "included": -21900000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21900000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 5, - "node_id": 203, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22020000 - }, - { - "included": -21960000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21960000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 6, - "node_id": 206, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22080000 - }, - { - "included": -22020000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22020000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 7, - "node_id": 209, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22140000 - }, - { - "included": -22080000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22080000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 8, - "node_id": 212, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22200000 - }, - { - "included": -22140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22140000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 9, - "node_id": 215, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22260000 - }, - { - "included": -22200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22200000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 10, - "node_id": 218, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22320000 - }, - { - "included": -22260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22260000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 11, - "node_id": 221, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22380000 - }, - { - "included": -22320000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22320000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 12, - "node_id": 224, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22440000 - }, - { - "included": -22380000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22380000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 13, - "node_id": 227, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22500000 - }, - { - "included": -22440000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22440000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 14, - "node_id": 230, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22560000 - }, - { - "included": -22500000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22500000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 15, - "node_id": 233, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22620000 - }, - { - "included": -22560000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22560000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 16, - "node_id": 236, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22680000 - }, - { - "included": -22620000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22620000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 17, - "node_id": 239, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22740000 - }, - { - "included": -22680000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22680000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 18, - "node_id": 242, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22800000 - }, - { - "included": -22740000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22740000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 19, - "node_id": 245, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22860000 - }, - { - "included": -22800000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22800000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 20, - "node_id": 248, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22920000 - }, - { - "included": -22860000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22860000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 21, - "node_id": 251, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -22980000 - }, - { - "included": -22920000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22920000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 22, - "node_id": 254, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23040000 - }, - { - "included": -22980000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22980000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 23, - "node_id": 257, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23100000 - }, - { - "included": -23040000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23040000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 24, - "node_id": 260, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23160000 - }, - { - "included": -23100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23100000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 25, - "node_id": 263, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23220000 - }, - { - "included": -23160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23160000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 26, - "node_id": 266, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23280000 - }, - { - "included": -23220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23220000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 27, - "node_id": 269, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23340000 - }, - { - "included": -23280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23280000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 28, - "node_id": 272, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23400000 - }, - { - "included": -23340000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23340000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 29, - "node_id": 275, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23460000 - }, - { - "included": -23400000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23400000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 30, - "node_id": 278, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23520000 - }, - { - "included": -23460000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23460000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 31, - "node_id": 281, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23580000 - }, - { - "included": -23520000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23520000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 32, - "node_id": 284, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23640000 - }, - { - "included": -23580000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23580000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 33, - "node_id": 287, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23700000 - }, - { - "included": -23640000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23640000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 34, - "node_id": 290, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23760000 - }, - { - "included": -23700000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23700000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 35, - "node_id": 293, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23820000 - }, - { - "included": -23760000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23760000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 36, - "node_id": 296, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23880000 - }, - { - "included": -23820000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23820000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 37, - "node_id": 299, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -23940000 - }, - { - "included": -23880000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23880000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 38, - "node_id": 302, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24000000 - }, - { - "included": -23940000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23940000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 39, - "node_id": 305, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24060000 - }, - { - "included": -24000000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24000000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 40, - "node_id": 308, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24120000 - }, - { - "included": -24060000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24060000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 41, - "node_id": 311, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24180000 - }, - { - "included": -24120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24120000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 42, - "node_id": 314, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24240000 - }, - { - "included": -24180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24180000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 43, - "node_id": 317, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24300000 - }, - { - "included": -24240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24240000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 44, - "node_id": 320, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24360000 - }, - { - "included": -24300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24300000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 45, - "node_id": 323, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24420000 - }, - { - "included": -24360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24360000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 46, - "node_id": 326, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24480000 - }, - { - "included": -24420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24420000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 47, - "node_id": 329, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24540000 - }, - { - "included": -24480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24480000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 48, - "node_id": 332, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24600000 - }, - { - "included": -24540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24540000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 49, - "node_id": 335, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24660000 - }, - { - "included": -24600000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24600000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 50, - "node_id": 338, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24720000 - }, - { - "included": -24660000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24660000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 51, - "node_id": 341, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24780000 - }, - { - "included": -24720000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24720000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 52, - "node_id": 344, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24840000 - }, - { - "included": -24780000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24780000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 53, - "node_id": 347, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24900000 - }, - { - "included": -24840000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24840000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 54, - "node_id": 350, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -24960000 - }, - { - "included": -24900000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24900000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 55, - "node_id": 353, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -25020000 - }, - { - "included": -24960000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24960000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 56, - "node_id": 356, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -25080000 - }, - { - "included": -25020000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 25020000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 57, - "node_id": 359, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -25140000 - }, - { - "included": -25080000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 25080000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 58, - "node_id": 362, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -25200000 - }, - { - "included": -25140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 25140000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 59, - "node_id": 365, - "refresh": "at_ingestion", - "retention_ms": 28800000, - "stage2_node_id": 9 - } - ], + "materialized_views": [], "proven_optimal": true, "query": "sum(increase(http_requests_total{job=\"payment-service\",status=~\"5..\"}[1h] offset 6h)) / sum(increase(http_requests_total{job=\"payment-service\"}[1h] offset 6h))", "selected": { @@ -6256,88 +15,70 @@ } ], "cost": { - "cost_per_second": 6.87727148353, + "cost_per_second": 62.9573290081, "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.000143269716667, + "cpu_core_seconds_per_second": 0.0629560676833, "per_node": { "0": { - "cost_per_second": 0.0074, - "cpu_core_seconds_per_second": 7.4e-6, - "detail": "scan 1000 samples; x 1.0000/s", + "cost_per_second": 27.0840005036, + "cpu_core_seconds_per_second": 0.027084, + "detail": "scan 3600000 samples; x 1.0167/s; keeps 1612800000 bytes of raw data on disk; holds 64 bytes for 61.9 ms", "multiplier": 1, "operator": "Scan", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "1": { "cost_per_second": 0.0, "cpu_core_seconds_per_second": 0.0, - "detail": "time shift: pass 1000 rows, free; x 1.0000/s", + "detail": "time shift: pass 3600000 rows, free; x 1.0167/s", "multiplier": 1, "operator": "TimeShift", "price_source": "analytical", - "timing": "ingestion_time" - }, - "10": { - "cost_per_second": 0.061000882488, - "cpu_core_seconds_per_second": 0.000061, - "detail": "merge 60000 states into 1000; x 1.0167/s; holds 56000 bytes for 0.1 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", "timing": "query_time" }, - "11": { - "cost_per_second": 0.00101666666667, + "10": { + "cost_per_second": 0.00139440307277, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "finalize 1000 accumulators; x 1.0167/s", + "detail": "finalize 1000 accumulators; x 1.0167/s; holds 48000 bytes for 61.9 ms", "multiplier": 1, "operator": "FinalizeExactAccumulator", "price_source": "analytical", "timing": "query_time" }, - "12": { - "cost_per_second": 0.00101666754915, + "11": { + "cost_per_second": 0.00101685553487, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.1 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "13": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 61.9 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" }, - "14": { - "cost_per_second": 1.01679273638e-6, + "12": { + "cost_per_second": 1.07962273435e-6, "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "operator: pass 1 rows; x 1.0167/s; holds 8 bytes for 0.1 ms", + "detail": "operator: pass 1 rows; x 1.0167/s; holds 8 bytes for 61.9 ms", "multiplier": 1, "operator": "BinaryOp", "price_source": "analytical", "timing": "query_time" }, "2": { - "cost_per_second": 3.369, - "cpu_core_seconds_per_second": 2e-6, - "detail": "build exact Increase accumulator in 60 tumbling windows of 60000 ms for 1000 groups: 1000 rows x (1 + depth 1); x 1.0000/s; keeps 26936000 bytes", + "cost_per_second": 3.66000050365, + "cpu_core_seconds_per_second": 0.00366, + "detail": "time range 3600s: keep 3600000 of 3600000 rows; x 1.0167/s; holds 64 bytes for 61.9 ms", "multiplier": 1, - "operator": "SummaryTumblingWindowChain", + "operator": "TimeRange", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "3": { - "cost_per_second": 0.061000882488, - "cpu_core_seconds_per_second": 0.000061, - "detail": "merge 60000 states into 1000; x 1.0167/s; holds 56000 bytes for 0.1 ms", + "cost_per_second": 3.66044069247, + "cpu_core_seconds_per_second": 0.00366, + "detail": "build exact Increase accumulator into 1000 states: 3600000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 61.9 ms", "multiplier": 1, - "operator": "SummaryMerge", + "operator": "SummaryAgg", "price_source": "analytical", "timing": "query_time" }, @@ -6351,65 +92,65 @@ "timing": "query_time" }, "5": { - "cost_per_second": 0.00101666754915, + "cost_per_second": 0.00101685553487, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.1 ms", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 61.9 ms", "multiplier": 1, - "operator": "SummaryAgg", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" }, "6": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", + "cost_per_second": 21.2280003777, + "cpu_core_seconds_per_second": 0.021228, + "detail": "scan 3600000 samples; x 1.0167/s; holds 48 bytes for 61.9 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Scan", "price_source": "analytical", "timing": "query_time" }, "7": { - "cost_per_second": 0.0058, - "cpu_core_seconds_per_second": 5.8e-6, - "detail": "scan 1000 samples; x 1.0000/s", + "cost_per_second": 0.0, + "cpu_core_seconds_per_second": 0.0, + "detail": "time shift: pass 3600000 rows, free; x 1.0167/s", "multiplier": 1, - "operator": "Scan", + "operator": "TimeShift", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "8": { - "cost_per_second": 0.0, - "cpu_core_seconds_per_second": 0.0, - "detail": "time shift: pass 1000 rows, free; x 1.0000/s", + "cost_per_second": 3.66000037774, + "cpu_core_seconds_per_second": 0.00366, + "detail": "time range 3600s: keep 3600000 of 3600000 rows; x 1.0167/s; holds 48 bytes for 61.9 ms", "multiplier": 1, - "operator": "TimeShift", + "operator": "TimeRange", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "9": { - "cost_per_second": 3.369, - "cpu_core_seconds_per_second": 2e-6, - "detail": "build exact Increase accumulator in 60 tumbling windows of 60000 ms for 1000 groups: 1000 rows x (1 + depth 1); x 1.0000/s; keeps 26936000 bytes", + "cost_per_second": 3.66044069247, + "cpu_core_seconds_per_second": 0.00366, + "detail": "build exact Increase accumulator into 1000 states: 3600000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 61.9 ms", "multiplier": 1, - "operator": "SummaryTumblingWindowChain", + "operator": "SummaryAgg", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" } }, "source": "analytical-cost-v2 (illustrative statistics)", "usage": { - "average_memory_bytes": 53872014.1349, - "cpu_ops_per_second": 132069.716667, - "disk_bytes": 0, + "average_memory_bytes": 10090.5985283, + "cpu_ops_per_second": 21964067.6833, + "disk_bytes": 1612800000, "latency_per_query": [ { "compaction_ms": 0.0, - "query_ms": 0.124003 + "query_ms": 61.924001 } ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 53984232, - "scanned_bytes_per_second": 112000.0 + "peak_cpu_cores": 1, + "peak_memory_bytes": 160280, + "scanned_bytes_per_second": 409920000.0 } }, "dag": { @@ -6418,7 +159,7 @@ "consumer": 1, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -6429,40 +170,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6475,13 +211,13 @@ }, "producer": 0, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { "consumer": 2, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -6492,40 +228,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6538,13 +269,13 @@ }, "producer": 1, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { "consumer": 3, "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -6555,43 +286,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Increase", - "Increase" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6621,8 +344,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -6632,32 +354,28 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6687,40 +405,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6736,39 +449,10 @@ "window": "NotApplicable" }, { - "consumer": 6, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 5, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 8, + "consumer": 7, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -6779,32 +463,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6815,15 +495,15 @@ ] ] }, - "producer": 7, + "producer": 6, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { - "consumer": 9, + "consumer": 8, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -6834,32 +514,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6870,15 +546,15 @@ ] ] }, - "producer": 8, + "producer": 7, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { - "consumer": 10, + "consumer": 9, "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -6889,35 +565,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Increase", - "Increase" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6928,12 +597,12 @@ ] ] }, - "producer": 9, + "producer": 8, "role": "Input", "window": "NotApplicable" }, { - "consumer": 11, + "consumer": 10, "data_state": { "primitive": "SummaryState", "timing": "query_time" @@ -6947,8 +616,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -6958,24 +626,21 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6986,12 +651,12 @@ ] ] }, - "producer": 10, + "producer": 9, "role": "Input", "window": "NotApplicable" }, { - "consumer": 12, + "consumer": 11, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -7005,32 +670,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7041,41 +702,12 @@ ] ] }, - "producer": 11, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 13, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 12, + "producer": 10, "role": "Input", "window": "NotApplicable" }, { - "consumer": 14, + "consumer": 12, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -7089,19 +721,18 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, "unique_keys": [] }, - "producer": 6, + "producer": 5, "role": "Left", "window": "NotApplicable" }, { - "consumer": 14, + "consumer": 12, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -7115,38 +746,20 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, "unique_keys": [] }, - "producer": 13, + "producer": 11, "role": "Right", "window": "NotApplicable" } ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, "lifetime": "None", "output_schema": { @@ -7157,40 +770,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7203,7 +811,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -7246,40 +854,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7300,24 +903,7 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 1, "lifetime": "None", "output_schema": { @@ -7328,40 +914,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7374,7 +955,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -7391,9 +972,7 @@ { "guarantee": null, "id": 2, - "lifetime": { - "AcrossEvaluations": "Memory" - }, + "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -7402,43 +981,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Increase", - "Increase" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7450,33 +1021,18 @@ ] }, "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { + "NonASAP": { + "TimeRange": { "child": 1, - "family": { - "ExactAggregate": [ - "Increase", - "Increase" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 60, - "tumbling_window_width_ms": 60000 + "kind": "range", + "range": { + "nanos": 0, + "secs": 3600 + } } } } @@ -7493,8 +1049,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -7504,32 +1059,28 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7546,33 +1097,62 @@ }, "payload": { "ASAP": { - "SummaryMerge": { - "children": [ - 2 + "SummaryAgg": { + "child": 2, + "family": { + "ExactAggregate": [ + "Increase", + "Increase" + ] + }, + "filter": null, + "grouping": "PerSubpopulationInstance", + "input": { + "item": null, + "weight": { + "Column": "SampleValue" + }, + "weight_domain": { + "kind": "unknown_or_signed" + } + }, + "reduction": "PerEntity" + } + } + }, + "summary_coverage": { + "definition_id": "82fee77ed7544b075b694030a92a7ce5", + "selection": [ + { + "columns": [ + { + "column": { + "column": "job", + "source": "http_requests_total" + }, + "constraint": { + "in": [ + { + "Utf8": "payment-service" + } + ] + } + } + ], + "relative_time": [ + { + "excluded": -25200000 + }, + { + "included": -21600000 + } ] } - } + ] } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 4, "lifetime": "None", "output_schema": { @@ -7583,40 +1163,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7648,44 +1223,34 @@ "fields": [ { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, "unique_keys": [] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { + "NonASAP": { + "Aggregate": { "child": 4, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [] } @@ -7694,74 +1259,9 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 6, "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 5 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 7, - "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -7770,32 +1270,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7808,7 +1304,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -7837,32 +1333,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7883,25 +1375,8 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 8, + "guarantee": null, + "id": 7, "lifetime": "None", "output_schema": { "closed": true, @@ -7911,32 +1386,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7949,12 +1420,12 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { "TimeShift": { - "child": 7, + "child": 6, "shift": { "at": null, "offset_ms": 21600000 @@ -7965,10 +1436,8 @@ }, { "guarantee": null, - "id": 9, - "lifetime": { - "AcrossEvaluations": "Memory" - }, + "id": 8, + "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -7977,35 +1446,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Increase", - "Increase" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -8017,41 +1479,28 @@ ] }, "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 8, - "family": { - "ExactAggregate": [ - "Increase", - "Increase" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 60, - "tumbling_window_width_ms": 60000 + "NonASAP": { + "TimeRange": { + "child": 7, + "kind": "range", + "range": { + "nanos": 0, + "secs": 3600 + } } } } }, { "guarantee": null, - "id": 10, - "lifetime": "None", + "id": 9, + "lifetime": { + "OneEvaluation": "Memory" + }, "output_schema": { "closed": true, "fields": [ @@ -8060,8 +1509,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -8071,24 +1519,21 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -8105,35 +1550,66 @@ }, "payload": { "ASAP": { - "SummaryMerge": { - "children": [ - 9 - ] + "SummaryAgg": { + "child": 8, + "family": { + "ExactAggregate": [ + "Increase", + "Increase" + ] + }, + "filter": null, + "grouping": "PerSubpopulationInstance", + "input": { + "item": null, + "weight": { + "Column": "SampleValue" + }, + "weight_domain": { + "kind": "unknown_or_signed" + } + }, + "reduction": "PerEntity" } } + }, + "summary_coverage": { + "definition_id": "df143e4f1c06f16c16665abe6bda6b2b", + "selection": [ + { + "columns": [ + { + "column": { + "column": "job", + "source": "http_requests_total" + }, + "constraint": { + "in": [ + { + "Utf8": "payment-service" + } + ] + } + } + ], + "relative_time": [ + { + "excluded": -25200000 + }, + { + "included": -21600000 + } + ] + } + ] } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } + "guarantee": null, + "id": 10, + "lifetime": { + "OneEvaluation": "Memory" }, - "id": 11, - "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -8142,32 +1618,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -8185,58 +1657,48 @@ "payload": { "ASAP": { "FinalizeExactAccumulator": { - "child": 10 + "child": 9 } } } }, { "guarantee": null, - "id": 12, + "id": 11, "lifetime": "None", "output_schema": { "closed": true, "fields": [ { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, "unique_keys": [] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { - "child": 11, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "NonASAP": { + "Aggregate": { + "child": 10, + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [] } @@ -8245,73 +1707,8 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 13, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 12 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 14, + "guarantee": null, + "id": 12, "lifetime": "None", "output_schema": { "closed": true, @@ -8321,8 +1718,7 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -8335,7 +1731,7 @@ "payload": { "NonASAP": { "BinaryOp": { - "lhs": 6, + "lhs": 5, "operator": { "checked_finite_division": false, "checked_relative_division": false, @@ -8345,21 +1741,18 @@ "vector_match": null }, "return_bool": false, - "rhs": 13 + "rhs": 11 } } } } ], "roots": [ - 14 + 12 ], "scalar_roots": [] }, - "display_name": "Q1 Sum acc + Increase acc ×60 tumbling windows · ingestion time: Increase acc for Q1, 60 × 1m tumbling windows, Increase acc for Q1, 60 × 1m tumbling windows" + "display_name": "Q1 Increase acc · query time, shared: Increase acc, FinalizeExactAccumulator" }, - "tumbling_window_retention_ms": { - "2": 28800000, - "9": 28800000 - } + "tumbling_window_retention_ms": {} } diff --git a/crates/devtools/tests/corpus_snapshots/o11y_bench/q19.json b/crates/devtools/tests/corpus_snapshots/o11y_bench/q19.json index 2e30b8d58..181348b1f 100644 --- a/crates/devtools/tests/corpus_snapshots/o11y_bench/q19.json +++ b/crates/devtools/tests/corpus_snapshots/o11y_bench/q19.json @@ -1,6247 +1,6 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -360000 - }, - { - "included": -300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 300000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 5, - "node_id": 17, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -420000 - }, - { - "included": -360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 360000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 6, - "node_id": 20, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -480000 - }, - { - "included": -420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 420000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 7, - "node_id": 23, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -540000 - }, - { - "included": -480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 480000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 8, - "node_id": 26, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -600000 - }, - { - "included": -540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 540000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 9, - "node_id": 29, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -660000 - }, - { - "included": -600000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 600000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 10, - "node_id": 32, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -720000 - }, - { - "included": -660000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 660000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 11, - "node_id": 35, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -780000 - }, - { - "included": -720000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 720000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 12, - "node_id": 38, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -840000 - }, - { - "included": -780000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 780000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 13, - "node_id": 41, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -900000 - }, - { - "included": -840000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 840000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 14, - "node_id": 44, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -960000 - }, - { - "included": -900000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 900000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 15, - "node_id": 47, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1020000 - }, - { - "included": -960000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 960000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 16, - "node_id": 50, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1080000 - }, - { - "included": -1020000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1020000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 17, - "node_id": 53, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1140000 - }, - { - "included": -1080000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1080000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 18, - "node_id": 56, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1200000 - }, - { - "included": -1140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1140000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 19, - "node_id": 59, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1260000 - }, - { - "included": -1200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1200000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 20, - "node_id": 62, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1320000 - }, - { - "included": -1260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1260000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 21, - "node_id": 65, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1380000 - }, - { - "included": -1320000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1320000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 22, - "node_id": 68, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1440000 - }, - { - "included": -1380000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1380000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 23, - "node_id": 71, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1500000 - }, - { - "included": -1440000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1440000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 24, - "node_id": 74, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1560000 - }, - { - "included": -1500000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1500000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 25, - "node_id": 77, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1620000 - }, - { - "included": -1560000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1560000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 26, - "node_id": 80, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1680000 - }, - { - "included": -1620000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1620000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 27, - "node_id": 83, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1740000 - }, - { - "included": -1680000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1680000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 28, - "node_id": 86, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1800000 - }, - { - "included": -1740000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1740000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 29, - "node_id": 89, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1860000 - }, - { - "included": -1800000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1800000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 30, - "node_id": 92, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1920000 - }, - { - "included": -1860000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1860000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 31, - "node_id": 95, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1980000 - }, - { - "included": -1920000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1920000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 32, - "node_id": 98, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2040000 - }, - { - "included": -1980000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1980000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 33, - "node_id": 101, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2100000 - }, - { - "included": -2040000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2040000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 34, - "node_id": 104, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2160000 - }, - { - "included": -2100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2100000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 35, - "node_id": 107, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2220000 - }, - { - "included": -2160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2160000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 36, - "node_id": 110, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2280000 - }, - { - "included": -2220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2220000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 37, - "node_id": 113, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2340000 - }, - { - "included": -2280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2280000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 38, - "node_id": 116, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2400000 - }, - { - "included": -2340000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2340000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 39, - "node_id": 119, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2460000 - }, - { - "included": -2400000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2400000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 40, - "node_id": 122, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2520000 - }, - { - "included": -2460000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2460000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 41, - "node_id": 125, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2580000 - }, - { - "included": -2520000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2520000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 42, - "node_id": 128, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2640000 - }, - { - "included": -2580000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2580000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 43, - "node_id": 131, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2700000 - }, - { - "included": -2640000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2640000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 44, - "node_id": 134, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2760000 - }, - { - "included": -2700000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2700000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 45, - "node_id": 137, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2820000 - }, - { - "included": -2760000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2760000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 46, - "node_id": 140, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2880000 - }, - { - "included": -2820000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2820000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 47, - "node_id": 143, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2940000 - }, - { - "included": -2880000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2880000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 48, - "node_id": 146, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3000000 - }, - { - "included": -2940000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2940000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 49, - "node_id": 149, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3060000 - }, - { - "included": -3000000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3000000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 50, - "node_id": 152, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3120000 - }, - { - "included": -3060000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3060000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 51, - "node_id": 155, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3180000 - }, - { - "included": -3120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3120000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 52, - "node_id": 158, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3240000 - }, - { - "included": -3180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3180000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 53, - "node_id": 161, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3300000 - }, - { - "included": -3240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3240000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 54, - "node_id": 164, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3360000 - }, - { - "included": -3300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3300000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 55, - "node_id": 167, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3420000 - }, - { - "included": -3360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3360000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 56, - "node_id": 170, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3480000 - }, - { - "included": -3420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3420000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 57, - "node_id": 173, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3540000 - }, - { - "included": -3480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3480000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 58, - "node_id": 176, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6fea1c63a2fdd67d8f43d0106be9d627", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3600000 - }, - { - "included": -3540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3540000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 59, - "node_id": 179, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 0, - "node_id": 186, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 1, - "node_id": 189, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 2, - "node_id": 192, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 3, - "node_id": 195, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 4, - "node_id": 198, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -360000 - }, - { - "included": -300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 300000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 5, - "node_id": 201, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -420000 - }, - { - "included": -360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 360000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 6, - "node_id": 204, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -480000 - }, - { - "included": -420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 420000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 7, - "node_id": 207, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -540000 - }, - { - "included": -480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 480000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 8, - "node_id": 210, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -600000 - }, - { - "included": -540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 540000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 9, - "node_id": 213, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -660000 - }, - { - "included": -600000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 600000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 10, - "node_id": 216, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -720000 - }, - { - "included": -660000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 660000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 11, - "node_id": 219, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -780000 - }, - { - "included": -720000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 720000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 12, - "node_id": 222, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -840000 - }, - { - "included": -780000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 780000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 13, - "node_id": 225, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -900000 - }, - { - "included": -840000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 840000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 14, - "node_id": 228, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -960000 - }, - { - "included": -900000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 900000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 15, - "node_id": 231, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1020000 - }, - { - "included": -960000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 960000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 16, - "node_id": 234, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1080000 - }, - { - "included": -1020000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1020000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 17, - "node_id": 237, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1140000 - }, - { - "included": -1080000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1080000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 18, - "node_id": 240, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1200000 - }, - { - "included": -1140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1140000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 19, - "node_id": 243, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1260000 - }, - { - "included": -1200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1200000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 20, - "node_id": 246, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1320000 - }, - { - "included": -1260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1260000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 21, - "node_id": 249, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1380000 - }, - { - "included": -1320000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1320000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 22, - "node_id": 252, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1440000 - }, - { - "included": -1380000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1380000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 23, - "node_id": 255, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1500000 - }, - { - "included": -1440000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1440000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 24, - "node_id": 258, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1560000 - }, - { - "included": -1500000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1500000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 25, - "node_id": 261, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1620000 - }, - { - "included": -1560000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1560000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 26, - "node_id": 264, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1680000 - }, - { - "included": -1620000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1620000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 27, - "node_id": 267, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1740000 - }, - { - "included": -1680000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1680000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 28, - "node_id": 270, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1800000 - }, - { - "included": -1740000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1740000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 29, - "node_id": 273, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1860000 - }, - { - "included": -1800000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1800000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 30, - "node_id": 276, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1920000 - }, - { - "included": -1860000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1860000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 31, - "node_id": 279, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -1980000 - }, - { - "included": -1920000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1920000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 32, - "node_id": 282, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2040000 - }, - { - "included": -1980000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1980000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 33, - "node_id": 285, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2100000 - }, - { - "included": -2040000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2040000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 34, - "node_id": 288, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2160000 - }, - { - "included": -2100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2100000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 35, - "node_id": 291, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2220000 - }, - { - "included": -2160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2160000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 36, - "node_id": 294, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2280000 - }, - { - "included": -2220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2220000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 37, - "node_id": 297, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2340000 - }, - { - "included": -2280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2280000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 38, - "node_id": 300, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2400000 - }, - { - "included": -2340000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2340000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 39, - "node_id": 303, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2460000 - }, - { - "included": -2400000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2400000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 40, - "node_id": 306, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2520000 - }, - { - "included": -2460000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2460000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 41, - "node_id": 309, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2580000 - }, - { - "included": -2520000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2520000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 42, - "node_id": 312, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2640000 - }, - { - "included": -2580000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2580000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 43, - "node_id": 315, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2700000 - }, - { - "included": -2640000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2640000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 44, - "node_id": 318, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2760000 - }, - { - "included": -2700000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2700000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 45, - "node_id": 321, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2820000 - }, - { - "included": -2760000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2760000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 46, - "node_id": 324, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2880000 - }, - { - "included": -2820000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2820000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 47, - "node_id": 327, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -2940000 - }, - { - "included": -2880000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2880000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 48, - "node_id": 330, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3000000 - }, - { - "included": -2940000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2940000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 49, - "node_id": 333, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3060000 - }, - { - "included": -3000000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3000000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 50, - "node_id": 336, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3120000 - }, - { - "included": -3060000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3060000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 51, - "node_id": 339, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3180000 - }, - { - "included": -3120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3120000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 52, - "node_id": 342, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3240000 - }, - { - "included": -3180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3180000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 53, - "node_id": 345, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3300000 - }, - { - "included": -3240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3240000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 54, - "node_id": 348, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3360000 - }, - { - "included": -3300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3300000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 55, - "node_id": 351, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3420000 - }, - { - "included": -3360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3360000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 56, - "node_id": 354, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3480000 - }, - { - "included": -3420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3420000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 57, - "node_id": 357, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3540000 - }, - { - "included": -3480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3480000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 58, - "node_id": 360, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "6e0a4719202a0469f55a3a8469d009cc", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "payment-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3600000 - }, - { - "included": -3540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3540000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 59, - "node_id": 363, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - } - ], + "materialized_views": [], "proven_optimal": true, "query": "sum(increase(http_requests_total{job=\"payment-service\",status=~\"5..\"}[1h])) / sum(increase(http_requests_total{job=\"payment-service\"}[1h]))", "selected": { @@ -6256,61 +15,43 @@ } ], "cost": { - "cost_per_second": 1.83727148353, + "cost_per_second": 62.9573290081, "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.000143269716667, + "cpu_core_seconds_per_second": 0.0629560676833, "per_node": { "0": { - "cost_per_second": 0.0074, - "cpu_core_seconds_per_second": 7.4e-6, - "detail": "scan 1000 samples; x 1.0000/s", + "cost_per_second": 27.0840005036, + "cpu_core_seconds_per_second": 0.027084, + "detail": "scan 3600000 samples; x 1.0167/s; keeps 230400000 bytes of raw data on disk; holds 64 bytes for 61.9 ms", "multiplier": 1, "operator": "Scan", "price_source": "analytical", - "timing": "ingestion_time" - }, - "1": { - "cost_per_second": 0.849, - "cpu_core_seconds_per_second": 2e-6, - "detail": "build exact Increase accumulator in 60 tumbling windows of 60000 ms for 1000 groups: 1000 rows x (1 + depth 1); x 1.0000/s; keeps 6776000 bytes", - "multiplier": 1, - "operator": "SummaryTumblingWindowChain", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "10": { - "cost_per_second": 0.00101666754915, - "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.1 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", "timing": "query_time" }, - "11": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", + "1": { + "cost_per_second": 3.66000050365, + "cpu_core_seconds_per_second": 0.00366, + "detail": "time range 3600s: keep 3600000 of 3600000 rows; x 1.0167/s; holds 64 bytes for 61.9 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "TimeRange", "price_source": "analytical", "timing": "query_time" }, - "12": { - "cost_per_second": 1.01679273638e-6, + "10": { + "cost_per_second": 1.07962273435e-6, "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "operator: pass 1 rows; x 1.0167/s; holds 8 bytes for 0.1 ms", + "detail": "operator: pass 1 rows; x 1.0167/s; holds 8 bytes for 61.9 ms", "multiplier": 1, "operator": "BinaryOp", "price_source": "analytical", "timing": "query_time" }, "2": { - "cost_per_second": 0.061000882488, - "cpu_core_seconds_per_second": 0.000061, - "detail": "merge 60000 states into 1000; x 1.0167/s; holds 56000 bytes for 0.1 ms", + "cost_per_second": 3.66044069247, + "cpu_core_seconds_per_second": 0.00366, + "detail": "build exact Increase accumulator into 1000 states: 3600000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 61.9 ms", "multiplier": 1, - "operator": "SummaryMerge", + "operator": "SummaryAgg", "price_source": "analytical", "timing": "query_time" }, @@ -6324,74 +65,74 @@ "timing": "query_time" }, "4": { - "cost_per_second": 0.00101666754915, + "cost_per_second": 0.00101685553487, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.1 ms", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 61.9 ms", "multiplier": 1, - "operator": "SummaryAgg", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" }, "5": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", + "cost_per_second": 21.2280003777, + "cpu_core_seconds_per_second": 0.021228, + "detail": "scan 3600000 samples; x 1.0167/s; holds 48 bytes for 61.9 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Scan", "price_source": "analytical", "timing": "query_time" }, "6": { - "cost_per_second": 0.0058, - "cpu_core_seconds_per_second": 5.8e-6, - "detail": "scan 1000 samples; x 1.0000/s", + "cost_per_second": 3.66000037774, + "cpu_core_seconds_per_second": 0.00366, + "detail": "time range 3600s: keep 3600000 of 3600000 rows; x 1.0167/s; holds 48 bytes for 61.9 ms", "multiplier": 1, - "operator": "Scan", + "operator": "TimeRange", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "7": { - "cost_per_second": 0.849, - "cpu_core_seconds_per_second": 2e-6, - "detail": "build exact Increase accumulator in 60 tumbling windows of 60000 ms for 1000 groups: 1000 rows x (1 + depth 1); x 1.0000/s; keeps 6776000 bytes", + "cost_per_second": 3.66044069247, + "cpu_core_seconds_per_second": 0.00366, + "detail": "build exact Increase accumulator into 1000 states: 3600000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 61.9 ms", "multiplier": 1, - "operator": "SummaryTumblingWindowChain", + "operator": "SummaryAgg", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "8": { - "cost_per_second": 0.061000882488, - "cpu_core_seconds_per_second": 0.000061, - "detail": "merge 60000 states into 1000; x 1.0167/s; holds 56000 bytes for 0.1 ms", + "cost_per_second": 0.00139440307277, + "cpu_core_seconds_per_second": 1.01666666667e-6, + "detail": "finalize 1000 accumulators; x 1.0167/s; holds 48000 bytes for 61.9 ms", "multiplier": 1, - "operator": "SummaryMerge", + "operator": "FinalizeExactAccumulator", "price_source": "analytical", "timing": "query_time" }, "9": { - "cost_per_second": 0.00101666666667, + "cost_per_second": 0.00101685553487, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "finalize 1000 accumulators; x 1.0167/s", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 61.9 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" } }, "source": "analytical-cost-v2 (illustrative statistics)", "usage": { - "average_memory_bytes": 13552014.1349, - "cpu_ops_per_second": 132069.716667, - "disk_bytes": 0, + "average_memory_bytes": 10090.5985283, + "cpu_ops_per_second": 21964067.6833, + "disk_bytes": 230400000, "latency_per_query": [ { "compaction_ms": 0.0, - "query_ms": 0.124003 + "query_ms": 61.924001 } ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 13664232, - "scanned_bytes_per_second": 112000.0 + "peak_cpu_cores": 1, + "peak_memory_bytes": 160280, + "scanned_bytes_per_second": 409920000.0 } }, "dag": { @@ -6400,7 +141,7 @@ "consumer": 1, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -6411,40 +152,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6457,13 +193,13 @@ }, "producer": 0, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { "consumer": 2, "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -6474,43 +210,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Increase", - "Increase" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6540,8 +268,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -6551,32 +278,28 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6606,40 +329,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6655,39 +373,10 @@ "window": "NotApplicable" }, { - "consumer": 5, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 7, + "consumer": 6, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -6698,32 +387,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6734,15 +419,15 @@ ] ] }, - "producer": 6, + "producer": 5, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { - "consumer": 8, + "consumer": 7, "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -6753,35 +438,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Increase", - "Increase" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6792,12 +470,12 @@ ] ] }, - "producer": 7, + "producer": 6, "role": "Input", "window": "NotApplicable" }, { - "consumer": 9, + "consumer": 8, "data_state": { "primitive": "SummaryState", "timing": "query_time" @@ -6811,8 +489,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -6822,24 +499,21 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6850,12 +524,12 @@ ] ] }, - "producer": 8, + "producer": 7, "role": "Input", "window": "NotApplicable" }, { - "consumer": 10, + "consumer": 9, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -6869,32 +543,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6905,41 +575,12 @@ ] ] }, - "producer": 9, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 11, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 10, + "producer": 8, "role": "Input", "window": "NotApplicable" }, { - "consumer": 12, + "consumer": 10, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -6953,19 +594,18 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, "unique_keys": [] }, - "producer": 5, + "producer": 4, "role": "Left", "window": "NotApplicable" }, { - "consumer": 12, + "consumer": 10, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -6979,38 +619,20 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, "unique_keys": [] }, - "producer": 11, + "producer": 9, "role": "Right", "window": "NotApplicable" } ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, "lifetime": "None", "output_schema": { @@ -7021,40 +643,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7067,7 +684,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -7110,40 +727,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7166,9 +778,7 @@ { "guarantee": null, "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, + "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -7177,43 +787,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Increase", - "Increase" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7225,33 +827,18 @@ ] }, "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { + "NonASAP": { + "TimeRange": { "child": 0, - "family": { - "ExactAggregate": [ - "Increase", - "Increase" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 60, - "tumbling_window_width_ms": 60000 + "kind": "range", + "range": { + "nanos": 0, + "secs": 3600 + } } } } @@ -7268,8 +855,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -7279,32 +865,28 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7319,35 +901,64 @@ "primitive": "SummaryState", "timing": "query_time" }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 1 + "payload": { + "ASAP": { + "SummaryAgg": { + "child": 1, + "family": { + "ExactAggregate": [ + "Increase", + "Increase" + ] + }, + "filter": null, + "grouping": "PerSubpopulationInstance", + "input": { + "item": null, + "weight": { + "Column": "SampleValue" + }, + "weight_domain": { + "kind": "unknown_or_signed" + } + }, + "reduction": "PerEntity" + } + } + }, + "summary_coverage": { + "definition_id": "82fee77ed7544b075b694030a92a7ce5", + "selection": [ + { + "columns": [ + { + "column": { + "column": "job", + "source": "http_requests_total" + }, + "constraint": { + "in": [ + { + "Utf8": "payment-service" + } + ] + } + } + ], + "relative_time": [ + { + "excluded": -3600000 + }, + { + "included": 0 + } ] } - } + ] } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 3, "lifetime": "None", "output_schema": { @@ -7358,40 +969,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7423,44 +1029,34 @@ "fields": [ { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, "unique_keys": [] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { + "NonASAP": { + "Aggregate": { "child": 3, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [] } @@ -7469,74 +1065,9 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 5, "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 4 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 6, - "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -7545,32 +1076,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7583,7 +1110,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -7612,32 +1139,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7659,10 +1182,8 @@ }, { "guarantee": null, - "id": 7, - "lifetime": { - "AcrossEvaluations": "Memory" - }, + "id": 6, + "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -7671,35 +1192,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Increase", - "Increase" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7711,41 +1225,28 @@ ] }, "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 6, - "family": { - "ExactAggregate": [ - "Increase", - "Increase" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 60, - "tumbling_window_width_ms": 60000 + "NonASAP": { + "TimeRange": { + "child": 5, + "kind": "range", + "range": { + "nanos": 0, + "secs": 3600 + } } } } }, { "guarantee": null, - "id": 8, - "lifetime": "None", + "id": 7, + "lifetime": { + "OneEvaluation": "Memory" + }, "output_schema": { "closed": true, "fields": [ @@ -7754,8 +1255,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -7765,24 +1265,21 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7799,35 +1296,66 @@ }, "payload": { "ASAP": { - "SummaryMerge": { - "children": [ - 7 - ] + "SummaryAgg": { + "child": 6, + "family": { + "ExactAggregate": [ + "Increase", + "Increase" + ] + }, + "filter": null, + "grouping": "PerSubpopulationInstance", + "input": { + "item": null, + "weight": { + "Column": "SampleValue" + }, + "weight_domain": { + "kind": "unknown_or_signed" + } + }, + "reduction": "PerEntity" } } + }, + "summary_coverage": { + "definition_id": "df143e4f1c06f16c16665abe6bda6b2b", + "selection": [ + { + "columns": [ + { + "column": { + "column": "job", + "source": "http_requests_total" + }, + "constraint": { + "in": [ + { + "Utf8": "payment-service" + } + ] + } + } + ], + "relative_time": [ + { + "excluded": -3600000 + }, + { + "included": 0 + } + ] + } + ] } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } + "guarantee": null, + "id": 8, + "lifetime": { + "OneEvaluation": "Memory" }, - "id": 9, - "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -7836,32 +1364,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -7879,58 +1403,48 @@ "payload": { "ASAP": { "FinalizeExactAccumulator": { - "child": 8 + "child": 7 } } } }, { "guarantee": null, - "id": 10, + "id": 9, "lifetime": "None", "output_schema": { "closed": true, "fields": [ { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, "unique_keys": [] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { - "child": 9, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "NonASAP": { + "Aggregate": { + "child": 8, + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [] } @@ -7939,73 +1453,8 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 11, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 10 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 12, + "guarantee": null, + "id": 10, "lifetime": "None", "output_schema": { "closed": true, @@ -8015,8 +1464,7 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -8029,7 +1477,7 @@ "payload": { "NonASAP": { "BinaryOp": { - "lhs": 5, + "lhs": 4, "operator": { "checked_finite_division": false, "checked_relative_division": false, @@ -8039,21 +1487,18 @@ "vector_match": null }, "return_bool": false, - "rhs": 11 + "rhs": 9 } } } } ], "roots": [ - 12 + 10 ], "scalar_roots": [] }, - "display_name": "Q1 Sum acc + Increase acc ×60 tumbling windows · ingestion time: Increase acc for Q1, 60 × 1m tumbling windows, Increase acc for Q1, 60 × 1m tumbling windows" + "display_name": "Q1 Increase acc · query time, shared: Increase acc, FinalizeExactAccumulator" }, - "tumbling_window_retention_ms": { - "1": 7200000, - "7": 7200000 - } + "tumbling_window_retention_ms": {} } diff --git a/crates/devtools/tests/corpus_snapshots/o11y_bench/q20.json b/crates/devtools/tests/corpus_snapshots/o11y_bench/q20.json index 3adc6ca62..8e6103bfa 100644 --- a/crates/devtools/tests/corpus_snapshots/o11y_bench/q20.json +++ b/crates/devtools/tests/corpus_snapshots/o11y_bench/q20.json @@ -15,12 +15,12 @@ } ], "cost": { - "cost_per_second": 0.00630435009457, + "cost_per_second": 0.00630333340267, "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 6.30435e-6, + "cpu_core_seconds_per_second": 6.30333333333e-6, "per_node": { "0": { - "cost_per_second": 0.00427000002522, + "cost_per_second": 0.00427000002521, "cpu_core_seconds_per_second": 4.27e-6, "detail": "scan 1000 samples; x 1.0167/s; keeps 32000 bytes of raw data on disk; holds 32 bytes for 0.0 ms", "multiplier": 1, @@ -38,37 +38,28 @@ "timing": "query_time" }, "2": { - "cost_per_second": 0.0010166667108, + "cost_per_second": 0.00101666668558, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.0 ms", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 0.0 ms", "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "3": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" } }, "source": "analytical-cost-v2 (illustrative statistics)", "usage": { - "average_memory_bytes": 0.000756522, - "cpu_ops_per_second": 3051.01666667, + "average_memory_bytes": 0.000554693333333, + "cpu_ops_per_second": 3050.0, "disk_bytes": 32000, "latency_per_query": [ { "compaction_ms": 0.0, - "query_ms": 0.006201 + "query_ms": 0.0062 } ], "peak_cpu_cores": 1, - "peak_memory_bytes": 120, + "peak_memory_bytes": 88, "scanned_bytes_per_second": 32533.3333333 } }, @@ -89,24 +80,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -136,24 +124,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -167,57 +152,11 @@ "producer": 1, "role": "Input", "window": "NotApplicable" - }, - { - "consumer": 3, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 2, - "role": "Input", - "window": "NotApplicable" } ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, "lifetime": "None", "output_schema": { @@ -228,24 +167,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -272,24 +208,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -310,24 +243,7 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 1, "lifetime": "None", "output_schema": { @@ -338,24 +254,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -392,106 +305,48 @@ "fields": [ { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, "unique_keys": [] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { + "NonASAP": { + "Aggregate": { "child": 1, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [] } } } } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 3, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 2 - } - } - } } ], "roots": [ - 3 + 2 ], "scalar_roots": [] }, - "display_name": "Q1 Sum acc" + "display_name": "Q1 exact" }, "tumbling_window_retention_ms": {} } diff --git a/crates/devtools/tests/corpus_snapshots/o11y_bench/q21.json b/crates/devtools/tests/corpus_snapshots/o11y_bench/q21.json index 3ffc88b31..914c85daa 100644 --- a/crates/devtools/tests/corpus_snapshots/o11y_bench/q21.json +++ b/crates/devtools/tests/corpus_snapshots/o11y_bench/q21.json @@ -1,267 +1,6 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "b167c0953f55d24c1c15591dddb42cb4", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3660000 - }, - { - "included": -3600000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3600000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 0, - "node_id": 3, - "refresh": "at_ingestion", - "retention_ms": 7500000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "b167c0953f55d24c1c15591dddb42cb4", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3720000 - }, - { - "included": -3660000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3660000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 1, - "node_id": 6, - "refresh": "at_ingestion", - "retention_ms": 7500000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "b167c0953f55d24c1c15591dddb42cb4", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3780000 - }, - { - "included": -3720000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3720000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 2, - "node_id": 9, - "refresh": "at_ingestion", - "retention_ms": 7500000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "b167c0953f55d24c1c15591dddb42cb4", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3840000 - }, - { - "included": -3780000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3780000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 3, - "node_id": 12, - "refresh": "at_ingestion", - "retention_ms": 7500000, - "stage2_node_id": 2 - }, - { - "coverage": { - "definition_id": "b167c0953f55d24c1c15591dddb42cb4", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -3900000 - }, - { - "included": -3840000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3840000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 4, - "node_id": 15, - "refresh": "at_ingestion", - "retention_ms": 7500000, - "stage2_node_id": 2 - } - ], + "materialized_views": [], "proven_optimal": true, "query": "sum(rate(http_requests_total{job=\"order-service\"}[5m] offset 1h))", "selected": { @@ -276,43 +15,43 @@ } ], "cost": { - "cost_per_second": 0.896917733207, + "cost_per_second": 2.38105003628, "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.0000149176833333, + "cpu_core_seconds_per_second": 0.00238103333333, "per_node": { "0": { - "cost_per_second": 0.0058, - "cpu_core_seconds_per_second": 5.8e-6, - "detail": "scan 1000 samples; x 1.0000/s", + "cost_per_second": 1.76900001429, + "cpu_core_seconds_per_second": 0.001769, + "detail": "scan 300000 samples; x 1.0167/s; keeps 187200000 bytes of raw data on disk; holds 48 bytes for 2.3 ms", "multiplier": 1, "operator": "Scan", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "1": { "cost_per_second": 0.0, "cpu_core_seconds_per_second": 0.0, - "detail": "time shift: pass 1000 rows, free; x 1.0000/s", + "detail": "time shift: pass 300000 rows, free; x 1.0167/s", "multiplier": 1, "operator": "TimeShift", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "2": { - "cost_per_second": 0.884, - "cpu_core_seconds_per_second": 2e-6, - "detail": "build exact Rate accumulator in 5 tumbling windows of 60000 ms for 1000 groups: 1000 rows x (1 + depth 1); x 1.0000/s; keeps 7056000 bytes", + "cost_per_second": 0.305000014286, + "cpu_core_seconds_per_second": 0.000305, + "detail": "time range 300s: keep 300000 of 300000 rows; x 1.0167/s; holds 48 bytes for 2.3 ms", "multiplier": 1, - "operator": "SummaryTumblingWindowChain", + "operator": "TimeRange", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "3": { - "cost_per_second": 0.00508338315712, - "cpu_core_seconds_per_second": 5.08333333333e-6, - "detail": "merge 5000 states into 1000; x 1.0167/s; holds 56000 bytes for 0.0 ms", + "cost_per_second": 0.305016667233, + "cpu_core_seconds_per_second": 0.000305, + "detail": "build exact Rate accumulator into 1000 states: 300000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 2.3 ms", "multiplier": 1, - "operator": "SummaryMerge", + "operator": "SummaryAgg", "price_source": "analytical", "timing": "query_time" }, @@ -326,38 +65,29 @@ "timing": "query_time" }, "5": { - "cost_per_second": 0.00101666671649, + "cost_per_second": 0.00101667380977, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.0 ms", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 2.3 ms", "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "6": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" } }, "source": "analytical-cost-v2 (illustrative statistics)", "usage": { - "average_memory_bytes": 7056000.39899, - "cpu_ops_per_second": 10117.6833333, - "disk_bytes": 0, + "average_memory_bytes": 133.623590667, + "cpu_ops_per_second": 917033.333333, + "disk_bytes": 187200000, "latency_per_query": [ { "compaction_ms": 0.0, - "query_ms": 0.007001 + "query_ms": 2.342 } ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 7112104, - "scanned_bytes_per_second": 48000.0 + "peak_cpu_cores": 1, + "peak_memory_bytes": 56120, + "scanned_bytes_per_second": 14640000.0 } }, "dag": { @@ -366,7 +96,7 @@ "consumer": 1, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -377,32 +107,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -415,13 +141,13 @@ }, "producer": 0, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { "consumer": 2, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -432,32 +158,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -470,13 +192,13 @@ }, "producer": 1, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { "consumer": 3, "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -487,35 +209,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -545,8 +260,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -556,24 +270,21 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -603,32 +314,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -642,57 +349,11 @@ "producer": 4, "role": "Input", "window": "NotApplicable" - }, - { - "consumer": 6, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 5, - "role": "Input", - "window": "NotApplicable" } ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, "lifetime": "None", "output_schema": { @@ -703,32 +364,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -741,7 +398,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -770,32 +427,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -816,24 +469,7 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 1, "lifetime": "None", "output_schema": { @@ -844,32 +480,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -882,7 +514,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -899,9 +531,7 @@ { "guarantee": null, "id": 2, - "lifetime": { - "AcrossEvaluations": "Memory" - }, + "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -910,35 +540,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -950,33 +573,18 @@ ] }, "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { + "NonASAP": { + "TimeRange": { "child": 1, - "family": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 5, - "tumbling_window_width_ms": 60000 + "kind": "range", + "range": { + "nanos": 0, + "secs": 300 + } } } } @@ -993,8 +601,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -1004,24 +611,21 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -1038,33 +642,62 @@ }, "payload": { "ASAP": { - "SummaryMerge": { - "children": [ - 2 - ] + "SummaryAgg": { + "child": 2, + "family": { + "ExactAggregate": [ + "Rate", + "Rate" + ] + }, + "filter": null, + "grouping": "PerSubpopulationInstance", + "input": { + "item": null, + "weight": { + "Column": "SampleValue" + }, + "weight_domain": { + "kind": "unknown_or_signed" + } + }, + "reduction": "PerEntity" } } + }, + "summary_coverage": { + "definition_id": "8be6f460159e1d9e159ea39fa3f1c90b", + "selection": [ + { + "columns": [ + { + "column": { + "column": "job", + "source": "http_requests_total" + }, + "constraint": { + "in": [ + { + "Utf8": "order-service" + } + ] + } + } + ], + "relative_time": [ + { + "excluded": -3900000 + }, + { + "included": -3600000 + } + ] + } + ] } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 4, "lifetime": "None", "output_schema": { @@ -1075,32 +708,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -1132,108 +761,48 @@ "fields": [ { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, "unique_keys": [] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { + "NonASAP": { + "Aggregate": { "child": 4, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [] } } } } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 6, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 5 - } - } - } } ], "roots": [ - 6 + 5 ], "scalar_roots": [] }, - "display_name": "Q1 Sum acc + Rate acc ×5 tumbling windows · ingestion time: Rate acc for Q1, 5 × 1m tumbling windows" + "display_name": "Q1 Rate acc" }, - "tumbling_window_retention_ms": { - "2": 7500000 - } + "tumbling_window_retention_ms": {} } diff --git a/crates/devtools/tests/corpus_snapshots/o11y_bench/q22.json b/crates/devtools/tests/corpus_snapshots/o11y_bench/q22.json index e0a83a8d0..a0d3db976 100644 --- a/crates/devtools/tests/corpus_snapshots/o11y_bench/q22.json +++ b/crates/devtools/tests/corpus_snapshots/o11y_bench/q22.json @@ -1,267 +1,6 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "b167c0953f55d24c1c15591dddb42cb4", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "b167c0953f55d24c1c15591dddb42cb4", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "b167c0953f55d24c1c15591dddb42cb4", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "b167c0953f55d24c1c15591dddb42cb4", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "b167c0953f55d24c1c15591dddb42cb4", - "selection": [ - { - "columns": [ - { - "column": { - "name": "job", - "table": null - }, - "constraint": { - "in": [ - { - "Utf8": "order-service" - } - ] - } - } - ], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - } - ], + "materialized_views": [], "proven_optimal": true, "query": "sum(rate(http_requests_total{job=\"order-service\"}[5m]))", "selected": { @@ -276,34 +15,34 @@ } ], "cost": { - "cost_per_second": 0.476917733207, + "cost_per_second": 2.385335882, "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.0000149176833333, + "cpu_core_seconds_per_second": 0.00238103333333, "per_node": { "0": { - "cost_per_second": 0.0058, - "cpu_core_seconds_per_second": 5.8e-6, - "detail": "scan 1000 samples; x 1.0000/s", + "cost_per_second": 1.77328586, + "cpu_core_seconds_per_second": 0.001769, + "detail": "scan 300000 samples; x 1.0167/s; keeps 14400000 bytes of raw data on disk; holds 14400000 bytes for 2.3 ms", "multiplier": 1, "operator": "Scan", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "1": { - "cost_per_second": 0.464, - "cpu_core_seconds_per_second": 2e-6, - "detail": "build exact Rate accumulator in 5 tumbling windows of 60000 ms for 1000 groups: 1000 rows x (1 + depth 1); x 1.0000/s; keeps 3696000 bytes", + "cost_per_second": 0.305000014286, + "cpu_core_seconds_per_second": 0.000305, + "detail": "time range 300s: keep 300000 of 300000 rows; x 1.0167/s; holds 48 bytes for 2.3 ms", "multiplier": 1, - "operator": "SummaryTumblingWindowChain", + "operator": "TimeRange", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "2": { - "cost_per_second": 0.00508338315712, - "cpu_core_seconds_per_second": 5.08333333333e-6, - "detail": "merge 5000 states into 1000; x 1.0167/s; holds 56000 bytes for 0.0 ms", + "cost_per_second": 0.305016667233, + "cpu_core_seconds_per_second": 0.000305, + "detail": "build exact Rate accumulator into 1000 states: 300000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 2.3 ms", "multiplier": 1, - "operator": "SummaryMerge", + "operator": "SummaryAgg", "price_source": "analytical", "timing": "query_time" }, @@ -317,38 +56,29 @@ "timing": "query_time" }, "4": { - "cost_per_second": 0.00101666671649, + "cost_per_second": 0.00101667380977, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.0 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "5": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 2.3 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" } }, "source": "analytical-cost-v2 (illustrative statistics)", "usage": { - "average_memory_bytes": 3696000.39899, - "cpu_ops_per_second": 10117.6833333, - "disk_bytes": 0, + "average_memory_bytes": 34420.3893011, + "cpu_ops_per_second": 917033.333333, + "disk_bytes": 14400000, "latency_per_query": [ { "compaction_ms": 0.0, - "query_ms": 0.007001 + "query_ms": 2.342 } ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 3752104, - "scanned_bytes_per_second": 48000.0 + "peak_cpu_cores": 1, + "peak_memory_bytes": 14456072, + "scanned_bytes_per_second": 14640000.0 } }, "dag": { @@ -357,7 +87,7 @@ "consumer": 1, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -368,32 +98,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -406,13 +132,13 @@ }, "producer": 0, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { "consumer": 2, "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -423,35 +149,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -481,8 +200,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -492,24 +210,21 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -539,32 +254,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -578,59 +289,15 @@ "producer": 3, "role": "Input", "window": "NotApplicable" - }, - { - "consumer": 5, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" } ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, - "lifetime": "None", + "lifetime": { + "OneEvaluation": "Memory" + }, "output_schema": { "closed": true, "fields": [ @@ -639,32 +306,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -677,7 +340,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -706,32 +369,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -754,9 +413,7 @@ { "guarantee": null, "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, + "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -765,35 +422,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -805,33 +455,18 @@ ] }, "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { + "NonASAP": { + "TimeRange": { "child": 0, - "family": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 5, - "tumbling_window_width_ms": 60000 + "kind": "range", + "range": { + "nanos": 0, + "secs": 300 + } } } } @@ -848,8 +483,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -859,24 +493,21 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -893,33 +524,62 @@ }, "payload": { "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] + "SummaryAgg": { + "child": 1, + "family": { + "ExactAggregate": [ + "Rate", + "Rate" + ] + }, + "filter": null, + "grouping": "PerSubpopulationInstance", + "input": { + "item": null, + "weight": { + "Column": "SampleValue" + }, + "weight_domain": { + "kind": "unknown_or_signed" + } + }, + "reduction": "PerEntity" } } + }, + "summary_coverage": { + "definition_id": "8be6f460159e1d9e159ea39fa3f1c90b", + "selection": [ + { + "columns": [ + { + "column": { + "column": "job", + "source": "http_requests_total" + }, + "constraint": { + "in": [ + { + "Utf8": "order-service" + } + ] + } + } + ], + "relative_time": [ + { + "excluded": -300000 + }, + { + "included": 0 + } + ] + } + ] } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 3, "lifetime": "None", "output_schema": { @@ -930,32 +590,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -987,108 +643,48 @@ "fields": [ { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, "unique_keys": [] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { + "NonASAP": { + "Aggregate": { "child": 3, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [] } } } } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 5, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 4 - } - } - } } ], "roots": [ - 5 + 4 ], "scalar_roots": [] }, - "display_name": "Q1 Sum acc + Rate acc ×5 tumbling windows · ingestion time: Rate acc for Q1, 5 × 1m tumbling windows" + "display_name": "Q1 Rate acc · query time, shared: Scan" }, - "tumbling_window_retention_ms": { - "1": 3900000 - } + "tumbling_window_retention_ms": {} } diff --git a/crates/devtools/tests/corpus_snapshots/o11y_bench/q23.json b/crates/devtools/tests/corpus_snapshots/o11y_bench/q23.json index 5156b5315..a37e13576 100644 --- a/crates/devtools/tests/corpus_snapshots/o11y_bench/q23.json +++ b/crates/devtools/tests/corpus_snapshots/o11y_bench/q23.json @@ -1,197 +1,6 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 5, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 3900000, - "stage2_node_id": 1 - } - ], + "materialized_views": [], "proven_optimal": true, "query": "sum(rate(http_requests_total{job=~\"user-service|order-service|payment-service\"}[5m]))", "selected": { @@ -206,34 +15,34 @@ } ], "cost": { - "cost_per_second": 0.476917733207, + "cost_per_second": 2.385335882, "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.0000149176833333, + "cpu_core_seconds_per_second": 0.00238103333333, "per_node": { "0": { - "cost_per_second": 0.0058, - "cpu_core_seconds_per_second": 5.8e-6, - "detail": "scan 1000 samples; x 1.0000/s", + "cost_per_second": 1.77328586, + "cpu_core_seconds_per_second": 0.001769, + "detail": "scan 300000 samples; x 1.0167/s; keeps 14400000 bytes of raw data on disk; holds 14400000 bytes for 2.3 ms", "multiplier": 1, "operator": "Scan", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "1": { - "cost_per_second": 0.464, - "cpu_core_seconds_per_second": 2e-6, - "detail": "build exact Rate accumulator in 5 tumbling windows of 60000 ms for 1000 groups: 1000 rows x (1 + depth 1); x 1.0000/s; keeps 3696000 bytes", + "cost_per_second": 0.305000014286, + "cpu_core_seconds_per_second": 0.000305, + "detail": "time range 300s: keep 300000 of 300000 rows; x 1.0167/s; holds 48 bytes for 2.3 ms", "multiplier": 1, - "operator": "SummaryTumblingWindowChain", + "operator": "TimeRange", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "2": { - "cost_per_second": 0.00508338315712, - "cpu_core_seconds_per_second": 5.08333333333e-6, - "detail": "merge 5000 states into 1000; x 1.0167/s; holds 56000 bytes for 0.0 ms", + "cost_per_second": 0.305016667233, + "cpu_core_seconds_per_second": 0.000305, + "detail": "build exact Rate accumulator into 1000 states: 300000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 2.3 ms", "multiplier": 1, - "operator": "SummaryMerge", + "operator": "SummaryAgg", "price_source": "analytical", "timing": "query_time" }, @@ -247,38 +56,29 @@ "timing": "query_time" }, "4": { - "cost_per_second": 0.00101666671649, + "cost_per_second": 0.00101667380977, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.0 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "5": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 2.3 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" } }, "source": "analytical-cost-v2 (illustrative statistics)", "usage": { - "average_memory_bytes": 3696000.39899, - "cpu_ops_per_second": 10117.6833333, - "disk_bytes": 0, + "average_memory_bytes": 34420.3893011, + "cpu_ops_per_second": 917033.333333, + "disk_bytes": 14400000, "latency_per_query": [ { "compaction_ms": 0.0, - "query_ms": 0.007001 + "query_ms": 2.342 } ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 3752104, - "scanned_bytes_per_second": 48000.0 + "peak_cpu_cores": 1, + "peak_memory_bytes": 14456072, + "scanned_bytes_per_second": 14640000.0 } }, "dag": { @@ -287,7 +87,7 @@ "consumer": 1, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -298,32 +98,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -336,13 +132,13 @@ }, "producer": 0, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { "consumer": 2, "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -353,35 +149,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -411,8 +200,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -422,24 +210,21 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -469,32 +254,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -508,59 +289,15 @@ "producer": 3, "role": "Input", "window": "NotApplicable" - }, - { - "consumer": 5, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" } ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, - "lifetime": "None", + "lifetime": { + "OneEvaluation": "Memory" + }, "output_schema": { "closed": true, "fields": [ @@ -569,32 +306,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -607,7 +340,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -636,32 +369,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -684,9 +413,7 @@ { "guarantee": null, "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, + "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -695,35 +422,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -735,33 +455,18 @@ ] }, "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { + "NonASAP": { + "TimeRange": { "child": 0, - "family": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 5, - "tumbling_window_width_ms": 60000 + "kind": "range", + "range": { + "nanos": 0, + "secs": 300 + } } } } @@ -778,8 +483,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -789,24 +493,21 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -823,33 +524,48 @@ }, "payload": { "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] + "SummaryAgg": { + "child": 1, + "family": { + "ExactAggregate": [ + "Rate", + "Rate" + ] + }, + "filter": null, + "grouping": "PerSubpopulationInstance", + "input": { + "item": null, + "weight": { + "Column": "SampleValue" + }, + "weight_domain": { + "kind": "unknown_or_signed" + } + }, + "reduction": "PerEntity" } } + }, + "summary_coverage": { + "definition_id": "ed1ce395605301201a87c39a1d581cd7", + "selection": [ + { + "columns": [], + "relative_time": [ + { + "excluded": -300000 + }, + { + "included": 0 + } + ] + } + ] } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 3, "lifetime": "None", "output_schema": { @@ -860,32 +576,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -917,108 +629,48 @@ "fields": [ { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, "unique_keys": [] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { + "NonASAP": { + "Aggregate": { "child": 3, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [] } } } } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 5, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 4 - } - } - } } ], "roots": [ - 5 + 4 ], "scalar_roots": [] }, - "display_name": "Q1 Sum acc + Rate acc ×5 tumbling windows · ingestion time: Rate acc for Q1, 5 × 1m tumbling windows" + "display_name": "Q1 Rate acc · query time, shared: Scan" }, - "tumbling_window_retention_ms": { - "1": 3900000 - } + "tumbling_window_retention_ms": {} } diff --git a/crates/devtools/tests/corpus_snapshots/o11y_bench/q25.json b/crates/devtools/tests/corpus_snapshots/o11y_bench/q25.json index c69ea0939..e07770a8d 100644 --- a/crates/devtools/tests/corpus_snapshots/o11y_bench/q25.json +++ b/crates/devtools/tests/corpus_snapshots/o11y_bench/q25.json @@ -1,4567 +1,6 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -360000 - }, - { - "included": -300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 300000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 5, - "node_id": 17, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -420000 - }, - { - "included": -360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 360000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 6, - "node_id": 20, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -480000 - }, - { - "included": -420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 420000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 7, - "node_id": 23, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -540000 - }, - { - "included": -480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 480000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 8, - "node_id": 26, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -600000 - }, - { - "included": -540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 540000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 9, - "node_id": 29, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -660000 - }, - { - "included": -600000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 600000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 10, - "node_id": 32, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -720000 - }, - { - "included": -660000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 660000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 11, - "node_id": 35, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -780000 - }, - { - "included": -720000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 720000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 12, - "node_id": 38, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -840000 - }, - { - "included": -780000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 780000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 13, - "node_id": 41, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -900000 - }, - { - "included": -840000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 840000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 14, - "node_id": 44, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -960000 - }, - { - "included": -900000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 900000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 15, - "node_id": 47, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1020000 - }, - { - "included": -960000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 960000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 16, - "node_id": 50, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1080000 - }, - { - "included": -1020000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1020000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 17, - "node_id": 53, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1140000 - }, - { - "included": -1080000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1080000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 18, - "node_id": 56, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1200000 - }, - { - "included": -1140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1140000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 19, - "node_id": 59, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1260000 - }, - { - "included": -1200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1200000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 20, - "node_id": 62, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1320000 - }, - { - "included": -1260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1260000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 21, - "node_id": 65, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1380000 - }, - { - "included": -1320000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1320000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 22, - "node_id": 68, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1440000 - }, - { - "included": -1380000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1380000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 23, - "node_id": 71, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1500000 - }, - { - "included": -1440000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1440000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 24, - "node_id": 74, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1560000 - }, - { - "included": -1500000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1500000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 25, - "node_id": 77, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1620000 - }, - { - "included": -1560000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1560000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 26, - "node_id": 80, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1680000 - }, - { - "included": -1620000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1620000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 27, - "node_id": 83, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1740000 - }, - { - "included": -1680000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1680000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 28, - "node_id": 86, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1800000 - }, - { - "included": -1740000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1740000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 29, - "node_id": 89, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1860000 - }, - { - "included": -1800000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1800000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 30, - "node_id": 92, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1920000 - }, - { - "included": -1860000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1860000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 31, - "node_id": 95, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1980000 - }, - { - "included": -1920000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1920000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 32, - "node_id": 98, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2040000 - }, - { - "included": -1980000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1980000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 33, - "node_id": 101, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2100000 - }, - { - "included": -2040000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2040000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 34, - "node_id": 104, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2160000 - }, - { - "included": -2100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2100000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 35, - "node_id": 107, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2220000 - }, - { - "included": -2160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2160000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 36, - "node_id": 110, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2280000 - }, - { - "included": -2220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2220000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 37, - "node_id": 113, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2340000 - }, - { - "included": -2280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2280000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 38, - "node_id": 116, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2400000 - }, - { - "included": -2340000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2340000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 39, - "node_id": 119, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2460000 - }, - { - "included": -2400000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2400000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 40, - "node_id": 122, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2520000 - }, - { - "included": -2460000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2460000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 41, - "node_id": 125, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2580000 - }, - { - "included": -2520000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2520000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 42, - "node_id": 128, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2640000 - }, - { - "included": -2580000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2580000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 43, - "node_id": 131, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2700000 - }, - { - "included": -2640000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2640000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 44, - "node_id": 134, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2760000 - }, - { - "included": -2700000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2700000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 45, - "node_id": 137, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2820000 - }, - { - "included": -2760000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2760000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 46, - "node_id": 140, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2880000 - }, - { - "included": -2820000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2820000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 47, - "node_id": 143, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2940000 - }, - { - "included": -2880000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2880000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 48, - "node_id": 146, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3000000 - }, - { - "included": -2940000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2940000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 49, - "node_id": 149, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3060000 - }, - { - "included": -3000000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3000000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 50, - "node_id": 152, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3120000 - }, - { - "included": -3060000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3060000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 51, - "node_id": 155, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3180000 - }, - { - "included": -3120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3120000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 52, - "node_id": 158, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3240000 - }, - { - "included": -3180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3180000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 53, - "node_id": 161, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3300000 - }, - { - "included": -3240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3240000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 54, - "node_id": 164, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3360000 - }, - { - "included": -3300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3300000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 55, - "node_id": 167, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3420000 - }, - { - "included": -3360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3360000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 56, - "node_id": 170, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3480000 - }, - { - "included": -3420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3420000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 57, - "node_id": 173, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3540000 - }, - { - "included": -3480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3480000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 58, - "node_id": 176, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "0e9e6da224697c324f6268c4637236dd", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3600000 - }, - { - "included": -3540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3540000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 59, - "node_id": 179, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 0, - "node_id": 186, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 1, - "node_id": 189, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 2, - "node_id": 192, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 3, - "node_id": 195, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 4, - "node_id": 198, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -360000 - }, - { - "included": -300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 300000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 5, - "node_id": 201, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -420000 - }, - { - "included": -360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 360000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 6, - "node_id": 204, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -480000 - }, - { - "included": -420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 420000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 7, - "node_id": 207, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -540000 - }, - { - "included": -480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 480000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 8, - "node_id": 210, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -600000 - }, - { - "included": -540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 540000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 9, - "node_id": 213, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -660000 - }, - { - "included": -600000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 600000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 10, - "node_id": 216, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -720000 - }, - { - "included": -660000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 660000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 11, - "node_id": 219, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -780000 - }, - { - "included": -720000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 720000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 12, - "node_id": 222, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -840000 - }, - { - "included": -780000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 780000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 13, - "node_id": 225, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -900000 - }, - { - "included": -840000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 840000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 14, - "node_id": 228, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -960000 - }, - { - "included": -900000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 900000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 15, - "node_id": 231, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1020000 - }, - { - "included": -960000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 960000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 16, - "node_id": 234, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1080000 - }, - { - "included": -1020000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1020000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 17, - "node_id": 237, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1140000 - }, - { - "included": -1080000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1080000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 18, - "node_id": 240, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1200000 - }, - { - "included": -1140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1140000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 19, - "node_id": 243, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1260000 - }, - { - "included": -1200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1200000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 20, - "node_id": 246, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1320000 - }, - { - "included": -1260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1260000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 21, - "node_id": 249, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1380000 - }, - { - "included": -1320000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1320000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 22, - "node_id": 252, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1440000 - }, - { - "included": -1380000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1380000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 23, - "node_id": 255, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1500000 - }, - { - "included": -1440000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1440000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 24, - "node_id": 258, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1560000 - }, - { - "included": -1500000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1500000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 25, - "node_id": 261, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1620000 - }, - { - "included": -1560000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1560000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 26, - "node_id": 264, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1680000 - }, - { - "included": -1620000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1620000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 27, - "node_id": 267, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1740000 - }, - { - "included": -1680000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1680000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 28, - "node_id": 270, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1800000 - }, - { - "included": -1740000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1740000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 29, - "node_id": 273, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1860000 - }, - { - "included": -1800000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1800000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 30, - "node_id": 276, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1920000 - }, - { - "included": -1860000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1860000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 31, - "node_id": 279, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1980000 - }, - { - "included": -1920000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1920000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 32, - "node_id": 282, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2040000 - }, - { - "included": -1980000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1980000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 33, - "node_id": 285, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2100000 - }, - { - "included": -2040000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2040000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 34, - "node_id": 288, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2160000 - }, - { - "included": -2100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2100000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 35, - "node_id": 291, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2220000 - }, - { - "included": -2160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2160000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 36, - "node_id": 294, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2280000 - }, - { - "included": -2220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2220000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 37, - "node_id": 297, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2340000 - }, - { - "included": -2280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2280000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 38, - "node_id": 300, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2400000 - }, - { - "included": -2340000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2340000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 39, - "node_id": 303, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2460000 - }, - { - "included": -2400000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2400000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 40, - "node_id": 306, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2520000 - }, - { - "included": -2460000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2460000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 41, - "node_id": 309, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2580000 - }, - { - "included": -2520000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2520000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 42, - "node_id": 312, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2640000 - }, - { - "included": -2580000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2580000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 43, - "node_id": 315, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2700000 - }, - { - "included": -2640000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2640000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 44, - "node_id": 318, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2760000 - }, - { - "included": -2700000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2700000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 45, - "node_id": 321, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2820000 - }, - { - "included": -2760000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2760000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 46, - "node_id": 324, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2880000 - }, - { - "included": -2820000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2820000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 47, - "node_id": 327, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2940000 - }, - { - "included": -2880000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2880000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 48, - "node_id": 330, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3000000 - }, - { - "included": -2940000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2940000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 49, - "node_id": 333, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3060000 - }, - { - "included": -3000000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3000000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 50, - "node_id": 336, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3120000 - }, - { - "included": -3060000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3060000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 51, - "node_id": 339, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3180000 - }, - { - "included": -3120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3120000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 52, - "node_id": 342, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3240000 - }, - { - "included": -3180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3180000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 53, - "node_id": 345, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3300000 - }, - { - "included": -3240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3240000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 54, - "node_id": 348, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3360000 - }, - { - "included": -3300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3300000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 55, - "node_id": 351, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3420000 - }, - { - "included": -3360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3360000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 56, - "node_id": 354, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3480000 - }, - { - "included": -3420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3420000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 57, - "node_id": 357, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3540000 - }, - { - "included": -3480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3480000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 58, - "node_id": 360, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - }, - { - "coverage": { - "definition_id": "983f5e2904acda1d575c27b0861b6380", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3600000 - }, - { - "included": -3540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3540000, - "source": { - "TimeSeries": { - "metric": "http_requests_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 59, - "node_id": 363, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 7 - } - ], + "materialized_views": [], "proven_optimal": true, "query": "sum(rate(http_requests_total{status=~\"5..\",job=~\"user-service|order-service|payment-service\"}[1h])) / sum(rate(http_requests_total{job=~\"user-service|order-service|payment-service\"}[1h]))", "selected": { @@ -4576,61 +15,43 @@ } ], "cost": { - "cost_per_second": 1.83727148353, + "cost_per_second": 62.9573290081, "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.000143269716667, + "cpu_core_seconds_per_second": 0.0629560676833, "per_node": { "0": { - "cost_per_second": 0.0074, - "cpu_core_seconds_per_second": 7.4e-6, - "detail": "scan 1000 samples; x 1.0000/s", + "cost_per_second": 27.0840005036, + "cpu_core_seconds_per_second": 0.027084, + "detail": "scan 3600000 samples; x 1.0167/s; keeps 230400000 bytes of raw data on disk; holds 64 bytes for 61.9 ms", "multiplier": 1, "operator": "Scan", "price_source": "analytical", - "timing": "ingestion_time" - }, - "1": { - "cost_per_second": 0.849, - "cpu_core_seconds_per_second": 2e-6, - "detail": "build exact Rate accumulator in 60 tumbling windows of 60000 ms for 1000 groups: 1000 rows x (1 + depth 1); x 1.0000/s; keeps 6776000 bytes", - "multiplier": 1, - "operator": "SummaryTumblingWindowChain", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "10": { - "cost_per_second": 0.00101666754915, - "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.1 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", "timing": "query_time" }, - "11": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", + "1": { + "cost_per_second": 3.66000050365, + "cpu_core_seconds_per_second": 0.00366, + "detail": "time range 3600s: keep 3600000 of 3600000 rows; x 1.0167/s; holds 64 bytes for 61.9 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "TimeRange", "price_source": "analytical", "timing": "query_time" }, - "12": { - "cost_per_second": 1.01679273638e-6, + "10": { + "cost_per_second": 1.07962273435e-6, "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "operator: pass 1 rows; x 1.0167/s; holds 8 bytes for 0.1 ms", + "detail": "operator: pass 1 rows; x 1.0167/s; holds 8 bytes for 61.9 ms", "multiplier": 1, "operator": "BinaryOp", "price_source": "analytical", "timing": "query_time" }, "2": { - "cost_per_second": 0.061000882488, - "cpu_core_seconds_per_second": 0.000061, - "detail": "merge 60000 states into 1000; x 1.0167/s; holds 56000 bytes for 0.1 ms", + "cost_per_second": 3.66044069247, + "cpu_core_seconds_per_second": 0.00366, + "detail": "build exact Rate accumulator into 1000 states: 3600000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 61.9 ms", "multiplier": 1, - "operator": "SummaryMerge", + "operator": "SummaryAgg", "price_source": "analytical", "timing": "query_time" }, @@ -4644,74 +65,74 @@ "timing": "query_time" }, "4": { - "cost_per_second": 0.00101666754915, + "cost_per_second": 0.00101685553487, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.1 ms", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 61.9 ms", "multiplier": 1, - "operator": "SummaryAgg", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" }, "5": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", + "cost_per_second": 21.2280003777, + "cpu_core_seconds_per_second": 0.021228, + "detail": "scan 3600000 samples; x 1.0167/s; holds 48 bytes for 61.9 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Scan", "price_source": "analytical", "timing": "query_time" }, "6": { - "cost_per_second": 0.0058, - "cpu_core_seconds_per_second": 5.8e-6, - "detail": "scan 1000 samples; x 1.0000/s", + "cost_per_second": 3.66000037774, + "cpu_core_seconds_per_second": 0.00366, + "detail": "time range 3600s: keep 3600000 of 3600000 rows; x 1.0167/s; holds 48 bytes for 61.9 ms", "multiplier": 1, - "operator": "Scan", + "operator": "TimeRange", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "7": { - "cost_per_second": 0.849, - "cpu_core_seconds_per_second": 2e-6, - "detail": "build exact Rate accumulator in 60 tumbling windows of 60000 ms for 1000 groups: 1000 rows x (1 + depth 1); x 1.0000/s; keeps 6776000 bytes", + "cost_per_second": 3.66044069247, + "cpu_core_seconds_per_second": 0.00366, + "detail": "build exact Rate accumulator into 1000 states: 3600000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 61.9 ms", "multiplier": 1, - "operator": "SummaryTumblingWindowChain", + "operator": "SummaryAgg", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "8": { - "cost_per_second": 0.061000882488, - "cpu_core_seconds_per_second": 0.000061, - "detail": "merge 60000 states into 1000; x 1.0167/s; holds 56000 bytes for 0.1 ms", + "cost_per_second": 0.00139440307277, + "cpu_core_seconds_per_second": 1.01666666667e-6, + "detail": "finalize 1000 accumulators; x 1.0167/s; holds 48000 bytes for 61.9 ms", "multiplier": 1, - "operator": "SummaryMerge", + "operator": "FinalizeExactAccumulator", "price_source": "analytical", "timing": "query_time" }, "9": { - "cost_per_second": 0.00101666666667, + "cost_per_second": 0.00101685553487, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "finalize 1000 accumulators; x 1.0167/s", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 61.9 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" } }, "source": "analytical-cost-v2 (illustrative statistics)", "usage": { - "average_memory_bytes": 13552014.1349, - "cpu_ops_per_second": 132069.716667, - "disk_bytes": 0, + "average_memory_bytes": 10090.5985283, + "cpu_ops_per_second": 21964067.6833, + "disk_bytes": 230400000, "latency_per_query": [ { "compaction_ms": 0.0, - "query_ms": 0.124003 + "query_ms": 61.924001 } ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 13664232, - "scanned_bytes_per_second": 112000.0 + "peak_cpu_cores": 1, + "peak_memory_bytes": 160280, + "scanned_bytes_per_second": 409920000.0 } }, "dag": { @@ -4720,7 +141,7 @@ "consumer": 1, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -4731,40 +152,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -4777,13 +193,13 @@ }, "producer": 0, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { "consumer": 2, "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -4794,43 +210,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -4860,8 +268,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -4871,32 +278,28 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -4926,40 +329,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -4975,39 +373,10 @@ "window": "NotApplicable" }, { - "consumer": 5, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 7, + "consumer": 6, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -5018,32 +387,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -5054,15 +419,15 @@ ] ] }, - "producer": 6, + "producer": 5, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { - "consumer": 8, + "consumer": 7, "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -5073,35 +438,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -5112,12 +470,12 @@ ] ] }, - "producer": 7, + "producer": 6, "role": "Input", "window": "NotApplicable" }, { - "consumer": 9, + "consumer": 8, "data_state": { "primitive": "SummaryState", "timing": "query_time" @@ -5131,8 +489,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -5142,24 +499,21 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -5170,12 +524,12 @@ ] ] }, - "producer": 8, + "producer": 7, "role": "Input", "window": "NotApplicable" }, { - "consumer": 10, + "consumer": 9, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -5189,32 +543,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -5225,41 +575,12 @@ ] ] }, - "producer": 9, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 11, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 10, + "producer": 8, "role": "Input", "window": "NotApplicable" }, { - "consumer": 12, + "consumer": 10, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -5273,19 +594,18 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, "unique_keys": [] }, - "producer": 5, + "producer": 4, "role": "Left", "window": "NotApplicable" }, { - "consumer": 12, + "consumer": 10, "data_state": { "primitive": "Raw", "timing": "query_time" @@ -5299,38 +619,20 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, "unique_keys": [] }, - "producer": 11, + "producer": 9, "role": "Right", "window": "NotApplicable" } ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, "lifetime": "None", "output_schema": { @@ -5341,40 +643,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -5387,7 +684,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -5430,40 +727,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -5486,9 +778,7 @@ { "guarantee": null, "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, + "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -5497,43 +787,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -5545,33 +827,18 @@ ] }, "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { + "NonASAP": { + "TimeRange": { "child": 0, - "family": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 60, - "tumbling_window_width_ms": 60000 + "kind": "range", + "range": { + "nanos": 0, + "secs": 3600 + } } } } @@ -5588,8 +855,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -5599,75 +865,86 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, - "name": "$promql_series_identity", - "nullable": false, - "table": null + "name": "$promql_series_identity", + "nullable": false + } + ], + "time_index": 0, + "unique_keys": [ + [ + 4, + 0 + ] + ] + }, + "output_state": { + "primitive": "SummaryState", + "timing": "query_time" + }, + "payload": { + "ASAP": { + "SummaryAgg": { + "child": 1, + "family": { + "ExactAggregate": [ + "Rate", + "Rate" + ] + }, + "filter": null, + "grouping": "PerSubpopulationInstance", + "input": { + "item": null, + "weight": { + "Column": "SampleValue" + }, + "weight_domain": { + "kind": "unknown_or_signed" + } + }, + "reduction": "PerEntity" } - ], - "time_index": 0, - "unique_keys": [ - [ - 4, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" + } }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 1 + "summary_coverage": { + "definition_id": "ed1ce395605301201a87c39a1d581cd7", + "selection": [ + { + "columns": [], + "relative_time": [ + { + "excluded": -3600000 + }, + { + "included": 0 + } ] } - } + ] } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 3, "lifetime": "None", "output_schema": { @@ -5678,40 +955,35 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "status", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -5743,44 +1015,34 @@ "fields": [ { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, "unique_keys": [] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { + "NonASAP": { + "Aggregate": { "child": 3, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [] } @@ -5789,74 +1051,9 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 5, "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 4 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 6, - "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -5865,32 +1062,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -5903,7 +1096,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -5932,32 +1125,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -5979,10 +1168,8 @@ }, { "guarantee": null, - "id": 7, - "lifetime": { - "AcrossEvaluations": "Memory" - }, + "id": 6, + "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -5991,35 +1178,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6031,41 +1211,28 @@ ] }, "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 6, - "family": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 60, - "tumbling_window_width_ms": 60000 + "NonASAP": { + "TimeRange": { + "child": 5, + "kind": "range", + "range": { + "nanos": 0, + "secs": 3600 + } } } } }, { "guarantee": null, - "id": 8, - "lifetime": "None", + "id": 7, + "lifetime": { + "OneEvaluation": "Memory" + }, "output_schema": { "closed": true, "fields": [ @@ -6074,8 +1241,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -6085,24 +1251,21 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6119,35 +1282,52 @@ }, "payload": { "ASAP": { - "SummaryMerge": { - "children": [ - 7 - ] + "SummaryAgg": { + "child": 6, + "family": { + "ExactAggregate": [ + "Rate", + "Rate" + ] + }, + "filter": null, + "grouping": "PerSubpopulationInstance", + "input": { + "item": null, + "weight": { + "Column": "SampleValue" + }, + "weight_domain": { + "kind": "unknown_or_signed" + } + }, + "reduction": "PerEntity" } } + }, + "summary_coverage": { + "definition_id": "8a37e2a9c6b0e35b4948a4a38c6f8c73", + "selection": [ + { + "columns": [], + "relative_time": [ + { + "excluded": -3600000 + }, + { + "included": 0 + } + ] + } + ] } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } + "guarantee": null, + "id": 8, + "lifetime": { + "OneEvaluation": "Memory" }, - "id": 9, - "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -6156,32 +1336,28 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "job", - "nullable": true, - "table": null + "nullable": true }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -6199,58 +1375,48 @@ "payload": { "ASAP": { "FinalizeExactAccumulator": { - "child": 8 + "child": 7 } } } }, { "guarantee": null, - "id": 10, + "id": 9, "lifetime": "None", "output_schema": { "closed": true, "fields": [ { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, "unique_keys": [] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { - "child": 9, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "NonASAP": { + "Aggregate": { + "child": 8, + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [] } @@ -6259,73 +1425,8 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 11, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 10 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 12, + "guarantee": null, + "id": 10, "lifetime": "None", "output_schema": { "closed": true, @@ -6335,8 +1436,7 @@ "Plain": "float64" }, "name": "sum", - "nullable": false, - "table": null + "nullable": false } ], "time_index": null, @@ -6349,7 +1449,7 @@ "payload": { "NonASAP": { "BinaryOp": { - "lhs": 5, + "lhs": 4, "operator": { "checked_finite_division": false, "checked_relative_division": false, @@ -6359,21 +1459,18 @@ "vector_match": null }, "return_bool": false, - "rhs": 11 + "rhs": 9 } } } } ], "roots": [ - 12 + 10 ], "scalar_roots": [] }, - "display_name": "Q1 Sum acc + Rate acc ×60 tumbling windows · ingestion time: Rate acc for Q1, 60 × 1m tumbling windows, Rate acc for Q1, 60 × 1m tumbling windows" + "display_name": "Q1 Rate acc · query time, shared: Rate acc, FinalizeExactAccumulator" }, - "tumbling_window_retention_ms": { - "1": 7200000, - "7": 7200000 - } + "tumbling_window_retention_ms": {} } diff --git a/crates/devtools/tests/corpus_snapshots/o11y_bench/q26.json b/crates/devtools/tests/corpus_snapshots/o11y_bench/q26.json index fbdeba67f..d29609764 100644 --- a/crates/devtools/tests/corpus_snapshots/o11y_bench/q26.json +++ b/crates/devtools/tests/corpus_snapshots/o11y_bench/q26.json @@ -1,2287 +1,6 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -360000 - }, - { - "included": -300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 300000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 5, - "node_id": 17, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -420000 - }, - { - "included": -360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 360000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 6, - "node_id": 20, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -480000 - }, - { - "included": -420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 420000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 7, - "node_id": 23, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -540000 - }, - { - "included": -480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 480000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 8, - "node_id": 26, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -600000 - }, - { - "included": -540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 540000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 9, - "node_id": 29, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -660000 - }, - { - "included": -600000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 600000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 10, - "node_id": 32, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -720000 - }, - { - "included": -660000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 660000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 11, - "node_id": 35, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -780000 - }, - { - "included": -720000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 720000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 12, - "node_id": 38, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -840000 - }, - { - "included": -780000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 780000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 13, - "node_id": 41, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -900000 - }, - { - "included": -840000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 840000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 14, - "node_id": 44, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -960000 - }, - { - "included": -900000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 900000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 15, - "node_id": 47, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1020000 - }, - { - "included": -960000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 960000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 16, - "node_id": 50, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1080000 - }, - { - "included": -1020000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1020000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 17, - "node_id": 53, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1140000 - }, - { - "included": -1080000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1080000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 18, - "node_id": 56, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1200000 - }, - { - "included": -1140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1140000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 19, - "node_id": 59, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1260000 - }, - { - "included": -1200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1200000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 20, - "node_id": 62, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1320000 - }, - { - "included": -1260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1260000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 21, - "node_id": 65, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1380000 - }, - { - "included": -1320000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1320000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 22, - "node_id": 68, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1440000 - }, - { - "included": -1380000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1380000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 23, - "node_id": 71, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1500000 - }, - { - "included": -1440000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1440000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 24, - "node_id": 74, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1560000 - }, - { - "included": -1500000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1500000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 25, - "node_id": 77, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1620000 - }, - { - "included": -1560000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1560000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 26, - "node_id": 80, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1680000 - }, - { - "included": -1620000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1620000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 27, - "node_id": 83, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1740000 - }, - { - "included": -1680000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1680000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 28, - "node_id": 86, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1800000 - }, - { - "included": -1740000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1740000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 29, - "node_id": 89, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1860000 - }, - { - "included": -1800000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1800000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 30, - "node_id": 92, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1920000 - }, - { - "included": -1860000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1860000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 31, - "node_id": 95, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1980000 - }, - { - "included": -1920000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1920000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 32, - "node_id": 98, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2040000 - }, - { - "included": -1980000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1980000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 33, - "node_id": 101, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2100000 - }, - { - "included": -2040000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2040000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 34, - "node_id": 104, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2160000 - }, - { - "included": -2100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2100000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 35, - "node_id": 107, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2220000 - }, - { - "included": -2160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2160000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 36, - "node_id": 110, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2280000 - }, - { - "included": -2220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2220000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 37, - "node_id": 113, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2340000 - }, - { - "included": -2280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2280000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 38, - "node_id": 116, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2400000 - }, - { - "included": -2340000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2340000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 39, - "node_id": 119, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2460000 - }, - { - "included": -2400000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2400000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 40, - "node_id": 122, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2520000 - }, - { - "included": -2460000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2460000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 41, - "node_id": 125, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2580000 - }, - { - "included": -2520000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2520000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 42, - "node_id": 128, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2640000 - }, - { - "included": -2580000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2580000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 43, - "node_id": 131, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2700000 - }, - { - "included": -2640000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2640000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 44, - "node_id": 134, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2760000 - }, - { - "included": -2700000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2700000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 45, - "node_id": 137, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2820000 - }, - { - "included": -2760000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2760000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 46, - "node_id": 140, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2880000 - }, - { - "included": -2820000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2820000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 47, - "node_id": 143, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2940000 - }, - { - "included": -2880000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2880000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 48, - "node_id": 146, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3000000 - }, - { - "included": -2940000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2940000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 49, - "node_id": 149, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3060000 - }, - { - "included": -3000000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3000000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 50, - "node_id": 152, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3120000 - }, - { - "included": -3060000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3060000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 51, - "node_id": 155, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3180000 - }, - { - "included": -3120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3120000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 52, - "node_id": 158, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3240000 - }, - { - "included": -3180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3180000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 53, - "node_id": 161, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3300000 - }, - { - "included": -3240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3240000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 54, - "node_id": 164, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3360000 - }, - { - "included": -3300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3300000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 55, - "node_id": 167, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3420000 - }, - { - "included": -3360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3360000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 56, - "node_id": 170, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3480000 - }, - { - "included": -3420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3420000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 57, - "node_id": 173, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3540000 - }, - { - "included": -3480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3480000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 58, - "node_id": 176, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c2bdb67952bf1d139fefe57a0d6c2c78", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3600000 - }, - { - "included": -3540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3540000, - "source": { - "TimeSeries": { - "metric": "process_cpu_seconds_total" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 59, - "node_id": 179, - "refresh": "at_ingestion", - "retention_ms": 7200000, - "stage2_node_id": 1 - } - ], + "materialized_views": [], "proven_optimal": true, "query": "sum(rate(process_cpu_seconds_total[1h]))", "selected": { @@ -2296,34 +15,34 @@ } ], "cost": { - "cost_per_second": 0.916234791682, + "cost_per_second": 22.6941924412, "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.00006923435, + "cpu_core_seconds_per_second": 0.0226940333333, "per_node": { "0": { - "cost_per_second": 0.0042, - "cpu_core_seconds_per_second": 4.2e-6, - "detail": "scan 1000 samples; x 1.0000/s", + "cost_per_second": 15.3720000908, + "cpu_core_seconds_per_second": 0.015372, + "detail": "scan 3600000 samples; x 1.0167/s; keeps 115200000 bytes of raw data on disk; holds 32 bytes for 22.3 ms", "multiplier": 1, "operator": "Scan", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "1": { - "cost_per_second": 0.849, - "cpu_core_seconds_per_second": 2e-6, - "detail": "build exact Rate accumulator in 60 tumbling windows of 60000 ms for 1000 groups: 1000 rows x (1 + depth 1); x 1.0000/s; keeps 6776000 bytes", + "cost_per_second": 3.66000009078, + "cpu_core_seconds_per_second": 0.00366, + "detail": "time range 3600s: keep 3600000 of 3600000 rows; x 1.0167/s; holds 32 bytes for 22.3 ms", "multiplier": 1, - "operator": "SummaryTumblingWindowChain", + "operator": "TimeRange", "price_source": "analytical", - "timing": "ingestion_time" + "timing": "query_time" }, "2": { - "cost_per_second": 0.0610004412404, - "cpu_core_seconds_per_second": 0.000061, - "detail": "merge 60000 states into 1000; x 1.0167/s; holds 56000 bytes for 0.1 ms", + "cost_per_second": 3.66015885823, + "cpu_core_seconds_per_second": 0.00366, + "detail": "build exact Rate accumulator into 1000 states: 3600000 rows x depth 1; x 1.0167/s; holds 56000 bytes for 22.3 ms", "multiplier": 1, - "operator": "SummaryMerge", + "operator": "SummaryAgg", "price_source": "analytical", "timing": "query_time" }, @@ -2337,38 +56,29 @@ "timing": "query_time" }, "4": { - "cost_per_second": 0.00101666710791, + "cost_per_second": 0.00101673474877, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.1 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "5": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 22.3 ms", "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" } }, "source": "analytical-cost-v2 (illustrative statistics)", "usage": { - "average_memory_bytes": 6776003.53345, - "cpu_ops_per_second": 66034.35, - "disk_bytes": 0, + "average_memory_bytes": 1272.8629416, + "cpu_ops_per_second": 10982033.3333, + "disk_bytes": 115200000, "latency_per_query": [ { "compaction_ms": 0.0, - "query_ms": 0.062001 + "query_ms": 22.322 } ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 6832088, - "scanned_bytes_per_second": 32000.0 + "peak_cpu_cores": 1, + "peak_memory_bytes": 56088, + "scanned_bytes_per_second": 117120000.0 } }, "dag": { @@ -2377,7 +87,7 @@ "consumer": 1, "data_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -2388,24 +98,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -2418,13 +125,13 @@ }, "producer": 0, "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" + "window": "NotApplicable" }, { "consumer": 2, "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "grouping": "NotApplicable", "intermediate_schema": { @@ -2435,27 +142,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -2485,8 +186,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -2496,16 +196,14 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -2535,24 +233,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -2566,57 +261,11 @@ "producer": 3, "role": "Input", "window": "NotApplicable" - }, - { - "consumer": 5, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" } ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, "lifetime": "None", "output_schema": { @@ -2627,24 +276,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -2657,7 +303,7 @@ }, "output_state": { "primitive": "Raw", - "timing": "ingestion_time" + "timing": "query_time" }, "payload": { "NonASAP": { @@ -2671,24 +317,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -2711,9 +354,7 @@ { "guarantee": null, "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, + "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -2722,27 +363,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "value", + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -2754,33 +389,18 @@ ] }, "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" + "primitive": "Raw", + "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { + "NonASAP": { + "TimeRange": { "child": 0, - "family": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 60, - "tumbling_window_width_ms": 60000 + "kind": "range", + "range": { + "nanos": 0, + "secs": 3600 + } } } } @@ -2797,8 +417,7 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { @@ -2808,16 +427,14 @@ ] }, "name": "state", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -2834,33 +451,48 @@ }, "payload": { "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] + "SummaryAgg": { + "child": 1, + "family": { + "ExactAggregate": [ + "Rate", + "Rate" + ] + }, + "filter": null, + "grouping": "PerSubpopulationInstance", + "input": { + "item": null, + "weight": { + "Column": "SampleValue" + }, + "weight_domain": { + "kind": "unknown_or_signed" + } + }, + "reduction": "PerEntity" } } + }, + "summary_coverage": { + "definition_id": "ed1ce395605301201a87c39a1d581cd7", + "selection": [ + { + "columns": [], + "relative_time": [ + { + "excluded": -3600000 + }, + { + "included": 0 + } + ] + } + ] } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 3, "lifetime": "None", "output_schema": { @@ -2871,24 +503,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -2920,108 +549,48 @@ "fields": [ { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, "unique_keys": [] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { + "NonASAP": { + "Aggregate": { "child": 3, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [] } } } } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 5, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 4 - } - } - } } ], "roots": [ - 5 + 4 ], "scalar_roots": [] }, - "display_name": "Q1 Sum acc + Rate acc ×60 tumbling windows · ingestion time: Rate acc for Q1, 60 × 1m tumbling windows" + "display_name": "Q1 Rate acc" }, - "tumbling_window_retention_ms": { - "1": 7200000 - } + "tumbling_window_retention_ms": {} } diff --git a/crates/devtools/tests/corpus_snapshots/o11y_bench/q27.json b/crates/devtools/tests/corpus_snapshots/o11y_bench/q27.json index e87f425a7..93c813d59 100644 --- a/crates/devtools/tests/corpus_snapshots/o11y_bench/q27.json +++ b/crates/devtools/tests/corpus_snapshots/o11y_bench/q27.json @@ -15,12 +15,12 @@ } ], "cost": { - "cost_per_second": 0.00630435009457, + "cost_per_second": 0.00630333340267, "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 6.30435e-6, + "cpu_core_seconds_per_second": 6.30333333333e-6, "per_node": { "0": { - "cost_per_second": 0.00427000002522, + "cost_per_second": 0.00427000002521, "cpu_core_seconds_per_second": 4.27e-6, "detail": "scan 1000 samples; x 1.0167/s; keeps 32000 bytes of raw data on disk; holds 32 bytes for 0.0 ms", "multiplier": 1, @@ -38,37 +38,28 @@ "timing": "query_time" }, "2": { - "cost_per_second": 0.0010166667108, + "cost_per_second": 0.00101666668558, "cpu_core_seconds_per_second": 1.01666666667e-6, - "detail": "build exact Sum accumulator into 1 states: 1000 rows x depth 1; x 1.0167/s; holds 56 bytes for 0.0 ms", + "detail": "hash aggregate 1000 rows into 1 groups; x 1.0167/s; holds 24 bytes for 0.0 ms", "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "3": { - "cost_per_second": 1.01666666667e-6, - "cpu_core_seconds_per_second": 1.01666666667e-9, - "detail": "finalize 1 accumulators; x 1.0167/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" } }, "source": "analytical-cost-v2 (illustrative statistics)", "usage": { - "average_memory_bytes": 0.000756522, - "cpu_ops_per_second": 3051.01666667, + "average_memory_bytes": 0.000554693333333, + "cpu_ops_per_second": 3050.0, "disk_bytes": 32000, "latency_per_query": [ { "compaction_ms": 0.0, - "query_ms": 0.006201 + "query_ms": 0.0062 } ], "peak_cpu_cores": 1, - "peak_memory_bytes": 120, + "peak_memory_bytes": 88, "scanned_bytes_per_second": 32533.3333333 } }, @@ -89,24 +80,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -136,24 +124,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -167,57 +152,11 @@ "producer": 1, "role": "Input", "window": "NotApplicable" - }, - { - "consumer": 3, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 2, - "role": "Input", - "window": "NotApplicable" } ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, "lifetime": "None", "output_schema": { @@ -228,24 +167,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -272,24 +208,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -310,24 +243,7 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 1, "lifetime": "None", "output_schema": { @@ -338,24 +254,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -392,106 +305,48 @@ "fields": [ { "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] + "Plain": "float64" }, - "name": "state", - "nullable": false, - "table": null + "name": "sum", + "nullable": false } ], "time_index": null, "unique_keys": [] }, "output_state": { - "primitive": "SummaryState", + "primitive": "Raw", "timing": "query_time" }, "payload": { - "ASAP": { - "SummaryAgg": { + "NonASAP": { + "Aggregate": { "child": 1, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" + "filters": [], + "having": null, + "measures": [ + { + "col": null, + "kind": "sum" } - }, + ], + "output_names": [ + "" + ], "reduction": { "Reduce": [] } } } } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 3, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 2 - } - } - } } ], "roots": [ - 3 + 2 ], "scalar_roots": [] }, - "display_name": "Q1 Sum acc" + "display_name": "Q1 exact" }, "tumbling_window_retention_ms": {} } diff --git a/crates/devtools/tests/sketch_plan_snapshots/fuzz-issue903-raw-retained.json b/crates/devtools/tests/sketch_plan_snapshots/fuzz-issue903-raw-retained.json index f27b75631..8d56bcd80 100644 --- a/crates/devtools/tests/sketch_plan_snapshots/fuzz-issue903-raw-retained.json +++ b/crates/devtools/tests/sketch_plan_snapshots/fuzz-issue903-raw-retained.json @@ -18,35 +18,33 @@ "target_metric": null }, { - "accepted_metric": "rank", + "accepted_metric": null, "accepted_regardless_of_guarantee": false, "guarantee_check_rejection": null, - "sketches": [ - "Kll" - ], - "summary": "metric not set; accepted rank (Kll)", + "sketches": [], + "summary": "metric not set; accepted exact", "target_metric": null } ], "cost": { - "cost_per_second": 1.8693312527e-9, + "cost_per_second": 3.2389080266e-9, "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.000166, + "cpu_core_seconds_per_second": 0.000288, "per_node": { "0": { - "cost_per_second": 9.444960053e-10, - "cpu_core_seconds_per_second": 0.000084, - "detail": "scan 200000 samples; x 0.1000/s; keeps 6400000 bytes of raw data on disk; holds 32 bytes for 1.4 ms", - "multiplier": 1, + "cost_per_second": 1.8889920106e-9, + "cpu_core_seconds_per_second": 0.000168, + "detail": "scan 200000 samples; x 0.2000/s; keeps 6400000 bytes of raw data on disk; holds 32 bytes for 1.4 ms", + "multiplier": 2, "operator": "Scan", "price_source": "analytical", "timing": "query_time" }, "1": { - "cost_per_second": 2.25940009003e-10, - "cpu_core_seconds_per_second": 0.00002, - "detail": "time range 300s: keep 200000 of 200000 rows; x 0.1000/s; holds 6400000 bytes for 1.4 ms", - "multiplier": 1, + "cost_per_second": 4.497600106e-10, + "cpu_core_seconds_per_second": 0.00004, + "detail": "time range 300s: keep 200000 of 200000 rows; x 0.2000/s; holds 32 bytes for 1.4 ms", + "multiplier": 2, "operator": "TimeRange", "price_source": "analytical", "timing": "query_time" @@ -61,37 +59,19 @@ "timing": "query_time" }, "3": { - "cost_per_second": 2.26329231058e-10, - "cpu_core_seconds_per_second": 0.00002, - "detail": "build Kll into 10000 states: 200000 rows x depth 1; x 0.1000/s; holds 10000000 bytes for 1.3 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "4": { - "cost_per_second": 1.1244e-11, - "cpu_core_seconds_per_second": 1e-6, - "detail": "estimate 10000 groups x 1; x 0.1000/s", - "multiplier": 1, - "operator": "SummaryEstimate", - "price_source": "analytical", - "timing": "query_time" - }, - "5": { - "cost_per_second": 1.12440046375e-11, - "cpu_core_seconds_per_second": 1e-6, - "detail": "operator: pass 10000 rows; x 0.1000/s; holds 32 bytes for 1.3 ms", + "cost_per_second": 4.50078002701e-10, + "cpu_core_seconds_per_second": 0.00004, + "detail": "hash aggregate 200000 rows into 10000 groups; x 0.1000/s; holds 1920000 bytes for 1.4 ms", "multiplier": 1, - "operator": "Project", + "operator": "Aggregate", "price_source": "analytical", "timing": "query_time" } }, "source": "analytical-cost-v2 (illustrative statistics)", "usage": { - "average_memory_bytes": 2458.08864, - "cpu_ops_per_second": 102000.0, + "average_memory_bytes": 552.978432, + "cpu_ops_per_second": 160000.0, "disk_bytes": 6400000, "latency_per_query": [ { @@ -100,12 +80,12 @@ }, { "compaction_ms": 0.0, - "query_ms": 1.26 + "query_ms": 1.44 } ], "peak_cpu_cores": 2, - "peak_memory_bytes": 18320064, - "scanned_bytes_per_second": 640000.0 + "peak_memory_bytes": 3840128, + "scanned_bytes_per_second": 1280000.0 } }, "dag": { @@ -125,24 +105,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -172,24 +149,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -219,24 +193,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -250,133 +221,11 @@ "producer": 1, "role": "Input", "window": "NotApplicable" - }, - { - "consumer": 4, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "Kll", - "params": { - "Kll": { - "failure_probability": 1e-7, - "k": 567 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 3, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 5, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" } ], "nodes": [ { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 0, "lifetime": "None", "output_schema": { @@ -387,24 +236,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -431,24 +277,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -469,28 +312,9 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 1, - "lifetime": { - "OneEvaluation": "Memory" - }, + "lifetime": "None", "output_schema": { "closed": true, "fields": [ @@ -499,24 +323,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -545,24 +366,7 @@ } }, { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, + "guarantee": null, "id": 2, "lifetime": "None", "output_schema": { @@ -573,24 +377,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -643,224 +444,21 @@ "Plain": "timestamp" }, "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "Kll", - "params": { - "Kll": { - "failure_probability": 1e-7, - "k": 567 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryAgg": { - "child": 1, - "family": { - "Sketch": [ - { - "algorithm": "Kll", - "params": { - "Kll": { - "failure_probability": 1e-7, - "k": 567 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity" - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "Kll", - "contract": "apache_datasketches_kll_empirical_99_delta_scaled_a9b42755072b", - "kind": "sketch_evaluation", - "params": { - "Kll": { - "failure_probability": 1e-7, - "k": 567 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "rank", - "accuracy_scope": "per_value", - "error": { - "op": "constant", - "value": 0.00998173834561 - }, - "failure_probability": { - "op": "constant", - "value": 1e-7 - } - } - }, - "id": 4, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryEstimate": { - "query": { - "Quantile": { - "q": 0.9 - } - }, - "summary_input": 3 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "Kll", - "contract": "apache_datasketches_kll_empirical_99_delta_scaled_a9b42755072b", - "kind": "sketch_evaluation", - "params": { - "Kll": { - "failure_probability": 1e-7, - "k": 567 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "rank", - "accuracy_scope": "per_value", - "error": { - "op": "constant", - "value": 0.00998173834561 - }, - "failure_probability": { - "op": "constant", - "value": 1e-7 - } - } - }, - "id": 5, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "float64" }, "name": "value", - "nullable": false, - "table": null + "nullable": false }, { "dtype": { "Plain": "utf8" }, "name": "$promql_series_identity", - "nullable": false, - "table": null + "nullable": false } ], "time_index": 0, @@ -877,29 +475,26 @@ }, "payload": { "NonASAP": { - "Project": { - "child": 4, - "cols": [ - { - "alias": "ts", - "expr": { - "Column": 0 - } - }, - { - "alias": "value", - "expr": { - "Column": 1 - } - }, + "Aggregate": { + "child": 1, + "filters": [], + "having": null, + "measures": [ { - "alias": "$promql_series_identity", - "expr": { - "Column": 2 - } + "accuracy": { + "accuracy_scope": "whole_result", + "failure_probability": 0.001, + "max_error": 0.01 + }, + "col": null, + "kind": "quantile", + "q": 0.9 } ], - "qualifier": null + "output_names": [ + "" + ], + "reduction": "PerEntity" } } } @@ -907,11 +502,11 @@ ], "roots": [ 2, - 5 + 3 ], "scalar_roots": [] }, - "display_name": "Q1 exact · Q2 Kll · shared Scan (Q1, Q2) · query time, shared: TimeRange" + "display_name": "Q1 exact · Q2 exact · shared Scan (Q1, Q2)" }, "tumbling_window_retention_ms": {} } diff --git a/crates/devtools/tests/sketch_plan_snapshots/nested-windows-15m-1h-mvp.json b/crates/devtools/tests/sketch_plan_snapshots/nested-windows-15m-1h-mvp.json index 54a2d6f95..cdc347b46 100644 --- a/crates/devtools/tests/sketch_plan_snapshots/nested-windows-15m-1h-mvp.json +++ b/crates/devtools/tests/sketch_plan_snapshots/nested-windows-15m-1h-mvp.json @@ -1,3523 +1,9 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -360000 - }, - { - "included": -300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 300000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 5, - "node_id": 17, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -420000 - }, - { - "included": -360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 360000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 6, - "node_id": 20, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -480000 - }, - { - "included": -420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 420000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 7, - "node_id": 23, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -540000 - }, - { - "included": -480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 480000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 8, - "node_id": 26, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -600000 - }, - { - "included": -540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 540000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 9, - "node_id": 29, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -660000 - }, - { - "included": -600000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 600000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 10, - "node_id": 32, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -720000 - }, - { - "included": -660000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 660000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 11, - "node_id": 35, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -780000 - }, - { - "included": -720000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 720000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 12, - "node_id": 38, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -840000 - }, - { - "included": -780000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 780000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 13, - "node_id": 41, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -900000 - }, - { - "included": -840000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 840000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 14, - "node_id": 44, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -960000 - }, - { - "included": -900000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 900000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 15, - "node_id": 50, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1020000 - }, - { - "included": -960000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 960000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 16, - "node_id": 53, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1080000 - }, - { - "included": -1020000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1020000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 17, - "node_id": 56, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1140000 - }, - { - "included": -1080000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1080000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 18, - "node_id": 59, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1200000 - }, - { - "included": -1140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1140000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 19, - "node_id": 62, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1260000 - }, - { - "included": -1200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1200000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 20, - "node_id": 65, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1320000 - }, - { - "included": -1260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1260000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 21, - "node_id": 68, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1380000 - }, - { - "included": -1320000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1320000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 22, - "node_id": 71, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1440000 - }, - { - "included": -1380000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1380000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 23, - "node_id": 74, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1500000 - }, - { - "included": -1440000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1440000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 24, - "node_id": 77, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1560000 - }, - { - "included": -1500000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1500000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 25, - "node_id": 80, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1620000 - }, - { - "included": -1560000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1560000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 26, - "node_id": 83, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1680000 - }, - { - "included": -1620000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1620000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 27, - "node_id": 86, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1740000 - }, - { - "included": -1680000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1680000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 28, - "node_id": 89, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1800000 - }, - { - "included": -1740000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1740000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 29, - "node_id": 92, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1860000 - }, - { - "included": -1800000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1800000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 30, - "node_id": 95, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1920000 - }, - { - "included": -1860000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1860000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 31, - "node_id": 98, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1980000 - }, - { - "included": -1920000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1920000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 32, - "node_id": 101, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2040000 - }, - { - "included": -1980000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1980000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 33, - "node_id": 104, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2100000 - }, - { - "included": -2040000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2040000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 34, - "node_id": 107, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2160000 - }, - { - "included": -2100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2100000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 35, - "node_id": 110, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2220000 - }, - { - "included": -2160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2160000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 36, - "node_id": 113, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2280000 - }, - { - "included": -2220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2220000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 37, - "node_id": 116, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2340000 - }, - { - "included": -2280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2280000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 38, - "node_id": 119, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2400000 - }, - { - "included": -2340000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2340000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 39, - "node_id": 122, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2460000 - }, - { - "included": -2400000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2400000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 40, - "node_id": 125, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2520000 - }, - { - "included": -2460000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2460000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 41, - "node_id": 128, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2580000 - }, - { - "included": -2520000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2520000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 42, - "node_id": 131, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2640000 - }, - { - "included": -2580000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2580000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 43, - "node_id": 134, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2700000 - }, - { - "included": -2640000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2640000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 44, - "node_id": 137, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2760000 - }, - { - "included": -2700000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2700000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 45, - "node_id": 140, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2820000 - }, - { - "included": -2760000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2760000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 46, - "node_id": 143, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2880000 - }, - { - "included": -2820000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2820000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 47, - "node_id": 146, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2940000 - }, - { - "included": -2880000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2880000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 48, - "node_id": 149, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3000000 - }, - { - "included": -2940000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2940000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 49, - "node_id": 152, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3060000 - }, - { - "included": -3000000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3000000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 50, - "node_id": 155, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3120000 - }, - { - "included": -3060000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3060000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 51, - "node_id": 158, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3180000 - }, - { - "included": -3120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3120000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 52, - "node_id": 161, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3240000 - }, - { - "included": -3180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3180000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 53, - "node_id": 164, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3300000 - }, - { - "included": -3240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3240000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 54, - "node_id": 167, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3360000 - }, - { - "included": -3300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3300000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 55, - "node_id": 170, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3420000 - }, - { - "included": -3360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3360000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 56, - "node_id": 173, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3480000 - }, - { - "included": -3420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3420000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 57, - "node_id": 176, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3540000 - }, - { - "included": -3480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3480000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 58, - "node_id": 179, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3600000 - }, - { - "included": -3540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3540000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 59, - "node_id": 182, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - } - ], - "proven_optimal": true, + "error": "plan selection: no valid candidate: [Rejection { id: \"workload\", cause: Infeasible, reason: \"no plan gives every query output a candidate whose every input has an admissible producer and meets its query's accuracy target at the root, constraint (K) (the selection MILP is infeasible); executions left out because they could not be costed: one of its inputs has no producer that can be costed\" }]", "queries": [ "quantile_over_time(0.9, data[15m])", "quantile_over_time(0.9, data[1h])" ], - "search_status": "optimal", - "selected": { - "accepted": [ - { - "accepted_metric": "relative", - "accepted_regardless_of_guarantee": false, - "guarantee_check_rejection": null, - "sketches": [ - "DDSketch" - ], - "summary": "metric not set; accepted relative (DDSketch)", - "target_metric": null - }, - { - "accepted_metric": "relative", - "accepted_regardless_of_guarantee": false, - "guarantee_check_rejection": null, - "sketches": [ - "DDSketch" - ], - "summary": "metric not set; accepted relative (DDSketch)", - "target_metric": null - } - ], - "cost": { - "cost_per_second": 3.99002037349e-6, - "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.0124131666667, - "per_node": { - "0": { - "cost_per_second": 9.44496e-8, - "cpu_core_seconds_per_second": 0.0084, - "detail": "scan 2000000 samples; x 1.0000/s", - "multiplier": 1, - "operator": "Scan", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "1": { - "cost_per_second": 3.89542189639e-6, - "cpu_core_seconds_per_second": 0.004, - "detail": "build DDSketch in 60 tumbling windows of 60000 ms for 10000 groups: 2000000 rows x (1 + depth 1); x 1.0000/s; keeps 3347680000 bytes", - "multiplier": 1, - "operator": "SummaryTumblingWindowChain", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "2": { - "cost_per_second": 2.82888458476e-11, - "cpu_core_seconds_per_second": 2.5e-6, - "detail": "merge 150000 states into 10000; x 0.0167/s; holds 54880000 bytes for 0.2 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", - "timing": "query_time" - }, - "3": { - "cost_per_second": 1.874e-12, - "cpu_core_seconds_per_second": 1.66666666667e-7, - "detail": "estimate 10000 groups x 1; x 0.0167/s", - "multiplier": 1, - "operator": "SummaryEstimate", - "price_source": "analytical", - "timing": "query_time" - }, - "4": { - "cost_per_second": 1.87400010428e-12, - "cpu_core_seconds_per_second": 1.66666666667e-7, - "detail": "operator: pass 10000 rows; x 0.0167/s; holds 32 bytes for 0.2 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - }, - "5": { - "cost_per_second": 1.13092261327e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "merge 600000 states into 10000; x 0.0167/s; holds 54880000 bytes for 0.6 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", - "timing": "query_time" - }, - "6": { - "cost_per_second": 1.874e-12, - "cpu_core_seconds_per_second": 1.66666666667e-7, - "detail": "estimate 10000 groups x 1; x 0.0167/s", - "multiplier": 1, - "operator": "SummaryEstimate", - "price_source": "analytical", - "timing": "query_time" - }, - "7": { - "cost_per_second": 1.87400038033e-12, - "cpu_core_seconds_per_second": 1.66666666667e-7, - "detail": "operator: pass 10000 rows; x 0.0167/s; holds 32 bytes for 0.6 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - } - }, - "source": "analytical-cost-v2 (illustrative statistics)", - "usage": { - "average_memory_bytes": 3347680722.59, - "cpu_ops_per_second": 6013166.66667, - "disk_bytes": 0, - "latency_per_query": [ - { - "compaction_ms": 0.0, - "query_ms": 0.17 - }, - { - "compaction_ms": 0.0, - "query_ms": 0.62 - } - ], - "peak_cpu_cores": 3, - "peak_memory_bytes": 3457440096, - "scanned_bytes_per_second": 64000000.0 - } - }, - "dag": { - "edges": [ - { - "consumer": 1, - "data_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 0, - "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" - }, - { - "consumer": 2, - "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 1, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 3, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 2, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 4, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 3, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 5, - "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 1, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 6, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 5, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 7, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 6, - "role": "Input", - "window": "NotApplicable" - } - ], - "nodes": [ - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 0, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "payload": { - "NonASAP": { - "Scan": { - "predicates": [], - "schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "source": { - "TimeSeries": { - "metric": "data" - } - } - } - } - } - }, - { - "guarantee": null, - "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 0, - "family": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 60, - "tumbling_window_width_ms": 60000 - } - } - } - }, - { - "guarantee": null, - "id": 2, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ], - "newest_tumbling_windows": 15 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 3, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryEstimate": { - "query": { - "Quantile": { - "q": 0.9 - } - }, - "summary_input": 2 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 4, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 3, - "cols": [ - { - "alias": "ts", - "expr": { - "Column": 0 - } - }, - { - "alias": "value", - "expr": { - "Column": 1 - } - }, - { - "alias": "$promql_series_identity", - "expr": { - "Column": 2 - } - } - ], - "qualifier": null - } - } - } - }, - { - "guarantee": null, - "id": 5, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 6, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryEstimate": { - "query": { - "Quantile": { - "q": 0.9 - } - }, - "summary_input": 5 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 7, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 6, - "cols": [ - { - "alias": "ts", - "expr": { - "Column": 0 - } - }, - { - "alias": "value", - "expr": { - "Column": 1 - } - }, - { - "alias": "$promql_series_identity", - "expr": { - "Column": 2 - } - } - ], - "qualifier": null - } - } - } - } - ], - "roots": [ - 4, - 7 - ], - "scalar_roots": [] - }, - "display_name": "Q1 DDSketch ×60 tumbling windows · Q2 DDSketch ×60 tumbling windows · shared DDSketch ×60 tumbling windows (Q1, Q2) · shared Scan (Q1, Q2) · ingestion time: DDSketch for Q1, Q2, 60 × 1m tumbling windows" - }, - "tumbling_window_retention_ms": { - "1": 3600000 - } + "selected": null } diff --git a/crates/devtools/tests/sketch_plan_snapshots/quantile-grouped-mvp.json b/crates/devtools/tests/sketch_plan_snapshots/quantile-grouped-mvp.json index 37361b98d..841177647 100644 --- a/crates/devtools/tests/sketch_plan_snapshots/quantile-grouped-mvp.json +++ b/crates/devtools/tests/sketch_plan_snapshots/quantile-grouped-mvp.json @@ -1,3161 +1,8 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -10000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -20000 - }, - { - "included": -10000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 10000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -30000 - }, - { - "included": -20000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 20000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -40000 - }, - { - "included": -30000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 30000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -50000 - }, - { - "included": -40000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 40000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": -50000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 50000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 5, - "node_id": 17, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -70000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 6, - "node_id": 20, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -80000 - }, - { - "included": -70000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 70000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 7, - "node_id": 23, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -90000 - }, - { - "included": -80000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 80000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 8, - "node_id": 26, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -100000 - }, - { - "included": -90000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 90000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 9, - "node_id": 29, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -110000 - }, - { - "included": -100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 100000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 10, - "node_id": 32, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -110000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 110000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 11, - "node_id": 35, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -130000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 12, - "node_id": 38, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -140000 - }, - { - "included": -130000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 130000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 13, - "node_id": 41, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -150000 - }, - { - "included": -140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 140000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 14, - "node_id": 44, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -160000 - }, - { - "included": -150000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 150000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 15, - "node_id": 47, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -170000 - }, - { - "included": -160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 160000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 16, - "node_id": 50, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -170000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 170000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 17, - "node_id": 53, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -190000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 18, - "node_id": 56, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -200000 - }, - { - "included": -190000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 190000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 19, - "node_id": 59, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -210000 - }, - { - "included": -200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 200000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 20, - "node_id": 62, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -220000 - }, - { - "included": -210000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 210000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 21, - "node_id": 65, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -230000 - }, - { - "included": -220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 220000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 22, - "node_id": 68, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -230000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 230000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 23, - "node_id": 71, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -250000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 24, - "node_id": 74, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -260000 - }, - { - "included": -250000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 250000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 25, - "node_id": 77, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -270000 - }, - { - "included": -260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 260000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 26, - "node_id": 80, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -280000 - }, - { - "included": -270000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 270000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 27, - "node_id": 83, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -290000 - }, - { - "included": -280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 280000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 28, - "node_id": 86, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef56d9daf3c36b6588ca5f3bbb46d4a6", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -290000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 290000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 29, - "node_id": 89, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - } - ], - "proven_optimal": true, + "error": "plan selection: no valid candidate: [Rejection { id: \"workload\", cause: Infeasible, reason: \"no plan gives every query output a candidate whose every input has an admissible producer and meets its query's accuracy target at the root, constraint (K) (the selection MILP is infeasible)\" }]", "queries": [ "avg by (region) (quantile_over_time(0.9, data[5m]))" ], - "search_status": "optimal", - "selected": { - "accepted": [ - { - "accepted_metric": "relative", - "accepted_regardless_of_guarantee": false, - "guarantee_check_rejection": null, - "sketches": [ - "DDSketch" - ], - "summary": "metric not set; accepted relative (DDSketch)", - "target_metric": null - } - ], - "cost": { - "cost_per_second": 1.96599532814e-6, - "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.000819, - "per_node": { - "0": { - "cost_per_second": 6.52152e-9, - "cpu_core_seconds_per_second": 0.00058, - "detail": "scan 100000 samples; x 1.0000/s", - "multiplier": 1, - "operator": "Scan", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "1": { - "cost_per_second": 1.95903278013e-6, - "cpu_core_seconds_per_second": 0.0002, - "detail": "build DDSketch in 30 tumbling windows of 10000 ms for 10000 groups: 100000 rows x (1 + depth 1); x 1.0000/s; keeps 1701280000 bytes", - "multiplier": 1, - "operator": "SummaryTumblingWindowChain", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "10": { - "cost_per_second": 1.12440010766e-11, - "cpu_core_seconds_per_second": 1e-6, - "detail": "operator: pass 10000 rows; x 0.1000/s; holds 24 bytes for 0.4 ms", - "multiplier": 1, - "operator": "BinaryOp", - "price_source": "analytical", - "timing": "query_time" - }, - "11": { - "cost_per_second": 1.12440010766e-11, - "cpu_core_seconds_per_second": 1e-6, - "detail": "operator: pass 10000 rows; x 0.1000/s; holds 24 bytes for 0.4 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - }, - "2": { - "cost_per_second": 3.39781760491e-10, - "cpu_core_seconds_per_second": 0.00003, - "detail": "merge 300000 states into 10000; x 0.1000/s; holds 54880000 bytes for 0.4 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", - "timing": "query_time" - }, - "3": { - "cost_per_second": 1.1244e-11, - "cpu_core_seconds_per_second": 1e-6, - "detail": "estimate 10000 groups x 1; x 0.1000/s", - "multiplier": 1, - "operator": "SummaryEstimate", - "price_source": "analytical", - "timing": "query_time" - }, - "4": { - "cost_per_second": 1.12440021531e-11, - "cpu_core_seconds_per_second": 1e-6, - "detail": "operator: pass 10000 rows; x 0.1000/s; holds 48 bytes for 0.4 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - }, - "5": { - "cost_per_second": 1.1269120005e-11, - "cpu_core_seconds_per_second": 1e-6, - "detail": "build exact Sum accumulator into 10000 states: 10000 rows x depth 1; x 0.1000/s; holds 560000 bytes for 0.4 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "6": { - "cost_per_second": 1.1244e-11, - "cpu_core_seconds_per_second": 1e-6, - "detail": "finalize 10000 accumulators; x 0.1000/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", - "price_source": "analytical", - "timing": "query_time" - }, - "7": { - "cost_per_second": 1.1269120005e-11, - "cpu_core_seconds_per_second": 1e-6, - "detail": "build exact Count accumulator into 10000 states: 10000 rows x depth 1; x 0.1000/s; holds 560000 bytes for 0.4 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "8": { - "cost_per_second": 1.1244e-11, - "cpu_core_seconds_per_second": 1e-6, - "detail": "finalize 10000 accumulators; x 0.1000/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", - "price_source": "analytical", - "timing": "query_time" - }, - "9": { - "cost_per_second": 1.12440010766e-11, - "cpu_core_seconds_per_second": 1e-6, - "detail": "operator: pass 10000 rows; x 0.1000/s; holds 24 bytes for 0.4 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - } - }, - "source": "analytical-cost-v2 (illustrative statistics)", - "usage": { - "average_memory_bytes": 1701282184.0, - "cpu_ops_per_second": 339000.0, - "disk_bytes": 0, - "latency_per_query": [ - { - "compaction_ms": 0.0, - "query_ms": 0.39 - } - ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 1757280168, - "scanned_bytes_per_second": 4800000.0 - } - }, - "dag": { - "edges": [ - { - "consumer": 1, - "data_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 0, - "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" - }, - { - "consumer": 2, - "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 1, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 3, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 2, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 4, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 3, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 5, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 6, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 5, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 7, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 8, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Count", - "Count" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 7, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 9, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "int64" - }, - "name": "count", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 8, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 10, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 6, - "role": "Left", - "window": "NotApplicable" - }, - { - "consumer": 10, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "col_1", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 9, - "role": "Right", - "window": "NotApplicable" - }, - { - "consumer": 11, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 10, - "role": "Input", - "window": "NotApplicable" - } - ], - "nodes": [ - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 0, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "payload": { - "NonASAP": { - "Scan": { - "predicates": [], - "schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "source": { - "TimeSeries": { - "metric": "data" - } - } - } - } - } - }, - { - "guarantee": null, - "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 0, - "family": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 30, - "tumbling_window_width_ms": 10000 - } - } - } - }, - { - "guarantee": null, - "id": 2, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 3, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryEstimate": { - "query": { - "Quantile": { - "q": 0.9 - } - }, - "summary_input": 2 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 4, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 3, - "cols": [ - { - "alias": "ts", - "expr": { - "Column": 0 - } - }, - { - "alias": "value", - "expr": { - "Column": 1 - } - }, - { - "alias": "region", - "expr": { - "Column": 2 - } - }, - { - "alias": "$promql_series_identity", - "expr": { - "Column": 3 - } - } - ], - "qualifier": null - } - } - } - }, - { - "guarantee": null, - "id": 5, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryAgg": { - "child": 4, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": { - "Reduce": [ - 2 - ] - } - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "unavailable_statistic", - "statistic": "input_row_count" - }, - { - "kind": "unavailable_statistic", - "statistic": "values_non_negative[data]" - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "input_index": 0, - "kind": "child_guarantee" - }, - { - "kind": "exact", - "reason": "exact aggregation" - }, - { - "kind": "composition_step", - "operator": { - "op": "exact_sum" - }, - "rule": "exact_sum_relative" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "max", - "terms": [ - { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - } - ] - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "count": { - "op": "unknown", - "statistic": "input_row_count" - }, - "inner": { - "op": "union_bound", - "terms": [ - { - "op": "zero" - } - ] - }, - "op": "scaled" - } - } - }, - "id": 6, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 5 - } - } - } - }, - { - "guarantee": null, - "id": 7, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Count", - "Count" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryAgg": { - "child": 4, - "family": { - "ExactAggregate": [ - "Count", - "Count" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": { - "Reduce": [ - 2 - ] - } - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "count of rows" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 8, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "int64" - }, - "name": "count", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 7 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 9, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "col_1", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 8, - "cols": [ - { - "alias": null, - "expr": { - "Column": 0 - } - }, - { - "alias": null, - "expr": { - "Cast": { - "expr": { - "Column": 1 - }, - "to": "float64", - "try_cast": false - } - } - } - ], - "qualifier": null - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "unavailable_statistic", - "statistic": "input_row_count" - }, - { - "kind": "unavailable_statistic", - "statistic": "values_non_negative[data]" - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "input_index": 0, - "kind": "child_guarantee" - }, - { - "kind": "exact", - "reason": "exact aggregation" - }, - { - "kind": "composition_step", - "operator": { - "op": "exact_sum" - }, - "rule": "exact_sum_relative" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "max", - "terms": [ - { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - } - ] - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "count": { - "op": "unknown", - "statistic": "input_row_count" - }, - "inner": { - "op": "union_bound", - "terms": [ - { - "op": "zero" - } - ] - }, - "op": "scaled" - } - } - }, - "id": 10, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "BinaryOp": { - "lhs": 6, - "operator": { - "checked_finite_division": false, - "checked_relative_division": false, - "kind": { - "Arithmetic": "Div" - }, - "vector_match": null - }, - "return_bool": false, - "rhs": 9 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "unavailable_statistic", - "statistic": "input_row_count" - }, - { - "kind": "unavailable_statistic", - "statistic": "values_non_negative[data]" - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "input_index": 0, - "kind": "child_guarantee" - }, - { - "kind": "exact", - "reason": "exact aggregation" - }, - { - "kind": "composition_step", - "operator": { - "op": "exact_sum" - }, - "rule": "exact_sum_relative" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "max", - "terms": [ - { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - } - ] - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "count": { - "op": "unknown", - "statistic": "input_row_count" - }, - "inner": { - "op": "union_bound", - "terms": [ - { - "op": "zero" - } - ] - }, - "op": "scaled" - } - } - }, - "id": 11, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "avg", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 10, - "cols": [ - { - "alias": "region", - "expr": { - "Column": 0 - } - }, - { - "alias": "avg", - "expr": { - "Column": 1 - } - } - ], - "qualifier": null - } - } - } - } - ], - "roots": [ - 11 - ], - "scalar_roots": [] - }, - "display_name": "Q1 Sum acc + DDSketch ×30 tumbling windows + Count acc · ingestion time: DDSketch for Q1, 30 × 10s tumbling windows" - }, - "tumbling_window_retention_ms": { - "1": 300000 - } + "selected": null } diff --git a/crates/devtools/tests/sketch_plan_snapshots/quantile-single-mvp.json b/crates/devtools/tests/sketch_plan_snapshots/quantile-single-mvp.json index 6583082f6..fbede5eb7 100644 --- a/crates/devtools/tests/sketch_plan_snapshots/quantile-single-mvp.json +++ b/crates/devtools/tests/sketch_plan_snapshots/quantile-single-mvp.json @@ -1,1907 +1,8 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -10000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -20000 - }, - { - "included": -10000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 10000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -30000 - }, - { - "included": -20000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 20000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -40000 - }, - { - "included": -30000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 30000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -50000 - }, - { - "included": -40000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 40000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": -50000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 50000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 5, - "node_id": 17, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -70000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 6, - "node_id": 20, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -80000 - }, - { - "included": -70000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 70000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 7, - "node_id": 23, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -90000 - }, - { - "included": -80000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 80000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 8, - "node_id": 26, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -100000 - }, - { - "included": -90000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 90000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 9, - "node_id": 29, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -110000 - }, - { - "included": -100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 100000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 10, - "node_id": 32, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -110000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 110000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 11, - "node_id": 35, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -130000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 12, - "node_id": 38, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -140000 - }, - { - "included": -130000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 130000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 13, - "node_id": 41, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -150000 - }, - { - "included": -140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 140000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 14, - "node_id": 44, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -160000 - }, - { - "included": -150000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 150000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 15, - "node_id": 47, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -170000 - }, - { - "included": -160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 160000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 16, - "node_id": 50, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -170000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 170000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 17, - "node_id": 53, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -190000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 18, - "node_id": 56, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -200000 - }, - { - "included": -190000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 190000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 19, - "node_id": 59, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -210000 - }, - { - "included": -200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 200000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 20, - "node_id": 62, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -220000 - }, - { - "included": -210000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 210000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 21, - "node_id": 65, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -230000 - }, - { - "included": -220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 220000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 22, - "node_id": 68, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -230000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 230000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 23, - "node_id": 71, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -250000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 24, - "node_id": 74, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -260000 - }, - { - "included": -250000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 250000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 25, - "node_id": 77, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -270000 - }, - { - "included": -260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 260000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 26, - "node_id": 80, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -280000 - }, - { - "included": -270000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 270000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 27, - "node_id": 83, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -290000 - }, - { - "included": -280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 280000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 28, - "node_id": 86, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "c71f714cc266c54fc993b110840fdf3d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -290000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 290000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 29, - "node_id": 89, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - } - ], - "proven_optimal": true, + "error": "plan selection: no valid candidate: [Rejection { id: \"workload\", cause: Infeasible, reason: \"no plan gives every query output a candidate whose every input has an admissible producer and meets its query's accuracy target at the root, constraint (K) (the selection MILP is infeasible); executions left out because they could not be costed: one of its inputs has no producer that can be costed\" }]", "queries": [ "quantile_over_time(0.99, data[5m])" ], - "search_status": "optimal", - "selected": { - "accepted": [ - { - "accepted_metric": "rank", - "accepted_regardless_of_guarantee": false, - "guarantee_check_rejection": null, - "sketches": [ - "Kll" - ], - "summary": "metric not set; accepted rank (Kll)", - "target_metric": null - } - ], - "cost": { - "cost_per_second": 6.37724245448e-7, - "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.000652, - "per_node": { - "0": { - "cost_per_second": 4.72248e-9, - "cpu_core_seconds_per_second": 0.00042, - "detail": "scan 100000 samples; x 1.0000/s", - "multiplier": 1, - "operator": "Scan", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "1": { - "cost_per_second": 6.32641306719e-7, - "cpu_core_seconds_per_second": 0.0002, - "detail": "build Kll in 30 tumbling windows of 10000 ms for 10000 groups: 100000 rows x (1 + depth 1); x 1.0000/s; keeps 548080000 bytes", - "multiplier": 1, - "operator": "SummaryTumblingWindowChain", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "2": { - "cost_per_second": 3.37970727749e-10, - "cpu_core_seconds_per_second": 0.00003, - "detail": "merge 300000 states into 10000; x 0.1000/s; holds 17680000 bytes for 0.3 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", - "timing": "query_time" - }, - "3": { - "cost_per_second": 1.1244e-11, - "cpu_core_seconds_per_second": 1e-6, - "detail": "estimate 10000 groups x 1; x 0.1000/s", - "multiplier": 1, - "operator": "SummaryEstimate", - "price_source": "analytical", - "timing": "query_time" - }, - "4": { - "cost_per_second": 1.12440011778e-11, - "cpu_core_seconds_per_second": 1e-6, - "detail": "operator: pass 10000 rows; x 0.1000/s; holds 32 bytes for 0.3 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - } - }, - "source": "analytical-cost-v2 (illustrative statistics)", - "usage": { - "average_memory_bytes": 548080565.761, - "cpu_ops_per_second": 332000.0, - "disk_bytes": 0, - "latency_per_query": [ - { - "compaction_ms": 0.0, - "query_ms": 0.32 - } - ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 565760064, - "scanned_bytes_per_second": 3200000.0 - } - }, - "dag": { - "edges": [ - { - "consumer": 1, - "data_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 0, - "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" - }, - { - "consumer": 2, - "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "Kll", - "params": { - "Kll": { - "failure_probability": 0.00003, - "k": 86 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 1, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 3, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "Kll", - "params": { - "Kll": { - "failure_probability": 0.00003, - "k": 86 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 2, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 4, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 3, - "role": "Input", - "window": "NotApplicable" - } - ], - "nodes": [ - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 0, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "payload": { - "NonASAP": { - "Scan": { - "predicates": [], - "schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "source": { - "TimeSeries": { - "metric": "data" - } - } - } - } - } - }, - { - "guarantee": null, - "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "Kll", - "params": { - "Kll": { - "failure_probability": 0.00003, - "k": 86 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 0, - "family": { - "Sketch": [ - { - "algorithm": "Kll", - "params": { - "Kll": { - "failure_probability": 0.00003, - "k": 86 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 30, - "tumbling_window_width_ms": 10000 - } - } - } - }, - { - "guarantee": null, - "id": 2, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "Kll", - "params": { - "Kll": { - "failure_probability": 0.00003, - "k": 86 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "Kll", - "contract": "apache_datasketches_kll_empirical_99_delta_scaled_a9b42755072b", - "kind": "sketch_evaluation", - "params": { - "Kll": { - "failure_probability": 0.00003, - "k": 86 - } - }, - "query": "Quantile { q: 0.99 }" - } - ], - "spec": { - "accuracy_metric": "rank", - "accuracy_scope": "per_value", - "error": { - "op": "constant", - "value": 0.0489371726995 - }, - "failure_probability": { - "op": "constant", - "value": 0.00003 - } - } - }, - "id": 3, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryEstimate": { - "query": { - "Quantile": { - "q": 0.99 - } - }, - "summary_input": 2 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "Kll", - "contract": "apache_datasketches_kll_empirical_99_delta_scaled_a9b42755072b", - "kind": "sketch_evaluation", - "params": { - "Kll": { - "failure_probability": 0.00003, - "k": 86 - } - }, - "query": "Quantile { q: 0.99 }" - } - ], - "spec": { - "accuracy_metric": "rank", - "accuracy_scope": "per_value", - "error": { - "op": "constant", - "value": 0.0489371726995 - }, - "failure_probability": { - "op": "constant", - "value": 0.00003 - } - } - }, - "id": 4, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 3, - "cols": [ - { - "alias": "ts", - "expr": { - "Column": 0 - } - }, - { - "alias": "value", - "expr": { - "Column": 1 - } - }, - { - "alias": "$promql_series_identity", - "expr": { - "Column": 2 - } - } - ], - "qualifier": null - } - } - } - } - ], - "roots": [ - 4 - ], - "scalar_roots": [] - }, - "display_name": "Q1 Kll ×30 tumbling windows · ingestion time: Kll for Q1, 30 × 10s tumbling windows" - }, - "tumbling_window_retention_ms": { - "1": 300000 - } + "selected": null } diff --git a/crates/devtools/tests/sketch_plan_snapshots/random-mixed-seed-862-long-w01-q3-mvp.json b/crates/devtools/tests/sketch_plan_snapshots/random-mixed-seed-862-long-w01-q3-mvp.json index d569fff3a..17abba5c4 100644 --- a/crates/devtools/tests/sketch_plan_snapshots/random-mixed-seed-862-long-w01-q3-mvp.json +++ b/crates/devtools/tests/sketch_plan_snapshots/random-mixed-seed-862-long-w01-q3-mvp.json @@ -1,13421 +1,8 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2000 - }, - { - "included": -1000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3000 - }, - { - "included": -2000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -4000 - }, - { - "included": -3000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -5000 - }, - { - "included": -4000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 4000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -6000 - }, - { - "included": -5000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 5000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 5, - "node_id": 17, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -7000 - }, - { - "included": -6000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 6000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 6, - "node_id": 20, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -8000 - }, - { - "included": -7000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 7000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 7, - "node_id": 23, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -9000 - }, - { - "included": -8000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 8000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 8, - "node_id": 26, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -10000 - }, - { - "included": -9000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 9000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 9, - "node_id": 29, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -11000 - }, - { - "included": -10000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 10000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 10, - "node_id": 32, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -12000 - }, - { - "included": -11000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 11000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 11, - "node_id": 35, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -13000 - }, - { - "included": -12000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 12000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 12, - "node_id": 38, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -14000 - }, - { - "included": -13000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 13000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 13, - "node_id": 41, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -15000 - }, - { - "included": -14000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 14000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 14, - "node_id": 44, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -16000 - }, - { - "included": -15000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 15000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 15, - "node_id": 47, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -17000 - }, - { - "included": -16000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 16000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 16, - "node_id": 50, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -18000 - }, - { - "included": -17000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 17000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 17, - "node_id": 53, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -19000 - }, - { - "included": -18000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 18000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 18, - "node_id": 56, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -20000 - }, - { - "included": -19000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 19000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 19, - "node_id": 59, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -21000 - }, - { - "included": -20000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 20000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 20, - "node_id": 62, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -22000 - }, - { - "included": -21000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 21, - "node_id": 65, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -23000 - }, - { - "included": -22000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 22, - "node_id": 68, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -24000 - }, - { - "included": -23000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 23, - "node_id": 71, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -25000 - }, - { - "included": -24000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 24, - "node_id": 74, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -26000 - }, - { - "included": -25000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 25000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 25, - "node_id": 77, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -27000 - }, - { - "included": -26000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 26000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 26, - "node_id": 80, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -28000 - }, - { - "included": -27000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 27000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 27, - "node_id": 83, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -29000 - }, - { - "included": -28000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 28000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 28, - "node_id": 86, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -30000 - }, - { - "included": -29000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 29000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 29, - "node_id": 89, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -31000 - }, - { - "included": -30000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 30000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 30, - "node_id": 92, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -32000 - }, - { - "included": -31000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 31000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 31, - "node_id": 95, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -33000 - }, - { - "included": -32000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 32000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 32, - "node_id": 98, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -34000 - }, - { - "included": -33000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 33000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 33, - "node_id": 101, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -35000 - }, - { - "included": -34000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 34000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 34, - "node_id": 104, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -36000 - }, - { - "included": -35000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 35000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 35, - "node_id": 107, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -37000 - }, - { - "included": -36000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 36000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 36, - "node_id": 110, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -38000 - }, - { - "included": -37000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 37000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 37, - "node_id": 113, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -39000 - }, - { - "included": -38000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 38000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 38, - "node_id": 116, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -40000 - }, - { - "included": -39000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 39000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 39, - "node_id": 119, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -41000 - }, - { - "included": -40000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 40000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 40, - "node_id": 122, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -42000 - }, - { - "included": -41000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 41000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 41, - "node_id": 125, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -43000 - }, - { - "included": -42000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 42000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 42, - "node_id": 128, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -44000 - }, - { - "included": -43000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 43000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 43, - "node_id": 131, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -45000 - }, - { - "included": -44000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 44000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 44, - "node_id": 134, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -46000 - }, - { - "included": -45000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 45000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 45, - "node_id": 137, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -47000 - }, - { - "included": -46000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 46000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 46, - "node_id": 140, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -48000 - }, - { - "included": -47000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 47000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 47, - "node_id": 143, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -49000 - }, - { - "included": -48000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 48000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 48, - "node_id": 146, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -50000 - }, - { - "included": -49000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 49000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 49, - "node_id": 149, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -51000 - }, - { - "included": -50000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 50000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 50, - "node_id": 152, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -52000 - }, - { - "included": -51000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 51000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 51, - "node_id": 155, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -53000 - }, - { - "included": -52000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 52000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 52, - "node_id": 158, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -54000 - }, - { - "included": -53000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 53000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 53, - "node_id": 161, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -55000 - }, - { - "included": -54000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 54000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 54, - "node_id": 164, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -56000 - }, - { - "included": -55000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 55000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 55, - "node_id": 167, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -57000 - }, - { - "included": -56000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 56000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 56, - "node_id": 170, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -58000 - }, - { - "included": -57000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 57000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 57, - "node_id": 173, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -59000 - }, - { - "included": -58000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 58000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 58, - "node_id": 176, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": -59000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 59000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 59, - "node_id": 179, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -61000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 60, - "node_id": 182, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -62000 - }, - { - "included": -61000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 61000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 61, - "node_id": 185, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -63000 - }, - { - "included": -62000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 62000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 62, - "node_id": 188, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -64000 - }, - { - "included": -63000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 63000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 63, - "node_id": 191, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -65000 - }, - { - "included": -64000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 64000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 64, - "node_id": 194, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -66000 - }, - { - "included": -65000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 65000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 65, - "node_id": 197, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -67000 - }, - { - "included": -66000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 66000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 66, - "node_id": 200, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -68000 - }, - { - "included": -67000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 67000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 67, - "node_id": 203, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -69000 - }, - { - "included": -68000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 68000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 68, - "node_id": 206, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -70000 - }, - { - "included": -69000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 69000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 69, - "node_id": 209, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -71000 - }, - { - "included": -70000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 70000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 70, - "node_id": 212, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -72000 - }, - { - "included": -71000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 71000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 71, - "node_id": 215, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -73000 - }, - { - "included": -72000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 72000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 72, - "node_id": 218, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -74000 - }, - { - "included": -73000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 73000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 73, - "node_id": 221, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -75000 - }, - { - "included": -74000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 74000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 74, - "node_id": 224, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -76000 - }, - { - "included": -75000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 75000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 75, - "node_id": 227, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -77000 - }, - { - "included": -76000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 76000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 76, - "node_id": 230, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -78000 - }, - { - "included": -77000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 77000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 77, - "node_id": 233, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -79000 - }, - { - "included": -78000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 78000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 78, - "node_id": 236, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -80000 - }, - { - "included": -79000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 79000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 79, - "node_id": 239, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -81000 - }, - { - "included": -80000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 80000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 80, - "node_id": 242, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -82000 - }, - { - "included": -81000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 81000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 81, - "node_id": 245, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -83000 - }, - { - "included": -82000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 82000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 82, - "node_id": 248, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -84000 - }, - { - "included": -83000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 83000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 83, - "node_id": 251, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -85000 - }, - { - "included": -84000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 84000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 84, - "node_id": 254, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -86000 - }, - { - "included": -85000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 85000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 85, - "node_id": 257, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -87000 - }, - { - "included": -86000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 86000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 86, - "node_id": 260, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -88000 - }, - { - "included": -87000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 87000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 87, - "node_id": 263, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -89000 - }, - { - "included": -88000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 88000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 88, - "node_id": 266, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -90000 - }, - { - "included": -89000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 89000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 89, - "node_id": 269, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -91000 - }, - { - "included": -90000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 90000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 90, - "node_id": 272, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -92000 - }, - { - "included": -91000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 91000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 91, - "node_id": 275, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -93000 - }, - { - "included": -92000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 92000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 92, - "node_id": 278, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -94000 - }, - { - "included": -93000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 93000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 93, - "node_id": 281, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -95000 - }, - { - "included": -94000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 94000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 94, - "node_id": 284, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -96000 - }, - { - "included": -95000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 95000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 95, - "node_id": 287, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -97000 - }, - { - "included": -96000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 96000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 96, - "node_id": 290, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -98000 - }, - { - "included": -97000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 97000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 97, - "node_id": 293, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -99000 - }, - { - "included": -98000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 98000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 98, - "node_id": 296, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -100000 - }, - { - "included": -99000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 99000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 99, - "node_id": 299, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -101000 - }, - { - "included": -100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 100000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 100, - "node_id": 302, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -102000 - }, - { - "included": -101000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 101000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 101, - "node_id": 305, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -103000 - }, - { - "included": -102000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 102000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 102, - "node_id": 308, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -104000 - }, - { - "included": -103000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 103000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 103, - "node_id": 311, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -105000 - }, - { - "included": -104000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 104000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 104, - "node_id": 314, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -106000 - }, - { - "included": -105000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 105000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 105, - "node_id": 317, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -107000 - }, - { - "included": -106000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 106000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 106, - "node_id": 320, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -108000 - }, - { - "included": -107000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 107000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 107, - "node_id": 323, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -109000 - }, - { - "included": -108000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 108000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 108, - "node_id": 326, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -110000 - }, - { - "included": -109000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 109000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 109, - "node_id": 329, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -111000 - }, - { - "included": -110000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 110000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 110, - "node_id": 332, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -112000 - }, - { - "included": -111000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 111000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 111, - "node_id": 335, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -113000 - }, - { - "included": -112000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 112000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 112, - "node_id": 338, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -114000 - }, - { - "included": -113000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 113000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 113, - "node_id": 341, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -115000 - }, - { - "included": -114000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 114000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 114, - "node_id": 344, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -116000 - }, - { - "included": -115000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 115000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 115, - "node_id": 347, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -117000 - }, - { - "included": -116000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 116000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 116, - "node_id": 350, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -118000 - }, - { - "included": -117000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 117000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 117, - "node_id": 353, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -119000 - }, - { - "included": -118000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 118000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 118, - "node_id": 356, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -119000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 119000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 119, - "node_id": 359, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -121000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 120, - "node_id": 362, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -122000 - }, - { - "included": -121000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 121000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 121, - "node_id": 365, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -123000 - }, - { - "included": -122000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 122000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 122, - "node_id": 368, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -124000 - }, - { - "included": -123000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 123000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 123, - "node_id": 371, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -125000 - }, - { - "included": -124000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 124000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 124, - "node_id": 374, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -126000 - }, - { - "included": -125000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 125000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 125, - "node_id": 377, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -127000 - }, - { - "included": -126000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 126000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 126, - "node_id": 380, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -128000 - }, - { - "included": -127000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 127000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 127, - "node_id": 383, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -129000 - }, - { - "included": -128000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 128000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 128, - "node_id": 386, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -130000 - }, - { - "included": -129000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 129000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 129, - "node_id": 389, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -131000 - }, - { - "included": -130000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 130000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 130, - "node_id": 392, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -132000 - }, - { - "included": -131000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 131000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 131, - "node_id": 395, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -133000 - }, - { - "included": -132000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 132000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 132, - "node_id": 398, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -134000 - }, - { - "included": -133000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 133000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 133, - "node_id": 401, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -135000 - }, - { - "included": -134000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 134000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 134, - "node_id": 404, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -136000 - }, - { - "included": -135000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 135000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 135, - "node_id": 407, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -137000 - }, - { - "included": -136000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 136000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 136, - "node_id": 410, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -138000 - }, - { - "included": -137000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 137000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 137, - "node_id": 413, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -139000 - }, - { - "included": -138000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 138000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 138, - "node_id": 416, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -140000 - }, - { - "included": -139000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 139000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 139, - "node_id": 419, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -141000 - }, - { - "included": -140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 140000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 140, - "node_id": 422, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -142000 - }, - { - "included": -141000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 141000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 141, - "node_id": 425, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -143000 - }, - { - "included": -142000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 142000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 142, - "node_id": 428, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -144000 - }, - { - "included": -143000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 143000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 143, - "node_id": 431, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -145000 - }, - { - "included": -144000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 144000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 144, - "node_id": 434, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -146000 - }, - { - "included": -145000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 145000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 145, - "node_id": 437, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -147000 - }, - { - "included": -146000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 146000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 146, - "node_id": 440, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -148000 - }, - { - "included": -147000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 147000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 147, - "node_id": 443, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -149000 - }, - { - "included": -148000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 148000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 148, - "node_id": 446, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -150000 - }, - { - "included": -149000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 149000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 149, - "node_id": 449, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -151000 - }, - { - "included": -150000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 150000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 150, - "node_id": 452, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -152000 - }, - { - "included": -151000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 151000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 151, - "node_id": 455, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -153000 - }, - { - "included": -152000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 152000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 152, - "node_id": 458, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -154000 - }, - { - "included": -153000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 153000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 153, - "node_id": 461, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -155000 - }, - { - "included": -154000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 154000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 154, - "node_id": 464, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -156000 - }, - { - "included": -155000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 155000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 155, - "node_id": 467, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -157000 - }, - { - "included": -156000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 156000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 156, - "node_id": 470, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -158000 - }, - { - "included": -157000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 157000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 157, - "node_id": 473, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -159000 - }, - { - "included": -158000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 158000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 158, - "node_id": 476, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -160000 - }, - { - "included": -159000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 159000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 159, - "node_id": 479, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -161000 - }, - { - "included": -160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 160000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 160, - "node_id": 482, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -162000 - }, - { - "included": -161000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 161000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 161, - "node_id": 485, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -163000 - }, - { - "included": -162000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 162000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 162, - "node_id": 488, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -164000 - }, - { - "included": -163000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 163000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 163, - "node_id": 491, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -165000 - }, - { - "included": -164000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 164000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 164, - "node_id": 494, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -166000 - }, - { - "included": -165000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 165000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 165, - "node_id": 497, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -167000 - }, - { - "included": -166000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 166000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 166, - "node_id": 500, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -168000 - }, - { - "included": -167000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 167000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 167, - "node_id": 503, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -169000 - }, - { - "included": -168000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 168000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 168, - "node_id": 506, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -170000 - }, - { - "included": -169000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 169000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 169, - "node_id": 509, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -171000 - }, - { - "included": -170000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 170000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 170, - "node_id": 512, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -172000 - }, - { - "included": -171000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 171000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 171, - "node_id": 515, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -173000 - }, - { - "included": -172000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 172000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 172, - "node_id": 518, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -174000 - }, - { - "included": -173000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 173000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 173, - "node_id": 521, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -175000 - }, - { - "included": -174000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 174000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 174, - "node_id": 524, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -176000 - }, - { - "included": -175000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 175000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 175, - "node_id": 527, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -177000 - }, - { - "included": -176000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 176000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 176, - "node_id": 530, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -178000 - }, - { - "included": -177000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 177000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 177, - "node_id": 533, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -179000 - }, - { - "included": -178000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 178000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 178, - "node_id": 536, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -179000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 179000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 179, - "node_id": 539, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -181000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 180, - "node_id": 542, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -182000 - }, - { - "included": -181000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 181000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 181, - "node_id": 545, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -183000 - }, - { - "included": -182000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 182000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 182, - "node_id": 548, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -184000 - }, - { - "included": -183000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 183000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 183, - "node_id": 551, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -185000 - }, - { - "included": -184000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 184000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 184, - "node_id": 554, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -186000 - }, - { - "included": -185000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 185000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 185, - "node_id": 557, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -187000 - }, - { - "included": -186000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 186000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 186, - "node_id": 560, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -188000 - }, - { - "included": -187000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 187000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 187, - "node_id": 563, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -189000 - }, - { - "included": -188000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 188000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 188, - "node_id": 566, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -190000 - }, - { - "included": -189000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 189000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 189, - "node_id": 569, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -191000 - }, - { - "included": -190000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 190000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 190, - "node_id": 572, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -192000 - }, - { - "included": -191000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 191000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 191, - "node_id": 575, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -193000 - }, - { - "included": -192000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 192000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 192, - "node_id": 578, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -194000 - }, - { - "included": -193000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 193000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 193, - "node_id": 581, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -195000 - }, - { - "included": -194000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 194000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 194, - "node_id": 584, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -196000 - }, - { - "included": -195000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 195000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 195, - "node_id": 587, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -197000 - }, - { - "included": -196000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 196000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 196, - "node_id": 590, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -198000 - }, - { - "included": -197000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 197000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 197, - "node_id": 593, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -199000 - }, - { - "included": -198000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 198000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 198, - "node_id": 596, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -200000 - }, - { - "included": -199000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 199000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 199, - "node_id": 599, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -201000 - }, - { - "included": -200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 200000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 200, - "node_id": 602, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -202000 - }, - { - "included": -201000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 201000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 201, - "node_id": 605, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -203000 - }, - { - "included": -202000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 202000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 202, - "node_id": 608, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -204000 - }, - { - "included": -203000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 203000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 203, - "node_id": 611, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -205000 - }, - { - "included": -204000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 204000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 204, - "node_id": 614, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -206000 - }, - { - "included": -205000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 205000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 205, - "node_id": 617, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -207000 - }, - { - "included": -206000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 206000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 206, - "node_id": 620, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -208000 - }, - { - "included": -207000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 207000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 207, - "node_id": 623, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -209000 - }, - { - "included": -208000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 208000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 208, - "node_id": 626, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -210000 - }, - { - "included": -209000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 209000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 209, - "node_id": 629, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -211000 - }, - { - "included": -210000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 210000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 210, - "node_id": 632, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -212000 - }, - { - "included": -211000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 211000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 211, - "node_id": 635, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -213000 - }, - { - "included": -212000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 212000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 212, - "node_id": 638, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -214000 - }, - { - "included": -213000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 213000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 213, - "node_id": 641, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -215000 - }, - { - "included": -214000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 214000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 214, - "node_id": 644, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -216000 - }, - { - "included": -215000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 215000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 215, - "node_id": 647, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -217000 - }, - { - "included": -216000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 216000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 216, - "node_id": 650, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -218000 - }, - { - "included": -217000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 217000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 217, - "node_id": 653, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -219000 - }, - { - "included": -218000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 218000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 218, - "node_id": 656, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -220000 - }, - { - "included": -219000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 219000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 219, - "node_id": 659, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -221000 - }, - { - "included": -220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 220000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 220, - "node_id": 662, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -222000 - }, - { - "included": -221000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 221000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 221, - "node_id": 665, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -223000 - }, - { - "included": -222000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 222000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 222, - "node_id": 668, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -224000 - }, - { - "included": -223000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 223000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 223, - "node_id": 671, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -225000 - }, - { - "included": -224000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 224000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 224, - "node_id": 674, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -226000 - }, - { - "included": -225000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 225000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 225, - "node_id": 677, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -227000 - }, - { - "included": -226000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 226000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 226, - "node_id": 680, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -228000 - }, - { - "included": -227000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 227000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 227, - "node_id": 683, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -229000 - }, - { - "included": -228000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 228000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 228, - "node_id": 686, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -230000 - }, - { - "included": -229000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 229000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 229, - "node_id": 689, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -231000 - }, - { - "included": -230000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 230000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 230, - "node_id": 692, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -232000 - }, - { - "included": -231000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 231000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 231, - "node_id": 695, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -233000 - }, - { - "included": -232000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 232000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 232, - "node_id": 698, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -234000 - }, - { - "included": -233000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 233000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 233, - "node_id": 701, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -235000 - }, - { - "included": -234000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 234000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 234, - "node_id": 704, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -236000 - }, - { - "included": -235000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 235000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 235, - "node_id": 707, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -237000 - }, - { - "included": -236000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 236000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 236, - "node_id": 710, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -238000 - }, - { - "included": -237000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 237000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 237, - "node_id": 713, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -239000 - }, - { - "included": -238000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 238000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 238, - "node_id": 716, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -239000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 239000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 239, - "node_id": 719, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -241000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 240, - "node_id": 722, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -242000 - }, - { - "included": -241000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 241000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 241, - "node_id": 725, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -243000 - }, - { - "included": -242000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 242000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 242, - "node_id": 728, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -244000 - }, - { - "included": -243000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 243000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 243, - "node_id": 731, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -245000 - }, - { - "included": -244000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 244000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 244, - "node_id": 734, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -246000 - }, - { - "included": -245000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 245000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 245, - "node_id": 737, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -247000 - }, - { - "included": -246000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 246000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 246, - "node_id": 740, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -248000 - }, - { - "included": -247000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 247000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 247, - "node_id": 743, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -249000 - }, - { - "included": -248000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 248000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 248, - "node_id": 746, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -250000 - }, - { - "included": -249000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 249000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 249, - "node_id": 749, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -251000 - }, - { - "included": -250000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 250000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 250, - "node_id": 752, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -252000 - }, - { - "included": -251000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 251000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 251, - "node_id": 755, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -253000 - }, - { - "included": -252000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 252000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 252, - "node_id": 758, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -254000 - }, - { - "included": -253000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 253000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 253, - "node_id": 761, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -255000 - }, - { - "included": -254000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 254000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 254, - "node_id": 764, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -256000 - }, - { - "included": -255000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 255000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 255, - "node_id": 767, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -257000 - }, - { - "included": -256000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 256000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 256, - "node_id": 770, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -258000 - }, - { - "included": -257000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 257000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 257, - "node_id": 773, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -259000 - }, - { - "included": -258000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 258000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 258, - "node_id": 776, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -260000 - }, - { - "included": -259000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 259000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 259, - "node_id": 779, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -261000 - }, - { - "included": -260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 260000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 260, - "node_id": 782, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -262000 - }, - { - "included": -261000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 261000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 261, - "node_id": 785, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -263000 - }, - { - "included": -262000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 262000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 262, - "node_id": 788, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -264000 - }, - { - "included": -263000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 263000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 263, - "node_id": 791, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -265000 - }, - { - "included": -264000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 264000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 264, - "node_id": 794, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -266000 - }, - { - "included": -265000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 265000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 265, - "node_id": 797, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -267000 - }, - { - "included": -266000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 266000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 266, - "node_id": 800, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -268000 - }, - { - "included": -267000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 267000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 267, - "node_id": 803, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -269000 - }, - { - "included": -268000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 268000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 268, - "node_id": 806, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -270000 - }, - { - "included": -269000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 269000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 269, - "node_id": 809, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -271000 - }, - { - "included": -270000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 270000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 270, - "node_id": 812, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -272000 - }, - { - "included": -271000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 271000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 271, - "node_id": 815, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -273000 - }, - { - "included": -272000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 272000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 272, - "node_id": 818, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -274000 - }, - { - "included": -273000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 273000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 273, - "node_id": 821, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -275000 - }, - { - "included": -274000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 274000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 274, - "node_id": 824, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -276000 - }, - { - "included": -275000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 275000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 275, - "node_id": 827, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -277000 - }, - { - "included": -276000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 276000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 276, - "node_id": 830, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -278000 - }, - { - "included": -277000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 277000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 277, - "node_id": 833, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -279000 - }, - { - "included": -278000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 278000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 278, - "node_id": 836, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -280000 - }, - { - "included": -279000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 279000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 279, - "node_id": 839, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -281000 - }, - { - "included": -280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 280000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 280, - "node_id": 842, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -282000 - }, - { - "included": -281000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 281000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 281, - "node_id": 845, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -283000 - }, - { - "included": -282000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 282000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 282, - "node_id": 848, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -284000 - }, - { - "included": -283000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 283000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 283, - "node_id": 851, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -285000 - }, - { - "included": -284000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 284000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 284, - "node_id": 854, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -286000 - }, - { - "included": -285000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 285000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 285, - "node_id": 857, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -287000 - }, - { - "included": -286000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 286000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 286, - "node_id": 860, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -288000 - }, - { - "included": -287000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 287000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 287, - "node_id": 863, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -289000 - }, - { - "included": -288000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 288000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 288, - "node_id": 866, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -290000 - }, - { - "included": -289000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 289000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 289, - "node_id": 869, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -291000 - }, - { - "included": -290000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 290000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 290, - "node_id": 872, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -292000 - }, - { - "included": -291000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 291000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 291, - "node_id": 875, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -293000 - }, - { - "included": -292000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 292000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 292, - "node_id": 878, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -294000 - }, - { - "included": -293000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 293000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 293, - "node_id": 881, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -295000 - }, - { - "included": -294000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 294000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 294, - "node_id": 884, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -296000 - }, - { - "included": -295000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 295000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 295, - "node_id": 887, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -297000 - }, - { - "included": -296000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 296000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 296, - "node_id": 890, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -298000 - }, - { - "included": -297000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 297000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 297, - "node_id": 893, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -299000 - }, - { - "included": -298000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 298000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 298, - "node_id": 896, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -299000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 299000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 300, - "installed_position": 299, - "node_id": 899, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - } - ], - "proven_optimal": true, + "error": "plan selection: no valid candidate: [Rejection { id: \"workload\", cause: Infeasible, reason: \"no plan gives every query output a candidate whose every input has an admissible producer and meets its query's accuracy target at the root, constraint (K) (the selection MILP is infeasible)\" }]", "queries": [ "avg by (region) (quantile_over_time(0.95, data[300s]))" ], - "search_status": "optimal", - "selected": { - "accepted": [ - { - "accepted_metric": "relative", - "accepted_regardless_of_guarantee": false, - "guarantee_check_rejection": null, - "sketches": [ - "DDSketch" - ], - "summary": "metric not set; accepted relative (DDSketch)", - "target_metric": null - } - ], - "cost": { - "cost_per_second": 0.0000190434545346, - "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.00387, - "per_node": { - "0": { - "cost_per_second": 6.52152e-9, - "cpu_core_seconds_per_second": 0.00058, - "detail": "scan 100000 samples; x 1.0000/s", - "multiplier": 1, - "operator": "Scan", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "1": { - "cost_per_second": 0.0000190019900264, - "cpu_core_seconds_per_second": 0.0002, - "detail": "build DDSketch in 300 tumbling windows of 1000 ms for 10000 groups: 100000 rows x (1 + depth 1); x 1.0000/s; keeps 16518880000 bytes", - "multiplier": 1, - "operator": "SummaryTumblingWindowChain", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "10": { - "cost_per_second": 1.12440085298e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "operator: pass 10000 rows; x 1.0000/s; holds 24 bytes for 3.1 ms", - "multiplier": 1, - "operator": "BinaryOp", - "price_source": "analytical", - "timing": "query_time" - }, - "11": { - "cost_per_second": 1.12440085298e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "operator: pass 10000 rows; x 1.0000/s; holds 24 bytes for 3.1 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - }, - "2": { - "cost_per_second": 3.39270471774e-8, - "cpu_core_seconds_per_second": 0.003, - "detail": "merge 3000000 states into 10000; x 1.0000/s; holds 54880000 bytes for 3.1 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", - "timing": "query_time" - }, - "3": { - "cost_per_second": 1.1244e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "estimate 10000 groups x 1; x 1.0000/s", - "multiplier": 1, - "operator": "SummaryEstimate", - "price_source": "analytical", - "timing": "query_time" - }, - "4": { - "cost_per_second": 1.12440170595e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "operator: pass 10000 rows; x 1.0000/s; holds 48 bytes for 3.1 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - }, - "5": { - "cost_per_second": 1.1443027732e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "build exact Sum accumulator into 10000 states: 10000 rows x depth 1; x 1.0000/s; holds 560000 bytes for 3.1 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "6": { - "cost_per_second": 1.1244e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "finalize 10000 accumulators; x 1.0000/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", - "price_source": "analytical", - "timing": "query_time" - }, - "7": { - "cost_per_second": 1.1443027732e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "build exact Count accumulator into 10000 states: 10000 rows x depth 1; x 1.0000/s; holds 560000 bytes for 3.1 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "8": { - "cost_per_second": 1.1244e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "finalize 10000 accumulators; x 1.0000/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", - "price_source": "analytical", - "timing": "query_time" - }, - "9": { - "cost_per_second": 1.12440085298e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "operator: pass 10000 rows; x 1.0000/s; holds 24 bytes for 3.1 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - } - }, - "source": "analytical-cost-v2 (illustrative statistics)", - "usage": { - "average_memory_bytes": 16519053040.4, - "cpu_ops_per_second": 3390000.0, - "disk_bytes": 0, - "latency_per_query": [ - { - "compaction_ms": 0.0, - "query_ms": 3.09 - } - ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 16574880168, - "scanned_bytes_per_second": 4800000.0 - } - }, - "dag": { - "edges": [ - { - "consumer": 1, - "data_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 0, - "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" - }, - { - "consumer": 2, - "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 1, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 3, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 2, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 4, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 3, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 5, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 6, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 5, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 7, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 8, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Count", - "Count" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 7, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 9, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "int64" - }, - "name": "count", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 8, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 10, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 6, - "role": "Left", - "window": "NotApplicable" - }, - { - "consumer": 10, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "col_1", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 9, - "role": "Right", - "window": "NotApplicable" - }, - { - "consumer": 11, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 10, - "role": "Input", - "window": "NotApplicable" - } - ], - "nodes": [ - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 0, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "payload": { - "NonASAP": { - "Scan": { - "predicates": [], - "schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "source": { - "TimeSeries": { - "metric": "data" - } - } - } - } - } - }, - { - "guarantee": null, - "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 0, - "family": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 300, - "tumbling_window_width_ms": 1000 - } - } - } - }, - { - "guarantee": null, - "id": 2, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.95 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 3, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryEstimate": { - "query": { - "Quantile": { - "q": 0.95 - } - }, - "summary_input": 2 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.95 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 4, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 3, - "cols": [ - { - "alias": "ts", - "expr": { - "Column": 0 - } - }, - { - "alias": "value", - "expr": { - "Column": 1 - } - }, - { - "alias": "region", - "expr": { - "Column": 2 - } - }, - { - "alias": "$promql_series_identity", - "expr": { - "Column": 3 - } - } - ], - "qualifier": null - } - } - } - }, - { - "guarantee": null, - "id": 5, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryAgg": { - "child": 4, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": { - "Reduce": [ - 2 - ] - } - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "unavailable_statistic", - "statistic": "input_row_count" - }, - { - "kind": "unavailable_statistic", - "statistic": "values_non_negative[data]" - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.95 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "input_index": 0, - "kind": "child_guarantee" - }, - { - "kind": "exact", - "reason": "exact aggregation" - }, - { - "kind": "composition_step", - "operator": { - "op": "exact_sum" - }, - "rule": "exact_sum_relative" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "max", - "terms": [ - { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - } - ] - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "count": { - "op": "unknown", - "statistic": "input_row_count" - }, - "inner": { - "op": "union_bound", - "terms": [ - { - "op": "zero" - } - ] - }, - "op": "scaled" - } - } - }, - "id": 6, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 5 - } - } - } - }, - { - "guarantee": null, - "id": 7, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Count", - "Count" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryAgg": { - "child": 4, - "family": { - "ExactAggregate": [ - "Count", - "Count" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": { - "Reduce": [ - 2 - ] - } - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "count of rows" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 8, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "int64" - }, - "name": "count", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 7 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 9, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "col_1", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 8, - "cols": [ - { - "alias": null, - "expr": { - "Column": 0 - } - }, - { - "alias": null, - "expr": { - "Cast": { - "expr": { - "Column": 1 - }, - "to": "float64", - "try_cast": false - } - } - } - ], - "qualifier": null - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "unavailable_statistic", - "statistic": "input_row_count" - }, - { - "kind": "unavailable_statistic", - "statistic": "values_non_negative[data]" - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.95 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "input_index": 0, - "kind": "child_guarantee" - }, - { - "kind": "exact", - "reason": "exact aggregation" - }, - { - "kind": "composition_step", - "operator": { - "op": "exact_sum" - }, - "rule": "exact_sum_relative" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "max", - "terms": [ - { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - } - ] - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "count": { - "op": "unknown", - "statistic": "input_row_count" - }, - "inner": { - "op": "union_bound", - "terms": [ - { - "op": "zero" - } - ] - }, - "op": "scaled" - } - } - }, - "id": 10, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "BinaryOp": { - "lhs": 6, - "operator": { - "checked_finite_division": false, - "checked_relative_division": false, - "kind": { - "Arithmetic": "Div" - }, - "vector_match": null - }, - "return_bool": false, - "rhs": 9 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "unavailable_statistic", - "statistic": "input_row_count" - }, - { - "kind": "unavailable_statistic", - "statistic": "values_non_negative[data]" - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.95 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "input_index": 0, - "kind": "child_guarantee" - }, - { - "kind": "exact", - "reason": "exact aggregation" - }, - { - "kind": "composition_step", - "operator": { - "op": "exact_sum" - }, - "rule": "exact_sum_relative" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "max", - "terms": [ - { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - } - ] - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "count": { - "op": "unknown", - "statistic": "input_row_count" - }, - "inner": { - "op": "union_bound", - "terms": [ - { - "op": "zero" - } - ] - }, - "op": "scaled" - } - } - }, - "id": 11, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "avg", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 10, - "cols": [ - { - "alias": "region", - "expr": { - "Column": 0 - } - }, - { - "alias": "avg", - "expr": { - "Column": 1 - } - } - ], - "qualifier": null - } - } - } - } - ], - "roots": [ - 11 - ], - "scalar_roots": [] - }, - "display_name": "Q1 Sum acc + DDSketch ×300 tumbling windows + Count acc · ingestion time: DDSketch for Q1, 300 × 1s tumbling windows" - }, - "tumbling_window_retention_ms": { - "1": 300000 - } + "selected": null } diff --git a/crates/devtools/tests/sketch_plan_snapshots/random-mixed-seed-862-w01-q3-q8-mvp.json b/crates/devtools/tests/sketch_plan_snapshots/random-mixed-seed-862-w01-q3-q8-mvp.json index 95d124a1c..990307fd7 100644 --- a/crates/devtools/tests/sketch_plan_snapshots/random-mixed-seed-862-w01-q3-q8-mvp.json +++ b/crates/devtools/tests/sketch_plan_snapshots/random-mixed-seed-862-w01-q3-q8-mvp.json @@ -1,8364 +1,9 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2000 - }, - { - "included": -1000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3000 - }, - { - "included": -2000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -4000 - }, - { - "included": -3000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -5000 - }, - { - "included": -4000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 4000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -6000 - }, - { - "included": -5000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 5000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 5, - "node_id": 17, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -7000 - }, - { - "included": -6000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 6000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 6, - "node_id": 20, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -8000 - }, - { - "included": -7000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 7000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 7, - "node_id": 23, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -9000 - }, - { - "included": -8000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 8000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 8, - "node_id": 26, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -10000 - }, - { - "included": -9000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 9000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 9, - "node_id": 29, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -11000 - }, - { - "included": -10000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 10000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 10, - "node_id": 32, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -12000 - }, - { - "included": -11000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 11000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 11, - "node_id": 35, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -13000 - }, - { - "included": -12000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 12000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 12, - "node_id": 38, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -14000 - }, - { - "included": -13000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 13000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 13, - "node_id": 41, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -15000 - }, - { - "included": -14000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 14000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 14, - "node_id": 44, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -16000 - }, - { - "included": -15000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 15000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 15, - "node_id": 47, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -17000 - }, - { - "included": -16000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 16000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 16, - "node_id": 50, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -18000 - }, - { - "included": -17000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 17000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 17, - "node_id": 53, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -19000 - }, - { - "included": -18000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 18000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 18, - "node_id": 56, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -20000 - }, - { - "included": -19000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 19000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 19, - "node_id": 59, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -21000 - }, - { - "included": -20000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 20000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 20, - "node_id": 62, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -22000 - }, - { - "included": -21000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 21, - "node_id": 65, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -23000 - }, - { - "included": -22000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 22, - "node_id": 68, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -24000 - }, - { - "included": -23000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 23, - "node_id": 71, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -25000 - }, - { - "included": -24000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 24, - "node_id": 74, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -26000 - }, - { - "included": -25000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 25000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 25, - "node_id": 77, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -27000 - }, - { - "included": -26000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 26000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 26, - "node_id": 80, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -28000 - }, - { - "included": -27000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 27000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 27, - "node_id": 83, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -29000 - }, - { - "included": -28000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 28000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 28, - "node_id": 86, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -30000 - }, - { - "included": -29000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 29000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 29, - "node_id": 89, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -31000 - }, - { - "included": -30000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 30000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 30, - "node_id": 92, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -32000 - }, - { - "included": -31000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 31000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 31, - "node_id": 95, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -33000 - }, - { - "included": -32000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 32000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 32, - "node_id": 98, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -34000 - }, - { - "included": -33000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 33000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 33, - "node_id": 101, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -35000 - }, - { - "included": -34000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 34000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 34, - "node_id": 104, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -36000 - }, - { - "included": -35000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 35000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 35, - "node_id": 107, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -37000 - }, - { - "included": -36000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 36000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 36, - "node_id": 110, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -38000 - }, - { - "included": -37000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 37000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 37, - "node_id": 113, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -39000 - }, - { - "included": -38000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 38000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 38, - "node_id": 116, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -40000 - }, - { - "included": -39000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 39000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 39, - "node_id": 119, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -41000 - }, - { - "included": -40000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 40000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 40, - "node_id": 122, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -42000 - }, - { - "included": -41000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 41000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 41, - "node_id": 125, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -43000 - }, - { - "included": -42000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 42000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 42, - "node_id": 128, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -44000 - }, - { - "included": -43000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 43000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 43, - "node_id": 131, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -45000 - }, - { - "included": -44000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 44000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 44, - "node_id": 134, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -46000 - }, - { - "included": -45000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 45000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 45, - "node_id": 137, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -47000 - }, - { - "included": -46000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 46000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 46, - "node_id": 140, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -48000 - }, - { - "included": -47000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 47000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 47, - "node_id": 143, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -49000 - }, - { - "included": -48000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 48000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 48, - "node_id": 146, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -50000 - }, - { - "included": -49000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 49000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 49, - "node_id": 149, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -51000 - }, - { - "included": -50000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 50000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 50, - "node_id": 152, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -52000 - }, - { - "included": -51000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 51000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 51, - "node_id": 155, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -53000 - }, - { - "included": -52000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 52000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 52, - "node_id": 158, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -54000 - }, - { - "included": -53000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 53000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 53, - "node_id": 161, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -55000 - }, - { - "included": -54000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 54000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 54, - "node_id": 164, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -56000 - }, - { - "included": -55000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 55000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 55, - "node_id": 167, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -57000 - }, - { - "included": -56000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 56000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 56, - "node_id": 170, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -58000 - }, - { - "included": -57000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 57000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 57, - "node_id": 173, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -59000 - }, - { - "included": -58000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 58000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 58, - "node_id": 176, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": -59000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 59000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 59, - "node_id": 179, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -61000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 60, - "node_id": 182, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -62000 - }, - { - "included": -61000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 61000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 61, - "node_id": 185, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -63000 - }, - { - "included": -62000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 62000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 62, - "node_id": 188, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -64000 - }, - { - "included": -63000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 63000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 63, - "node_id": 191, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -65000 - }, - { - "included": -64000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 64000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 64, - "node_id": 194, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -66000 - }, - { - "included": -65000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 65000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 65, - "node_id": 197, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -67000 - }, - { - "included": -66000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 66000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 66, - "node_id": 200, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -68000 - }, - { - "included": -67000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 67000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 67, - "node_id": 203, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -69000 - }, - { - "included": -68000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 68000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 68, - "node_id": 206, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -70000 - }, - { - "included": -69000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 69000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 69, - "node_id": 209, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -71000 - }, - { - "included": -70000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 70000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 70, - "node_id": 212, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -72000 - }, - { - "included": -71000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 71000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 71, - "node_id": 215, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -73000 - }, - { - "included": -72000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 72000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 72, - "node_id": 218, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -74000 - }, - { - "included": -73000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 73000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 73, - "node_id": 221, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -75000 - }, - { - "included": -74000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 74000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 74, - "node_id": 224, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -76000 - }, - { - "included": -75000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 75000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 75, - "node_id": 227, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -77000 - }, - { - "included": -76000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 76000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 76, - "node_id": 230, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -78000 - }, - { - "included": -77000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 77000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 77, - "node_id": 233, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -79000 - }, - { - "included": -78000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 78000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 78, - "node_id": 236, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -80000 - }, - { - "included": -79000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 79000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 79, - "node_id": 239, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -81000 - }, - { - "included": -80000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 80000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 80, - "node_id": 242, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -82000 - }, - { - "included": -81000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 81000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 81, - "node_id": 245, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -83000 - }, - { - "included": -82000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 82000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 82, - "node_id": 248, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -84000 - }, - { - "included": -83000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 83000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 83, - "node_id": 251, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -85000 - }, - { - "included": -84000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 84000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 84, - "node_id": 254, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -86000 - }, - { - "included": -85000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 85000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 85, - "node_id": 257, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -87000 - }, - { - "included": -86000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 86000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 86, - "node_id": 260, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -88000 - }, - { - "included": -87000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 87000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 87, - "node_id": 263, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -89000 - }, - { - "included": -88000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 88000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 88, - "node_id": 266, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -90000 - }, - { - "included": -89000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 89000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 89, - "node_id": 269, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -91000 - }, - { - "included": -90000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 90000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 90, - "node_id": 272, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -92000 - }, - { - "included": -91000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 91000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 91, - "node_id": 275, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -93000 - }, - { - "included": -92000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 92000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 92, - "node_id": 278, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -94000 - }, - { - "included": -93000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 93000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 93, - "node_id": 281, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -95000 - }, - { - "included": -94000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 94000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 94, - "node_id": 284, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -96000 - }, - { - "included": -95000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 95000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 95, - "node_id": 287, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -97000 - }, - { - "included": -96000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 96000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 96, - "node_id": 290, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -98000 - }, - { - "included": -97000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 97000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 97, - "node_id": 293, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -99000 - }, - { - "included": -98000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 98000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 98, - "node_id": 296, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -100000 - }, - { - "included": -99000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 99000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 99, - "node_id": 299, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -30000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 0, - "node_id": 312, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": -30000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 30000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 1, - "node_id": 315, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -90000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 2, - "node_id": 318, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -90000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 90000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 3, - "node_id": 321, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -150000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 4, - "node_id": 324, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -150000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 150000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 5, - "node_id": 327, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -210000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 6, - "node_id": 330, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -210000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 210000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 7, - "node_id": 333, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -270000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 8, - "node_id": 336, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -270000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 270000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 9, - "node_id": 339, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -330000 - }, - { - "included": -300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 300000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 10, - "node_id": 342, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -360000 - }, - { - "included": -330000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 330000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 11, - "node_id": 345, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -390000 - }, - { - "included": -360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 360000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 12, - "node_id": 348, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -420000 - }, - { - "included": -390000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 390000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 13, - "node_id": 351, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -450000 - }, - { - "included": -420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 420000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 14, - "node_id": 354, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -480000 - }, - { - "included": -450000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 450000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 15, - "node_id": 357, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -510000 - }, - { - "included": -480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 480000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 16, - "node_id": 360, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -540000 - }, - { - "included": -510000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 510000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 17, - "node_id": 363, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -570000 - }, - { - "included": -540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 540000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 18, - "node_id": 366, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -600000 - }, - { - "included": -570000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 570000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 19, - "node_id": 369, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -630000 - }, - { - "included": -600000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 600000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 20, - "node_id": 372, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -660000 - }, - { - "included": -630000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 630000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 21, - "node_id": 375, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -690000 - }, - { - "included": -660000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 660000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 22, - "node_id": 378, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -720000 - }, - { - "included": -690000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 690000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 23, - "node_id": 381, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -750000 - }, - { - "included": -720000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 720000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 24, - "node_id": 384, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -780000 - }, - { - "included": -750000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 750000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 25, - "node_id": 387, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -810000 - }, - { - "included": -780000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 780000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 26, - "node_id": 390, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -840000 - }, - { - "included": -810000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 810000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 27, - "node_id": 393, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -870000 - }, - { - "included": -840000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 840000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 28, - "node_id": 396, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -900000 - }, - { - "included": -870000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 870000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 29, - "node_id": 399, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -930000 - }, - { - "included": -900000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 900000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 30, - "node_id": 402, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -960000 - }, - { - "included": -930000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 930000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 31, - "node_id": 405, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -990000 - }, - { - "included": -960000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 960000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 32, - "node_id": 408, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1020000 - }, - { - "included": -990000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 990000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 33, - "node_id": 411, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1050000 - }, - { - "included": -1020000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1020000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 34, - "node_id": 414, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1080000 - }, - { - "included": -1050000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1050000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 35, - "node_id": 417, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1110000 - }, - { - "included": -1080000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1080000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 36, - "node_id": 420, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1140000 - }, - { - "included": -1110000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1110000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 37, - "node_id": 423, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1170000 - }, - { - "included": -1140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1140000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 38, - "node_id": 426, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "6525fb249a1d74cec1417d0b3fc3ae5a", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1200000 - }, - { - "included": -1170000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1170000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 30000 - } - ] - }, - "installed_count": 40, - "installed_position": 39, - "node_id": 429, - "refresh": "at_ingestion", - "retention_ms": 1200000, - "stage2_node_id": 13 - } - ], - "proven_optimal": true, + "error": "plan selection: no valid candidate: [Rejection { id: \"workload\", cause: Infeasible, reason: \"no plan gives every query output a candidate whose every input has an admissible producer and meets its query's accuracy target at the root, constraint (K) (the selection MILP is infeasible); executions left out because they could not be costed: one of its inputs has no producer that can be costed\" }]", "queries": [ "avg by (region) (quantile_over_time(0.95, data[100s]))", "topk by (region) (4, rate(data_total[20m]))" ], - "search_status": "optimal", - "selected": { - "accepted": [ - { - "accepted_metric": "relative", - "accepted_regardless_of_guarantee": false, - "guarantee_check_rejection": null, - "sketches": [ - "DDSketch" - ], - "summary": "metric not set; accepted relative (DDSketch)", - "target_metric": null - }, - { - "accepted_metric": null, - "accepted_regardless_of_guarantee": false, - "guarantee_check_rejection": null, - "sketches": [], - "summary": "metric not set; accepted exact", - "target_metric": null - } - ], - "cost": { - "cost_per_second": 6.43176839059e-6, - "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.00266466666667, - "per_node": { - "0": { - "cost_per_second": 6.52152e-9, - "cpu_core_seconds_per_second": 0.00058, - "detail": "scan 100000 samples; x 1.0000/s", - "multiplier": 1, - "operator": "Scan", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "1": { - "cost_per_second": 6.3775772514e-6, - "cpu_core_seconds_per_second": 0.0002, - "detail": "build DDSketch in 100 tumbling windows of 1000 ms for 10000 groups: 100000 rows x (1 + depth 1); x 1.0000/s; keeps 5542880000 bytes", - "multiplier": 1, - "operator": "SummaryTumblingWindowChain", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "10": { - "cost_per_second": 1.12440030089e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "operator: pass 10000 rows; x 1.0000/s; holds 24 bytes for 1.1 ms", - "multiplier": 1, - "operator": "BinaryOp", - "price_source": "analytical", - "timing": "query_time" - }, - "11": { - "cost_per_second": 1.12440030089e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "operator: pass 10000 rows; x 1.0000/s; holds 24 bytes for 1.1 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - }, - "12": { - "cost_per_second": 6.52152e-9, - "cpu_core_seconds_per_second": 0.00058, - "detail": "scan 100000 samples; x 1.0000/s", - "multiplier": 1, - "operator": "Scan", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "13": { - "cost_per_second": 2.86570103968e-8, - "cpu_core_seconds_per_second": 0.0002, - "detail": "build exact Rate accumulator in 40 tumbling windows of 30000 ms for 10000 groups: 100000 rows x (1 + depth 1); x 1.0000/s; keeps 22960000 bytes", - "multiplier": 1, - "operator": "SummaryTumblingWindowChain", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "14": { - "cost_per_second": 1.49929446839e-10, - "cpu_core_seconds_per_second": 0.0000133333333333, - "detail": "merge 400000 states into 10000; x 0.0333/s; holds 560000 bytes for 0.4 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", - "timing": "query_time" - }, - "15": { - "cost_per_second": 3.748e-12, - "cpu_core_seconds_per_second": 3.33333333333e-7, - "detail": "finalize 10000 accumulators; x 0.0333/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", - "price_source": "analytical", - "timing": "query_time" - }, - "16": { - "cost_per_second": 3.74800080973e-12, - "cpu_core_seconds_per_second": 3.33333333333e-7, - "detail": "sort 10000 rows in 10000 partitions; x 0.0333/s; holds 48 bytes for 0.4 ms", - "multiplier": 1, - "operator": "Sort", - "price_source": "analytical", - "timing": "query_time" - }, - "17": { - "cost_per_second": 3.74800080973e-12, - "cpu_core_seconds_per_second": 3.33333333333e-7, - "detail": "limit to 10000 rows; x 0.0333/s; holds 48 bytes for 0.4 ms", - "multiplier": 1, - "operator": "Limit", - "price_source": "analytical", - "timing": "query_time" - }, - "18": { - "cost_per_second": 3.74800080973e-12, - "cpu_core_seconds_per_second": 3.33333333333e-7, - "detail": "operator: pass 10000 rows; x 0.0333/s; holds 48 bytes for 0.4 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - }, - "2": { - "cost_per_second": 1.13128030496e-8, - "cpu_core_seconds_per_second": 0.001, - "detail": "merge 1000000 states into 10000; x 1.0000/s; holds 54880000 bytes for 1.1 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", - "timing": "query_time" - }, - "3": { - "cost_per_second": 1.1244e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "estimate 10000 groups x 1; x 1.0000/s", - "multiplier": 1, - "operator": "SummaryEstimate", - "price_source": "analytical", - "timing": "query_time" - }, - "4": { - "cost_per_second": 1.12440060178e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "operator: pass 10000 rows; x 1.0000/s; holds 48 bytes for 1.1 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - }, - "5": { - "cost_per_second": 1.13142071935e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "build exact Sum accumulator into 10000 states: 10000 rows x depth 1; x 1.0000/s; holds 560000 bytes for 1.1 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "6": { - "cost_per_second": 1.1244e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "finalize 10000 accumulators; x 1.0000/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", - "price_source": "analytical", - "timing": "query_time" - }, - "7": { - "cost_per_second": 1.13142071935e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "build exact Count accumulator into 10000 states: 10000 rows x depth 1; x 1.0000/s; holds 560000 bytes for 1.1 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "8": { - "cost_per_second": 1.1244e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "finalize 10000 accumulators; x 1.0000/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", - "price_source": "analytical", - "timing": "query_time" - }, - "9": { - "cost_per_second": 1.12440030089e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "operator: pass 10000 rows; x 1.0000/s; holds 24 bytes for 1.1 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - } - }, - "source": "analytical-cost-v2 (illustrative statistics)", - "usage": { - "average_memory_bytes": 5565901048.35, - "cpu_ops_per_second": 1704666.66667, - "disk_bytes": 0, - "latency_per_query": [ - { - "compaction_ms": 0.0, - "query_ms": 1.09 - }, - { - "compaction_ms": 0.0, - "query_ms": 0.44 - } - ], - "peak_cpu_cores": 3, - "peak_memory_bytes": 5622400360, - "scanned_bytes_per_second": 9600000.0 - } - }, - "dag": { - "edges": [ - { - "consumer": 1, - "data_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 0, - "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" - }, - { - "consumer": 2, - "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 1, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 3, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 2, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 4, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 3, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 5, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 6, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 5, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 7, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 8, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Count", - "Count" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 7, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 9, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "int64" - }, - "name": "count", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 8, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 10, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 6, - "role": "Left", - "window": "NotApplicable" - }, - { - "consumer": 10, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "col_1", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 9, - "role": "Right", - "window": "NotApplicable" - }, - { - "consumer": 11, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 10, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 13, - "data_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 12, - "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" - }, - { - "consumer": 14, - "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 13, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 15, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 14, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 16, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 15, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 17, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 16, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 18, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 17, - "role": "Input", - "window": "NotApplicable" - } - ], - "nodes": [ - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 0, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "payload": { - "NonASAP": { - "Scan": { - "predicates": [], - "schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "source": { - "TimeSeries": { - "metric": "data" - } - } - } - } - } - }, - { - "guarantee": null, - "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 0, - "family": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 100, - "tumbling_window_width_ms": 1000 - } - } - } - }, - { - "guarantee": null, - "id": 2, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.95 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 3, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryEstimate": { - "query": { - "Quantile": { - "q": 0.95 - } - }, - "summary_input": 2 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.95 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 4, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 3, - "cols": [ - { - "alias": "ts", - "expr": { - "Column": 0 - } - }, - { - "alias": "value", - "expr": { - "Column": 1 - } - }, - { - "alias": "region", - "expr": { - "Column": 2 - } - }, - { - "alias": "$promql_series_identity", - "expr": { - "Column": 3 - } - } - ], - "qualifier": null - } - } - } - }, - { - "guarantee": null, - "id": 5, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryAgg": { - "child": 4, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": { - "Reduce": [ - 2 - ] - } - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "unavailable_statistic", - "statistic": "input_row_count" - }, - { - "kind": "unavailable_statistic", - "statistic": "values_non_negative[data]" - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.95 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "input_index": 0, - "kind": "child_guarantee" - }, - { - "kind": "exact", - "reason": "exact aggregation" - }, - { - "kind": "composition_step", - "operator": { - "op": "exact_sum" - }, - "rule": "exact_sum_relative" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "max", - "terms": [ - { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - } - ] - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "count": { - "op": "unknown", - "statistic": "input_row_count" - }, - "inner": { - "op": "union_bound", - "terms": [ - { - "op": "zero" - } - ] - }, - "op": "scaled" - } - } - }, - "id": 6, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 5 - } - } - } - }, - { - "guarantee": null, - "id": 7, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Count", - "Count" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryAgg": { - "child": 4, - "family": { - "ExactAggregate": [ - "Count", - "Count" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": { - "Reduce": [ - 2 - ] - } - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "count of rows" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 8, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "int64" - }, - "name": "count", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 7 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 9, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "col_1", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 8, - "cols": [ - { - "alias": null, - "expr": { - "Column": 0 - } - }, - { - "alias": null, - "expr": { - "Cast": { - "expr": { - "Column": 1 - }, - "to": "float64", - "try_cast": false - } - } - } - ], - "qualifier": null - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "unavailable_statistic", - "statistic": "input_row_count" - }, - { - "kind": "unavailable_statistic", - "statistic": "values_non_negative[data]" - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.95 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "input_index": 0, - "kind": "child_guarantee" - }, - { - "kind": "exact", - "reason": "exact aggregation" - }, - { - "kind": "composition_step", - "operator": { - "op": "exact_sum" - }, - "rule": "exact_sum_relative" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "max", - "terms": [ - { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - } - ] - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "count": { - "op": "unknown", - "statistic": "input_row_count" - }, - "inner": { - "op": "union_bound", - "terms": [ - { - "op": "zero" - } - ] - }, - "op": "scaled" - } - } - }, - "id": 10, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "BinaryOp": { - "lhs": 6, - "operator": { - "checked_finite_division": false, - "checked_relative_division": false, - "kind": { - "Arithmetic": "Div" - }, - "vector_match": null - }, - "return_bool": false, - "rhs": 9 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "unavailable_statistic", - "statistic": "input_row_count" - }, - { - "kind": "unavailable_statistic", - "statistic": "values_non_negative[data]" - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.95 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "input_index": 0, - "kind": "child_guarantee" - }, - { - "kind": "exact", - "reason": "exact aggregation" - }, - { - "kind": "composition_step", - "operator": { - "op": "exact_sum" - }, - "rule": "exact_sum_relative" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "max", - "terms": [ - { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - } - ] - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "count": { - "op": "unknown", - "statistic": "input_row_count" - }, - "inner": { - "op": "union_bound", - "terms": [ - { - "op": "zero" - } - ] - }, - "op": "scaled" - } - } - }, - "id": 11, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "avg", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 10, - "cols": [ - { - "alias": "region", - "expr": { - "Column": 0 - } - }, - { - "alias": "avg", - "expr": { - "Column": 1 - } - } - ], - "qualifier": null - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 12, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "payload": { - "NonASAP": { - "Scan": { - "predicates": [], - "schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "source": { - "TimeSeries": { - "metric": "data_total" - } - } - } - } - } - }, - { - "guarantee": null, - "id": 13, - "lifetime": { - "AcrossEvaluations": "Memory" - }, - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 12, - "family": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 40, - "tumbling_window_width_ms": 30000 - } - } - } - }, - { - "guarantee": null, - "id": 14, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 13 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 15, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 14 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 16, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Sort": { - "child": 15, - "keys": [ - { - "ascending": false, - "expr": { - "Column": 1 - }, - "nulls_first": false - } - ], - "partition_by": [ - 2 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 17, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Limit": { - "child": 16, - "n": 4, - "offset": 0, - "partition_by": [ - 2 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 18, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "topk_4", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 17, - "cols": [ - { - "alias": "region", - "expr": { - "Column": 2 - } - }, - { - "alias": "topk_4", - "expr": { - "Column": 1 - } - }, - { - "alias": "$promql_series_identity", - "expr": { - "Column": 3 - } - } - ], - "qualifier": null - } - } - } - } - ], - "roots": [ - 11, - 18 - ], - "scalar_roots": [] - }, - "display_name": "Q1 Sum acc + DDSketch ×100 tumbling windows + Count acc · Q2 Rate acc ×40 tumbling windows · ingestion time: DDSketch for Q1, 100 × 1s tumbling windows, Rate acc for Q2, 40 × 30s tumbling windows" - }, - "tumbling_window_retention_ms": { - "1": 100000, - "13": 1200000 - } + "selected": null } diff --git a/crates/devtools/tests/sketch_plan_snapshots/random-mixed-seed-862-w02-q2-q7-mvp.json b/crates/devtools/tests/sketch_plan_snapshots/random-mixed-seed-862-w02-q2-q7-mvp.json index 94d046d27..539f4f5e2 100644 --- a/crates/devtools/tests/sketch_plan_snapshots/random-mixed-seed-862-w02-q2-q7-mvp.json +++ b/crates/devtools/tests/sketch_plan_snapshots/random-mixed-seed-862-w02-q2-q7-mvp.json @@ -1,9124 +1,9 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2000 - }, - { - "included": -1000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3000 - }, - { - "included": -2000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -4000 - }, - { - "included": -3000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -5000 - }, - { - "included": -4000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 4000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -6000 - }, - { - "included": -5000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 5000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 5, - "node_id": 17, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -7000 - }, - { - "included": -6000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 6000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 6, - "node_id": 20, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -8000 - }, - { - "included": -7000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 7000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 7, - "node_id": 23, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -9000 - }, - { - "included": -8000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 8000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 8, - "node_id": 26, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -10000 - }, - { - "included": -9000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 9000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 9, - "node_id": 29, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -11000 - }, - { - "included": -10000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 10000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 10, - "node_id": 32, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -12000 - }, - { - "included": -11000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 11000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 11, - "node_id": 35, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -13000 - }, - { - "included": -12000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 12000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 12, - "node_id": 38, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -14000 - }, - { - "included": -13000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 13000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 13, - "node_id": 41, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -15000 - }, - { - "included": -14000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 14000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 14, - "node_id": 44, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -16000 - }, - { - "included": -15000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 15000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 15, - "node_id": 47, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -17000 - }, - { - "included": -16000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 16000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 16, - "node_id": 50, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -18000 - }, - { - "included": -17000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 17000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 17, - "node_id": 53, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -19000 - }, - { - "included": -18000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 18000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 18, - "node_id": 56, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -20000 - }, - { - "included": -19000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 19000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 19, - "node_id": 59, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -21000 - }, - { - "included": -20000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 20000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 20, - "node_id": 62, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -22000 - }, - { - "included": -21000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 21000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 21, - "node_id": 65, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -23000 - }, - { - "included": -22000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 22000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 22, - "node_id": 68, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -24000 - }, - { - "included": -23000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 23000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 23, - "node_id": 71, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -25000 - }, - { - "included": -24000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 24000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 24, - "node_id": 74, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -26000 - }, - { - "included": -25000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 25000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 25, - "node_id": 77, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -27000 - }, - { - "included": -26000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 26000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 26, - "node_id": 80, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -28000 - }, - { - "included": -27000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 27000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 27, - "node_id": 83, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -29000 - }, - { - "included": -28000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 28000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 28, - "node_id": 86, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -30000 - }, - { - "included": -29000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 29000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 29, - "node_id": 89, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -31000 - }, - { - "included": -30000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 30000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 30, - "node_id": 92, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -32000 - }, - { - "included": -31000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 31000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 31, - "node_id": 95, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -33000 - }, - { - "included": -32000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 32000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 32, - "node_id": 98, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -34000 - }, - { - "included": -33000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 33000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 33, - "node_id": 101, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -35000 - }, - { - "included": -34000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 34000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 34, - "node_id": 104, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -36000 - }, - { - "included": -35000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 35000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 35, - "node_id": 107, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -37000 - }, - { - "included": -36000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 36000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 36, - "node_id": 110, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -38000 - }, - { - "included": -37000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 37000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 37, - "node_id": 113, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -39000 - }, - { - "included": -38000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 38000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 38, - "node_id": 116, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -40000 - }, - { - "included": -39000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 39000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 39, - "node_id": 119, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -41000 - }, - { - "included": -40000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 40000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 40, - "node_id": 122, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -42000 - }, - { - "included": -41000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 41000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 41, - "node_id": 125, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -43000 - }, - { - "included": -42000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 42000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 42, - "node_id": 128, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -44000 - }, - { - "included": -43000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 43000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 43, - "node_id": 131, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -45000 - }, - { - "included": -44000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 44000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 44, - "node_id": 134, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -46000 - }, - { - "included": -45000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 45000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 45, - "node_id": 137, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -47000 - }, - { - "included": -46000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 46000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 46, - "node_id": 140, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -48000 - }, - { - "included": -47000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 47000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 47, - "node_id": 143, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -49000 - }, - { - "included": -48000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 48000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 48, - "node_id": 146, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -50000 - }, - { - "included": -49000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 49000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 49, - "node_id": 149, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -51000 - }, - { - "included": -50000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 50000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 50, - "node_id": 152, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -52000 - }, - { - "included": -51000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 51000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 51, - "node_id": 155, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -53000 - }, - { - "included": -52000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 52000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 52, - "node_id": 158, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -54000 - }, - { - "included": -53000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 53000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 53, - "node_id": 161, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -55000 - }, - { - "included": -54000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 54000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 54, - "node_id": 164, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -56000 - }, - { - "included": -55000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 55000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 55, - "node_id": 167, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -57000 - }, - { - "included": -56000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 56000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 56, - "node_id": 170, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -58000 - }, - { - "included": -57000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 57000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 57, - "node_id": 173, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -59000 - }, - { - "included": -58000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 58000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 58, - "node_id": 176, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": -59000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 59000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 59, - "node_id": 179, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -61000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 60, - "node_id": 182, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -62000 - }, - { - "included": -61000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 61000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 61, - "node_id": 185, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -63000 - }, - { - "included": -62000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 62000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 62, - "node_id": 188, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -64000 - }, - { - "included": -63000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 63000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 63, - "node_id": 191, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -65000 - }, - { - "included": -64000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 64000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 64, - "node_id": 194, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -66000 - }, - { - "included": -65000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 65000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 65, - "node_id": 197, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -67000 - }, - { - "included": -66000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 66000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 66, - "node_id": 200, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -68000 - }, - { - "included": -67000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 67000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 67, - "node_id": 203, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -69000 - }, - { - "included": -68000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 68000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 68, - "node_id": 206, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -70000 - }, - { - "included": -69000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 69000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 69, - "node_id": 209, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -71000 - }, - { - "included": -70000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 70000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 70, - "node_id": 212, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -72000 - }, - { - "included": -71000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 71000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 71, - "node_id": 215, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -73000 - }, - { - "included": -72000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 72000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 72, - "node_id": 218, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -74000 - }, - { - "included": -73000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 73000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 73, - "node_id": 221, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -75000 - }, - { - "included": -74000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 74000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 74, - "node_id": 224, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -76000 - }, - { - "included": -75000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 75000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 75, - "node_id": 227, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -77000 - }, - { - "included": -76000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 76000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 76, - "node_id": 230, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -78000 - }, - { - "included": -77000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 77000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 77, - "node_id": 233, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -79000 - }, - { - "included": -78000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 78000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 78, - "node_id": 236, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -80000 - }, - { - "included": -79000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 79000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 79, - "node_id": 239, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -81000 - }, - { - "included": -80000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 80000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 80, - "node_id": 242, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -82000 - }, - { - "included": -81000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 81000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 81, - "node_id": 245, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -83000 - }, - { - "included": -82000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 82000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 82, - "node_id": 248, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -84000 - }, - { - "included": -83000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 83000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 83, - "node_id": 251, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -85000 - }, - { - "included": -84000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 84000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 84, - "node_id": 254, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -86000 - }, - { - "included": -85000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 85000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 85, - "node_id": 257, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -87000 - }, - { - "included": -86000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 86000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 86, - "node_id": 260, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -88000 - }, - { - "included": -87000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 87000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 87, - "node_id": 263, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -89000 - }, - { - "included": -88000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 88000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 88, - "node_id": 266, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -90000 - }, - { - "included": -89000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 89000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 89, - "node_id": 269, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -91000 - }, - { - "included": -90000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 90000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 90, - "node_id": 272, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -92000 - }, - { - "included": -91000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 91000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 91, - "node_id": 275, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -93000 - }, - { - "included": -92000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 92000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 92, - "node_id": 278, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -94000 - }, - { - "included": -93000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 93000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 93, - "node_id": 281, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -95000 - }, - { - "included": -94000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 94000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 94, - "node_id": 284, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -96000 - }, - { - "included": -95000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 95000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 95, - "node_id": 287, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -97000 - }, - { - "included": -96000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 96000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 96, - "node_id": 290, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -98000 - }, - { - "included": -97000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 97000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 97, - "node_id": 293, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -99000 - }, - { - "included": -98000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 98000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 98, - "node_id": 296, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "3cc5ca8de4166e2db2a1175162047eae", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -100000 - }, - { - "included": -99000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 99000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 1000 - } - ] - }, - "installed_count": 100, - "installed_position": 99, - "node_id": 299, - "refresh": "at_ingestion", - "retention_ms": 100000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -5000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 0, - "node_id": 312, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -10000 - }, - { - "included": -5000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 5000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 1, - "node_id": 315, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -15000 - }, - { - "included": -10000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 10000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 2, - "node_id": 318, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -20000 - }, - { - "included": -15000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 15000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 3, - "node_id": 321, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -25000 - }, - { - "included": -20000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 20000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 4, - "node_id": 324, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -30000 - }, - { - "included": -25000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 25000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 5, - "node_id": 327, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -35000 - }, - { - "included": -30000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 30000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 6, - "node_id": 330, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -40000 - }, - { - "included": -35000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 35000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 7, - "node_id": 333, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -45000 - }, - { - "included": -40000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 40000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 8, - "node_id": 336, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -50000 - }, - { - "included": -45000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 45000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 9, - "node_id": 339, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -55000 - }, - { - "included": -50000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 50000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 10, - "node_id": 342, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": -55000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 55000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 11, - "node_id": 345, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -65000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 12, - "node_id": 348, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -70000 - }, - { - "included": -65000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 65000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 13, - "node_id": 351, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -75000 - }, - { - "included": -70000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 70000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 14, - "node_id": 354, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -80000 - }, - { - "included": -75000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 75000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 15, - "node_id": 357, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -85000 - }, - { - "included": -80000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 80000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 16, - "node_id": 360, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -90000 - }, - { - "included": -85000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 85000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 17, - "node_id": 363, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -95000 - }, - { - "included": -90000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 90000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 18, - "node_id": 366, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -100000 - }, - { - "included": -95000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 95000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 19, - "node_id": 369, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -105000 - }, - { - "included": -100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 100000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 20, - "node_id": 372, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -110000 - }, - { - "included": -105000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 105000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 21, - "node_id": 375, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -115000 - }, - { - "included": -110000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 110000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 22, - "node_id": 378, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -115000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 115000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 23, - "node_id": 381, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -125000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 24, - "node_id": 384, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -130000 - }, - { - "included": -125000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 125000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 25, - "node_id": 387, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -135000 - }, - { - "included": -130000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 130000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 26, - "node_id": 390, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -140000 - }, - { - "included": -135000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 135000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 27, - "node_id": 393, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -145000 - }, - { - "included": -140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 140000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 28, - "node_id": 396, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -150000 - }, - { - "included": -145000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 145000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 29, - "node_id": 399, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -155000 - }, - { - "included": -150000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 150000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 30, - "node_id": 402, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -160000 - }, - { - "included": -155000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 155000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 31, - "node_id": 405, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -165000 - }, - { - "included": -160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 160000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 32, - "node_id": 408, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -170000 - }, - { - "included": -165000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 165000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 33, - "node_id": 411, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -175000 - }, - { - "included": -170000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 170000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 34, - "node_id": 414, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -175000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 175000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 35, - "node_id": 417, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -185000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 36, - "node_id": 420, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -190000 - }, - { - "included": -185000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 185000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 37, - "node_id": 423, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -195000 - }, - { - "included": -190000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 190000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 38, - "node_id": 426, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -200000 - }, - { - "included": -195000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 195000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 39, - "node_id": 429, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -205000 - }, - { - "included": -200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 200000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 40, - "node_id": 432, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -210000 - }, - { - "included": -205000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 205000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 41, - "node_id": 435, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -215000 - }, - { - "included": -210000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 210000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 42, - "node_id": 438, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -220000 - }, - { - "included": -215000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 215000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 43, - "node_id": 441, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -225000 - }, - { - "included": -220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 220000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 44, - "node_id": 444, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -230000 - }, - { - "included": -225000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 225000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 45, - "node_id": 447, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -235000 - }, - { - "included": -230000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 230000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 46, - "node_id": 450, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -235000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 235000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 47, - "node_id": 453, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -245000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 48, - "node_id": 456, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -250000 - }, - { - "included": -245000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 245000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 49, - "node_id": 459, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -255000 - }, - { - "included": -250000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 250000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 50, - "node_id": 462, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -260000 - }, - { - "included": -255000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 255000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 51, - "node_id": 465, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -265000 - }, - { - "included": -260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 260000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 52, - "node_id": 468, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -270000 - }, - { - "included": -265000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 265000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 53, - "node_id": 471, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -275000 - }, - { - "included": -270000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 270000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 54, - "node_id": 474, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -280000 - }, - { - "included": -275000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 275000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 55, - "node_id": 477, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -285000 - }, - { - "included": -280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 280000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 56, - "node_id": 480, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -290000 - }, - { - "included": -285000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 285000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 57, - "node_id": 483, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -295000 - }, - { - "included": -290000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 290000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 58, - "node_id": 486, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - }, - { - "coverage": { - "definition_id": "916dc74ffcca765ff49ae11fd1cec5e2", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -295000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 295000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 5000 - } - ] - }, - "installed_count": 60, - "installed_position": 59, - "node_id": 489, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 13 - } - ], - "proven_optimal": true, + "error": "plan selection: no valid candidate: [Rejection { id: \"workload\", cause: Infeasible, reason: \"no plan gives every query output a candidate whose every input has an admissible producer and meets its query's accuracy target at the root, constraint (K) (the selection MILP is infeasible); executions left out because they could not be costed: one of its inputs has no producer that can be costed\" }]", "queries": [ "avg by (region) (quantile_over_time(0.75, data[100s]))", "topk by (region) (4, increase(data_total[5m]))" ], - "search_status": "optimal", - "selected": { - "accepted": [ - { - "accepted_metric": "relative", - "accepted_regardless_of_guarantee": false, - "guarantee_check_rejection": null, - "sketches": [ - "DDSketch" - ], - "summary": "metric not set; accepted relative (DDSketch)", - "target_metric": null - }, - { - "accepted_metric": null, - "accepted_regardless_of_guarantee": false, - "guarantee_check_rejection": null, - "sketches": [], - "summary": "metric not set; accepted exact", - "target_metric": null - } - ], - "cost": { - "cost_per_second": 6.44592483745e-6, - "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.002778, - "per_node": { - "0": { - "cost_per_second": 6.52152e-9, - "cpu_core_seconds_per_second": 0.00058, - "detail": "scan 100000 samples; x 1.0000/s", - "multiplier": 1, - "operator": "Scan", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "1": { - "cost_per_second": 6.3775772514e-6, - "cpu_core_seconds_per_second": 0.0002, - "detail": "build DDSketch in 100 tumbling windows of 1000 ms for 10000 groups: 100000 rows x (1 + depth 1); x 1.0000/s; keeps 5542880000 bytes", - "multiplier": 1, - "operator": "SummaryTumblingWindowChain", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "10": { - "cost_per_second": 1.12440030089e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "operator: pass 10000 rows; x 1.0000/s; holds 24 bytes for 1.1 ms", - "multiplier": 1, - "operator": "BinaryOp", - "price_source": "analytical", - "timing": "query_time" - }, - "11": { - "cost_per_second": 1.12440030089e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "operator: pass 10000 rows; x 1.0000/s; holds 24 bytes for 1.1 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - }, - "12": { - "cost_per_second": 6.52152e-9, - "cpu_core_seconds_per_second": 0.00058, - "detail": "scan 100000 samples; x 1.0000/s", - "multiplier": 1, - "operator": "Scan", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "13": { - "cost_per_second": 4.15390642488e-8, - "cpu_core_seconds_per_second": 0.0002, - "detail": "build exact Increase accumulator in 60 tumbling windows of 5000 ms for 10000 groups: 100000 rows x (1 + depth 1); x 1.0000/s; keeps 34160000 bytes", - "multiplier": 1, - "operator": "SummaryTumblingWindowChain", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "14": { - "cost_per_second": 1.34936244514e-9, - "cpu_core_seconds_per_second": 0.00012, - "detail": "merge 600000 states into 10000; x 0.2000/s; holds 560000 bytes for 0.6 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", - "timing": "query_time" - }, - "15": { - "cost_per_second": 2.2488e-11, - "cpu_core_seconds_per_second": 2e-6, - "detail": "finalize 10000 accumulators; x 0.2000/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", - "price_source": "analytical", - "timing": "query_time" - }, - "16": { - "cost_per_second": 2.24880070667e-11, - "cpu_core_seconds_per_second": 2e-6, - "detail": "sort 10000 rows in 10000 partitions; x 0.2000/s; holds 48 bytes for 0.6 ms", - "multiplier": 1, - "operator": "Sort", - "price_source": "analytical", - "timing": "query_time" - }, - "17": { - "cost_per_second": 2.24880070667e-11, - "cpu_core_seconds_per_second": 2e-6, - "detail": "limit to 10000 rows; x 0.2000/s; holds 48 bytes for 0.6 ms", - "multiplier": 1, - "operator": "Limit", - "price_source": "analytical", - "timing": "query_time" - }, - "18": { - "cost_per_second": 2.24880070667e-11, - "cpu_core_seconds_per_second": 2e-6, - "detail": "operator: pass 10000 rows; x 0.2000/s; holds 48 bytes for 0.6 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - }, - "2": { - "cost_per_second": 1.13128030496e-8, - "cpu_core_seconds_per_second": 0.001, - "detail": "merge 1000000 states into 10000; x 1.0000/s; holds 54880000 bytes for 1.1 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", - "timing": "query_time" - }, - "3": { - "cost_per_second": 1.1244e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "estimate 10000 groups x 1; x 1.0000/s", - "multiplier": 1, - "operator": "SummaryEstimate", - "price_source": "analytical", - "timing": "query_time" - }, - "4": { - "cost_per_second": 1.12440060178e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "operator: pass 10000 rows; x 1.0000/s; holds 48 bytes for 1.1 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - }, - "5": { - "cost_per_second": 1.13142071935e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "build exact Sum accumulator into 10000 states: 10000 rows x depth 1; x 1.0000/s; holds 560000 bytes for 1.1 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "6": { - "cost_per_second": 1.1244e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "finalize 10000 accumulators; x 1.0000/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", - "price_source": "analytical", - "timing": "query_time" - }, - "7": { - "cost_per_second": 1.13142071935e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "build exact Count accumulator into 10000 states: 10000 rows x depth 1; x 1.0000/s; holds 560000 bytes for 1.1 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "8": { - "cost_per_second": 1.1244e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "finalize 10000 accumulators; x 1.0000/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", - "price_source": "analytical", - "timing": "query_time" - }, - "9": { - "cost_per_second": 1.12440030089e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "operator: pass 10000 rows; x 1.0000/s; holds 24 bytes for 1.1 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - } - }, - "source": "analytical-cost-v2 (illustrative statistics)", - "usage": { - "average_memory_bytes": 5577101111.83, - "cpu_ops_per_second": 1818000.0, - "disk_bytes": 0, - "latency_per_query": [ - { - "compaction_ms": 0.0, - "query_ms": 1.09 - }, - { - "compaction_ms": 0.0, - "query_ms": 0.64 - } - ], - "peak_cpu_cores": 3, - "peak_memory_bytes": 5633600360, - "scanned_bytes_per_second": 9600000.0 - } - }, - "dag": { - "edges": [ - { - "consumer": 1, - "data_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 0, - "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" - }, - { - "consumer": 2, - "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 1, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 3, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 2, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 4, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 3, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 5, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 6, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 5, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 7, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 8, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Count", - "Count" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 7, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 9, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "int64" - }, - "name": "count", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 8, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 10, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 6, - "role": "Left", - "window": "NotApplicable" - }, - { - "consumer": 10, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "col_1", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 9, - "role": "Right", - "window": "NotApplicable" - }, - { - "consumer": 11, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 10, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 13, - "data_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 12, - "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" - }, - { - "consumer": 14, - "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Increase", - "Increase" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 13, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 15, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Increase", - "Increase" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 14, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 16, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 15, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 17, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 16, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 18, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 17, - "role": "Input", - "window": "NotApplicable" - } - ], - "nodes": [ - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 0, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "payload": { - "NonASAP": { - "Scan": { - "predicates": [], - "schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "source": { - "TimeSeries": { - "metric": "data" - } - } - } - } - } - }, - { - "guarantee": null, - "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 0, - "family": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 100, - "tumbling_window_width_ms": 1000 - } - } - } - }, - { - "guarantee": null, - "id": 2, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.75 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 3, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryEstimate": { - "query": { - "Quantile": { - "q": 0.75 - } - }, - "summary_input": 2 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.75 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 4, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 3, - "cols": [ - { - "alias": "ts", - "expr": { - "Column": 0 - } - }, - { - "alias": "value", - "expr": { - "Column": 1 - } - }, - { - "alias": "region", - "expr": { - "Column": 2 - } - }, - { - "alias": "$promql_series_identity", - "expr": { - "Column": 3 - } - } - ], - "qualifier": null - } - } - } - }, - { - "guarantee": null, - "id": 5, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryAgg": { - "child": 4, - "family": { - "ExactAggregate": [ - "Sum", - "Sum" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": { - "Reduce": [ - 2 - ] - } - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "unavailable_statistic", - "statistic": "input_row_count" - }, - { - "kind": "unavailable_statistic", - "statistic": "values_non_negative[data]" - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.75 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "input_index": 0, - "kind": "child_guarantee" - }, - { - "kind": "exact", - "reason": "exact aggregation" - }, - { - "kind": "composition_step", - "operator": { - "op": "exact_sum" - }, - "rule": "exact_sum_relative" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "max", - "terms": [ - { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - } - ] - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "count": { - "op": "unknown", - "statistic": "input_row_count" - }, - "inner": { - "op": "union_bound", - "terms": [ - { - "op": "zero" - } - ] - }, - "op": "scaled" - } - } - }, - "id": 6, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 5 - } - } - } - }, - { - "guarantee": null, - "id": 7, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Count", - "Count" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryAgg": { - "child": 4, - "family": { - "ExactAggregate": [ - "Count", - "Count" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": { - "Reduce": [ - 2 - ] - } - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "count of rows" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 8, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "int64" - }, - "name": "count", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 7 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 9, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "col_1", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 8, - "cols": [ - { - "alias": null, - "expr": { - "Column": 0 - } - }, - { - "alias": null, - "expr": { - "Cast": { - "expr": { - "Column": 1 - }, - "to": "float64", - "try_cast": false - } - } - } - ], - "qualifier": null - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "unavailable_statistic", - "statistic": "input_row_count" - }, - { - "kind": "unavailable_statistic", - "statistic": "values_non_negative[data]" - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.75 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "input_index": 0, - "kind": "child_guarantee" - }, - { - "kind": "exact", - "reason": "exact aggregation" - }, - { - "kind": "composition_step", - "operator": { - "op": "exact_sum" - }, - "rule": "exact_sum_relative" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "max", - "terms": [ - { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - } - ] - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "count": { - "op": "unknown", - "statistic": "input_row_count" - }, - "inner": { - "op": "union_bound", - "terms": [ - { - "op": "zero" - } - ] - }, - "op": "scaled" - } - } - }, - "id": 10, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "sum", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "BinaryOp": { - "lhs": 6, - "operator": { - "checked_finite_division": false, - "checked_relative_division": false, - "kind": { - "Arithmetic": "Div" - }, - "vector_match": null - }, - "return_bool": false, - "rhs": 9 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "unavailable_statistic", - "statistic": "input_row_count" - }, - { - "kind": "unavailable_statistic", - "statistic": "values_non_negative[data]" - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.75 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "input_index": 0, - "kind": "child_guarantee" - }, - { - "kind": "exact", - "reason": "exact aggregation" - }, - { - "kind": "composition_step", - "operator": { - "op": "exact_sum" - }, - "rule": "exact_sum_relative" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "max", - "terms": [ - { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - } - ] - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "count": { - "op": "unknown", - "statistic": "input_row_count" - }, - "inner": { - "op": "union_bound", - "terms": [ - { - "op": "zero" - } - ] - }, - "op": "scaled" - } - } - }, - "id": 11, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "avg", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 10, - "cols": [ - { - "alias": "region", - "expr": { - "Column": 0 - } - }, - { - "alias": "avg", - "expr": { - "Column": 1 - } - } - ], - "qualifier": null - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 12, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "payload": { - "NonASAP": { - "Scan": { - "predicates": [], - "schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "source": { - "TimeSeries": { - "metric": "data_total" - } - } - } - } - } - }, - { - "guarantee": null, - "id": 13, - "lifetime": { - "AcrossEvaluations": "Memory" - }, - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Increase", - "Increase" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 12, - "family": { - "ExactAggregate": [ - "Increase", - "Increase" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 60, - "tumbling_window_width_ms": 5000 - } - } - } - }, - { - "guarantee": null, - "id": 14, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Increase", - "Increase" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 13 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 15, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 14 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 16, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Sort": { - "child": 15, - "keys": [ - { - "ascending": false, - "expr": { - "Column": 1 - }, - "nulls_first": false - } - ], - "partition_by": [ - 2 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 17, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Limit": { - "child": 16, - "n": 4, - "offset": 0, - "partition_by": [ - 2 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 18, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "region", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "topk_4", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 17, - "cols": [ - { - "alias": "region", - "expr": { - "Column": 2 - } - }, - { - "alias": "topk_4", - "expr": { - "Column": 1 - } - }, - { - "alias": "$promql_series_identity", - "expr": { - "Column": 3 - } - } - ], - "qualifier": null - } - } - } - } - ], - "roots": [ - 11, - 18 - ], - "scalar_roots": [] - }, - "display_name": "Q1 Sum acc + DDSketch ×100 tumbling windows + Count acc · Q2 Increase acc ×60 tumbling windows · ingestion time: DDSketch for Q1, 100 × 1s tumbling windows, Increase acc for Q2, 60 × 5s tumbling windows" - }, - "tumbling_window_retention_ms": { - "1": 100000, - "13": 300000 - } + "selected": null } diff --git a/crates/devtools/tests/sketch_plan_snapshots/ratio-of-quantiles-1h-mvp.json b/crates/devtools/tests/sketch_plan_snapshots/ratio-of-quantiles-1h-mvp.json index 266118af6..b325e532d 100644 --- a/crates/devtools/tests/sketch_plan_snapshots/ratio-of-quantiles-1h-mvp.json +++ b/crates/devtools/tests/sketch_plan_snapshots/ratio-of-quantiles-1h-mvp.json @@ -1,3671 +1,8 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -360000 - }, - { - "included": -300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 300000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 5, - "node_id": 17, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -420000 - }, - { - "included": -360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 360000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 6, - "node_id": 20, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -480000 - }, - { - "included": -420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 420000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 7, - "node_id": 23, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -540000 - }, - { - "included": -480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 480000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 8, - "node_id": 26, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -600000 - }, - { - "included": -540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 540000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 9, - "node_id": 29, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -660000 - }, - { - "included": -600000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 600000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 10, - "node_id": 32, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -720000 - }, - { - "included": -660000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 660000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 11, - "node_id": 35, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -780000 - }, - { - "included": -720000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 720000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 12, - "node_id": 38, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -840000 - }, - { - "included": -780000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 780000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 13, - "node_id": 41, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -900000 - }, - { - "included": -840000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 840000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 14, - "node_id": 44, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -960000 - }, - { - "included": -900000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 900000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 15, - "node_id": 47, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1020000 - }, - { - "included": -960000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 960000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 16, - "node_id": 50, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1080000 - }, - { - "included": -1020000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1020000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 17, - "node_id": 53, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1140000 - }, - { - "included": -1080000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1080000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 18, - "node_id": 56, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1200000 - }, - { - "included": -1140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1140000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 19, - "node_id": 59, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1260000 - }, - { - "included": -1200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1200000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 20, - "node_id": 62, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1320000 - }, - { - "included": -1260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1260000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 21, - "node_id": 65, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1380000 - }, - { - "included": -1320000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1320000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 22, - "node_id": 68, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1440000 - }, - { - "included": -1380000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1380000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 23, - "node_id": 71, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1500000 - }, - { - "included": -1440000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1440000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 24, - "node_id": 74, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1560000 - }, - { - "included": -1500000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1500000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 25, - "node_id": 77, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1620000 - }, - { - "included": -1560000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1560000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 26, - "node_id": 80, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1680000 - }, - { - "included": -1620000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1620000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 27, - "node_id": 83, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1740000 - }, - { - "included": -1680000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1680000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 28, - "node_id": 86, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1800000 - }, - { - "included": -1740000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1740000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 29, - "node_id": 89, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1860000 - }, - { - "included": -1800000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1800000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 30, - "node_id": 92, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1920000 - }, - { - "included": -1860000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1860000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 31, - "node_id": 95, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1980000 - }, - { - "included": -1920000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1920000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 32, - "node_id": 98, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2040000 - }, - { - "included": -1980000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1980000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 33, - "node_id": 101, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2100000 - }, - { - "included": -2040000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2040000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 34, - "node_id": 104, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2160000 - }, - { - "included": -2100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2100000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 35, - "node_id": 107, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2220000 - }, - { - "included": -2160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2160000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 36, - "node_id": 110, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2280000 - }, - { - "included": -2220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2220000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 37, - "node_id": 113, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2340000 - }, - { - "included": -2280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2280000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 38, - "node_id": 116, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2400000 - }, - { - "included": -2340000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2340000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 39, - "node_id": 119, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2460000 - }, - { - "included": -2400000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2400000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 40, - "node_id": 122, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2520000 - }, - { - "included": -2460000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2460000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 41, - "node_id": 125, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2580000 - }, - { - "included": -2520000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2520000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 42, - "node_id": 128, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2640000 - }, - { - "included": -2580000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2580000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 43, - "node_id": 131, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2700000 - }, - { - "included": -2640000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2640000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 44, - "node_id": 134, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2760000 - }, - { - "included": -2700000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2700000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 45, - "node_id": 137, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2820000 - }, - { - "included": -2760000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2760000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 46, - "node_id": 140, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2880000 - }, - { - "included": -2820000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2820000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 47, - "node_id": 143, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2940000 - }, - { - "included": -2880000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2880000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 48, - "node_id": 146, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3000000 - }, - { - "included": -2940000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2940000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 49, - "node_id": 149, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3060000 - }, - { - "included": -3000000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3000000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 50, - "node_id": 152, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3120000 - }, - { - "included": -3060000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3060000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 51, - "node_id": 155, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3180000 - }, - { - "included": -3120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3120000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 52, - "node_id": 158, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3240000 - }, - { - "included": -3180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3180000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 53, - "node_id": 161, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3300000 - }, - { - "included": -3240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3240000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 54, - "node_id": 164, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3360000 - }, - { - "included": -3300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3300000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 55, - "node_id": 167, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3420000 - }, - { - "included": -3360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3360000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 56, - "node_id": 170, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3480000 - }, - { - "included": -3420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3420000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 57, - "node_id": 173, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3540000 - }, - { - "included": -3480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3480000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 58, - "node_id": 176, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ef4518647caf2874d0f473f802792403", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3600000 - }, - { - "included": -3540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3540000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 59, - "node_id": 179, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - } - ], - "proven_optimal": true, + "error": "plan selection: no valid candidate: [Rejection { id: \"workload\", cause: Infeasible, reason: \"no plan gives every query output a candidate whose every input has an admissible producer and meets its query's accuracy target at the root, constraint (K) (the selection MILP is infeasible); executions left out because they could not be costed: one of its inputs has no producer that can be costed\" }]", "queries": [ "quantile_over_time(0.9, data[1h]) / quantile_over_time(0.5, data[1h])" ], - "search_status": "optimal", - "selected": { - "accepted": [ - { - "accepted_metric": "relative", - "accepted_regardless_of_guarantee": false, - "guarantee_check_rejection": null, - "sketches": [ - "DDSketch" - ], - "summary": "metric not set; accepted relative (DDSketch)", - "target_metric": null - } - ], - "cost": { - "cost_per_second": 6.4822354111e-6, - "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.0124208333333, - "per_node": { - "0": { - "cost_per_second": 9.44496e-8, - "cpu_core_seconds_per_second": 0.0084, - "detail": "scan 2000000 samples; x 1.0000/s", - "multiplier": 1, - "operator": "Scan", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "1": { - "cost_per_second": 6.38754722874e-6, - "cpu_core_seconds_per_second": 0.004, - "detail": "build DDSketch in 60 tumbling windows of 60000 ms for 10000 groups: 2000000 rows x (1 + depth 1); x 1.0000/s; keeps 5514400000 bytes", - "multiplier": 1, - "operator": "SummaryTumblingWindowChain", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "2": { - "cost_per_second": 1.14606178698e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "merge 600000 states into 10000; x 0.0167/s; holds 90400000 bytes for 1.2 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", - "timing": "query_time" - }, - "3": { - "cost_per_second": 1.874e-12, - "cpu_core_seconds_per_second": 1.66666666667e-7, - "detail": "estimate 10000 groups x 1; x 0.0167/s", - "multiplier": 1, - "operator": "SummaryEstimate", - "price_source": "analytical", - "timing": "query_time" - }, - "4": { - "cost_per_second": 1.87400076679e-12, - "cpu_core_seconds_per_second": 1.66666666667e-7, - "detail": "operator: pass 10000 rows; x 0.0167/s; holds 32 bytes for 1.2 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - }, - "5": { - "cost_per_second": 1.14606178698e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "merge 600000 states into 10000; x 0.0167/s; holds 90400000 bytes for 1.2 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", - "timing": "query_time" - }, - "6": { - "cost_per_second": 1.874e-12, - "cpu_core_seconds_per_second": 1.66666666667e-7, - "detail": "estimate 10000 groups x 1; x 0.0167/s", - "multiplier": 1, - "operator": "SummaryEstimate", - "price_source": "analytical", - "timing": "query_time" - }, - "7": { - "cost_per_second": 1.87400076679e-12, - "cpu_core_seconds_per_second": 1.66666666667e-7, - "detail": "operator: pass 10000 rows; x 0.0167/s; holds 32 bytes for 1.2 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - }, - "8": { - "cost_per_second": 1.87400076679e-12, - "cpu_core_seconds_per_second": 1.66666666667e-7, - "detail": "operator: pass 10000 rows; x 0.0167/s; holds 32 bytes for 1.2 ms", - "multiplier": 1, - "operator": "BinaryOp", - "price_source": "analytical", - "timing": "query_time" - } - }, - "source": "analytical-cost-v2 (illustrative statistics)", - "usage": { - "average_memory_bytes": 5514403766.67, - "cpu_ops_per_second": 6020833.33333, - "disk_bytes": 0, - "latency_per_query": [ - { - "compaction_ms": 0.0, - "query_ms": 1.25 - } - ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 5695200128, - "scanned_bytes_per_second": 64000000.0 - } - }, - "dag": { - "edges": [ - { - "consumer": 1, - "data_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 0, - "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" - }, - { - "consumer": 2, - "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.0240999270515 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 1, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 3, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.0240999270515 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 2, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 4, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 3, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 5, - "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.0240999270515 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 1, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 6, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.0240999270515 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 5, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 7, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 6, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 8, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 4, - "role": "Left", - "window": "NotApplicable" - }, - { - "consumer": 8, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 7, - "role": "Right", - "window": "NotApplicable" - } - ], - "nodes": [ - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 0, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "payload": { - "NonASAP": { - "Scan": { - "predicates": [], - "schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "source": { - "TimeSeries": { - "metric": "data" - } - } - } - } - } - }, - { - "guarantee": null, - "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.0240999270515 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 0, - "family": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.0240999270515 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 60, - "tumbling_window_width_ms": 60000 - } - } - } - }, - { - "guarantee": null, - "id": 2, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.0240999270515 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.0240999270515 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.0240999270515 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 3, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryEstimate": { - "query": { - "Quantile": { - "q": 0.9 - } - }, - "summary_input": 2 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.0240999270515 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.0240999270515 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 4, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 3, - "cols": [ - { - "alias": "ts", - "expr": { - "Column": 0 - } - }, - { - "alias": "value", - "expr": { - "Column": 1 - } - }, - { - "alias": "$promql_series_identity", - "expr": { - "Column": 2 - } - } - ], - "qualifier": null - } - } - } - }, - { - "guarantee": null, - "id": 5, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.0240999270515 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.0240999270515 - } - }, - "query": "Quantile { q: 0.5 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.0240999270515 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 6, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryEstimate": { - "query": { - "Quantile": { - "q": 0.5 - } - }, - "summary_input": 5 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.0240999270515 - } - }, - "query": "Quantile { q: 0.5 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.0240999270515 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 7, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 6, - "cols": [ - { - "alias": "ts", - "expr": { - "Column": 0 - } - }, - { - "alias": "value", - "expr": { - "Column": 1 - } - }, - { - "alias": "$promql_series_identity", - "expr": { - "Column": 2 - } - } - ], - "qualifier": null - } - } - } - }, - { - "guarantee": null, - "id": 8, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "BinaryOp": { - "lhs": 4, - "operator": { - "checked_finite_division": false, - "checked_relative_division": false, - "kind": { - "Arithmetic": "Div" - }, - "vector_match": null - }, - "return_bool": false, - "rhs": 7 - } - } - } - } - ], - "roots": [ - 8 - ], - "scalar_roots": [] - }, - "display_name": "Q1 DDSketch ×60 tumbling windows · ingestion time: DDSketch for Q1, 60 × 1m tumbling windows" - }, - "tumbling_window_retention_ms": { - "1": 3600000 - } + "selected": null } diff --git a/crates/devtools/tests/sketch_plan_snapshots/shared-quantiles-1h-mvp.json b/crates/devtools/tests/sketch_plan_snapshots/shared-quantiles-1h-mvp.json index fa094b72a..777bee721 100644 --- a/crates/devtools/tests/sketch_plan_snapshots/shared-quantiles-1h-mvp.json +++ b/crates/devtools/tests/sketch_plan_snapshots/shared-quantiles-1h-mvp.json @@ -1,3522 +1,9 @@ { "accuracy_guarantees": "enforced", - "materialized_views": [ - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -360000 - }, - { - "included": -300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 300000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 5, - "node_id": 17, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -420000 - }, - { - "included": -360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 360000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 6, - "node_id": 20, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -480000 - }, - { - "included": -420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 420000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 7, - "node_id": 23, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -540000 - }, - { - "included": -480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 480000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 8, - "node_id": 26, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -600000 - }, - { - "included": -540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 540000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 9, - "node_id": 29, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -660000 - }, - { - "included": -600000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 600000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 10, - "node_id": 32, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -720000 - }, - { - "included": -660000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 660000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 11, - "node_id": 35, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -780000 - }, - { - "included": -720000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 720000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 12, - "node_id": 38, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -840000 - }, - { - "included": -780000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 780000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 13, - "node_id": 41, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -900000 - }, - { - "included": -840000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 840000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 14, - "node_id": 44, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -960000 - }, - { - "included": -900000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 900000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 15, - "node_id": 47, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1020000 - }, - { - "included": -960000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 960000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 16, - "node_id": 50, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1080000 - }, - { - "included": -1020000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1020000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 17, - "node_id": 53, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1140000 - }, - { - "included": -1080000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1080000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 18, - "node_id": 56, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1200000 - }, - { - "included": -1140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1140000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 19, - "node_id": 59, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1260000 - }, - { - "included": -1200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1200000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 20, - "node_id": 62, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1320000 - }, - { - "included": -1260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1260000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 21, - "node_id": 65, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1380000 - }, - { - "included": -1320000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1320000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 22, - "node_id": 68, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1440000 - }, - { - "included": -1380000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1380000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 23, - "node_id": 71, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1500000 - }, - { - "included": -1440000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1440000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 24, - "node_id": 74, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1560000 - }, - { - "included": -1500000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1500000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 25, - "node_id": 77, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1620000 - }, - { - "included": -1560000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1560000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 26, - "node_id": 80, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1680000 - }, - { - "included": -1620000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1620000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 27, - "node_id": 83, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1740000 - }, - { - "included": -1680000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1680000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 28, - "node_id": 86, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1800000 - }, - { - "included": -1740000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1740000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 29, - "node_id": 89, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1860000 - }, - { - "included": -1800000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1800000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 30, - "node_id": 92, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1920000 - }, - { - "included": -1860000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1860000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 31, - "node_id": 95, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -1980000 - }, - { - "included": -1920000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1920000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 32, - "node_id": 98, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2040000 - }, - { - "included": -1980000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 1980000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 33, - "node_id": 101, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2100000 - }, - { - "included": -2040000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2040000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 34, - "node_id": 104, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2160000 - }, - { - "included": -2100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2100000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 35, - "node_id": 107, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2220000 - }, - { - "included": -2160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2160000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 36, - "node_id": 110, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2280000 - }, - { - "included": -2220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2220000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 37, - "node_id": 113, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2340000 - }, - { - "included": -2280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2280000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 38, - "node_id": 116, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2400000 - }, - { - "included": -2340000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2340000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 39, - "node_id": 119, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2460000 - }, - { - "included": -2400000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2400000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 40, - "node_id": 122, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2520000 - }, - { - "included": -2460000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2460000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 41, - "node_id": 125, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2580000 - }, - { - "included": -2520000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2520000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 42, - "node_id": 128, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2640000 - }, - { - "included": -2580000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2580000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 43, - "node_id": 131, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2700000 - }, - { - "included": -2640000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2640000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 44, - "node_id": 134, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2760000 - }, - { - "included": -2700000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2700000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 45, - "node_id": 137, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2820000 - }, - { - "included": -2760000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2760000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 46, - "node_id": 140, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2880000 - }, - { - "included": -2820000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2820000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 47, - "node_id": 143, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -2940000 - }, - { - "included": -2880000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2880000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 48, - "node_id": 146, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3000000 - }, - { - "included": -2940000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 2940000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 49, - "node_id": 149, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3060000 - }, - { - "included": -3000000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3000000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 50, - "node_id": 152, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3120000 - }, - { - "included": -3060000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3060000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 51, - "node_id": 155, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3180000 - }, - { - "included": -3120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3120000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 52, - "node_id": 158, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3240000 - }, - { - "included": -3180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3180000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 53, - "node_id": 161, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3300000 - }, - { - "included": -3240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3240000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 54, - "node_id": 164, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3360000 - }, - { - "included": -3300000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3300000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 55, - "node_id": 167, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3420000 - }, - { - "included": -3360000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3360000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 56, - "node_id": 170, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3480000 - }, - { - "included": -3420000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3420000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 57, - "node_id": 173, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3540000 - }, - { - "included": -3480000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3480000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 58, - "node_id": 176, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "ebb7a8bd672401a580c2477ccdc5b96d", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -3600000 - }, - { - "included": -3540000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 3540000, - "source": { - "TimeSeries": { - "metric": "data" - } - }, - "width_ms": 60000 - } - ] - }, - "installed_count": 60, - "installed_position": 59, - "node_id": 179, - "refresh": "at_ingestion", - "retention_ms": 3600000, - "stage2_node_id": 1 - } - ], - "proven_optimal": true, + "error": "plan selection: no valid candidate: [Rejection { id: \"workload\", cause: Infeasible, reason: \"no plan gives every query output a candidate whose every input has an admissible producer and meets its query's accuracy target at the root, constraint (K) (the selection MILP is infeasible); executions left out because they could not be costed: one of its inputs has no producer that can be costed\" }]", "queries": [ "quantile_over_time(0.5, data[1h])", "quantile_over_time(0.9, data[1h])" ], - "search_status": "optimal", - "selected": { - "accepted": [ - { - "accepted_metric": "relative", - "accepted_regardless_of_guarantee": false, - "guarantee_check_rejection": null, - "sketches": [ - "DDSketch" - ], - "summary": "metric not set; accepted relative (DDSketch)", - "target_metric": null - }, - { - "accepted_metric": "relative", - "accepted_regardless_of_guarantee": false, - "guarantee_check_rejection": null, - "sketches": [ - "DDSketch" - ], - "summary": "metric not set; accepted relative (DDSketch)", - "target_metric": null - } - ], - "cost": { - "cost_per_second": 3.99010517691e-6, - "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.0124206666667, - "per_node": { - "0": { - "cost_per_second": 9.44496e-8, - "cpu_core_seconds_per_second": 0.0084, - "detail": "scan 2000000 samples; x 1.0000/s", - "multiplier": 1, - "operator": "Scan", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "1": { - "cost_per_second": 3.89542189639e-6, - "cpu_core_seconds_per_second": 0.004, - "detail": "build DDSketch in 60 tumbling windows of 60000 ms for 10000 groups: 2000000 rows x (1 + depth 1); x 1.0000/s; keeps 3347680000 bytes", - "multiplier": 1, - "operator": "SummaryTumblingWindowChain", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "2": { - "cost_per_second": 1.13092261327e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "merge 600000 states into 10000; x 0.0167/s; holds 54880000 bytes for 0.6 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", - "timing": "query_time" - }, - "3": { - "cost_per_second": 1.874e-12, - "cpu_core_seconds_per_second": 1.66666666667e-7, - "detail": "estimate 10000 groups x 1; x 0.0167/s", - "multiplier": 1, - "operator": "SummaryEstimate", - "price_source": "analytical", - "timing": "query_time" - }, - "4": { - "cost_per_second": 1.87400038033e-12, - "cpu_core_seconds_per_second": 1.66666666667e-7, - "detail": "operator: pass 10000 rows; x 0.0167/s; holds 32 bytes for 0.6 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - }, - "5": { - "cost_per_second": 1.13092261327e-10, - "cpu_core_seconds_per_second": 0.00001, - "detail": "merge 600000 states into 10000; x 0.0167/s; holds 54880000 bytes for 0.6 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", - "timing": "query_time" - }, - "6": { - "cost_per_second": 1.874e-12, - "cpu_core_seconds_per_second": 1.66666666667e-7, - "detail": "estimate 10000 groups x 1; x 0.0167/s", - "multiplier": 1, - "operator": "SummaryEstimate", - "price_source": "analytical", - "timing": "query_time" - }, - "7": { - "cost_per_second": 1.87400038033e-12, - "cpu_core_seconds_per_second": 1.66666666667e-7, - "detail": "operator: pass 10000 rows; x 0.0167/s; holds 32 bytes for 0.6 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - } - }, - "source": "analytical-cost-v2 (illustrative statistics)", - "usage": { - "average_memory_bytes": 3347681134.19, - "cpu_ops_per_second": 6020666.66667, - "disk_bytes": 0, - "latency_per_query": [ - { - "compaction_ms": 0.0, - "query_ms": 0.62 - }, - { - "compaction_ms": 0.0, - "query_ms": 0.62 - } - ], - "peak_cpu_cores": 3, - "peak_memory_bytes": 3457440096, - "scanned_bytes_per_second": 64000000.0 - } - }, - "dag": { - "edges": [ - { - "consumer": 1, - "data_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 0, - "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" - }, - { - "consumer": 2, - "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 1, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 3, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 2, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 4, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 3, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 5, - "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 1, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 6, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 5, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 7, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "producer": 6, - "role": "Input", - "window": "NotApplicable" - } - ], - "nodes": [ - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 0, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "payload": { - "NonASAP": { - "Scan": { - "predicates": [], - "schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "source": { - "TimeSeries": { - "metric": "data" - } - } - } - } - } - }, - { - "guarantee": null, - "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 0, - "family": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 60, - "tumbling_window_width_ms": 60000 - } - } - } - }, - { - "guarantee": null, - "id": 2, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.5 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 3, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryEstimate": { - "query": { - "Quantile": { - "q": 0.5 - } - }, - "summary_input": 2 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.5 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 4, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 3, - "cols": [ - { - "alias": "ts", - "expr": { - "Column": 0 - } - }, - { - "alias": "value", - "expr": { - "Column": 1 - } - }, - { - "alias": "$promql_series_identity", - "expr": { - "Column": 2 - } - } - ], - "qualifier": null - } - } - } - }, - { - "guarantee": null, - "id": 5, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Sketch": [ - { - "algorithm": "DDSketch", - "params": { - "DDSketch": { - "alpha": 0.05 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 6, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "quantile", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryEstimate": { - "query": { - "Quantile": { - "q": 0.9 - } - }, - "summary_input": 5 - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "algorithm": "DDSketch", - "contract": "ddsketch_relative_error_alpha_v1", - "kind": "sketch_evaluation", - "params": { - "DDSketch": { - "alpha": 0.05 - } - }, - "query": "Quantile { q: 0.9 }" - } - ], - "spec": { - "accuracy_metric": "relative", - "accuracy_scope": "per_value", - "error": { - "factors": [ - { - "op": "constant", - "value": 0.05 - }, - { - "op": "unknown", - "statistic": "values_non_negative[data]" - } - ], - "op": "product" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 7, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 2, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 6, - "cols": [ - { - "alias": "ts", - "expr": { - "Column": 0 - } - }, - { - "alias": "value", - "expr": { - "Column": 1 - } - }, - { - "alias": "$promql_series_identity", - "expr": { - "Column": 2 - } - } - ], - "qualifier": null - } - } - } - } - ], - "roots": [ - 4, - 7 - ], - "scalar_roots": [] - }, - "display_name": "Q1 DDSketch ×60 tumbling windows · Q2 DDSketch ×60 tumbling windows · shared DDSketch ×60 tumbling windows (Q1, Q2) · shared Scan (Q1, Q2) · ingestion time: DDSketch for Q1, Q2, 60 × 1m tumbling windows" - }, - "tumbling_window_retention_ms": { - "1": 3600000 - } + "selected": null } diff --git a/crates/devtools/tests/sketch_plan_snapshots/topk-rate-guarantees-ignored-mvp.json b/crates/devtools/tests/sketch_plan_snapshots/topk-rate-guarantees-ignored-mvp.json index 3d269fb2c..46a274ff5 100644 --- a/crates/devtools/tests/sketch_plan_snapshots/topk-rate-guarantees-ignored-mvp.json +++ b/crates/devtools/tests/sketch_plan_snapshots/topk-rate-guarantees-ignored-mvp.json @@ -1,2101 +1,8 @@ { "accuracy_guarantees": "ignored", - "materialized_views": [ - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -10000 - }, - { - "included": 0 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 0, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 0, - "node_id": 2, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -20000 - }, - { - "included": -10000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 10000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 1, - "node_id": 5, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -30000 - }, - { - "included": -20000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 20000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 2, - "node_id": 8, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -40000 - }, - { - "included": -30000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 30000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 3, - "node_id": 11, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -50000 - }, - { - "included": -40000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 40000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 4, - "node_id": 14, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -60000 - }, - { - "included": -50000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 50000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 5, - "node_id": 17, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -70000 - }, - { - "included": -60000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 60000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 6, - "node_id": 20, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -80000 - }, - { - "included": -70000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 70000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 7, - "node_id": 23, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -90000 - }, - { - "included": -80000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 80000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 8, - "node_id": 26, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -100000 - }, - { - "included": -90000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 90000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 9, - "node_id": 29, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -110000 - }, - { - "included": -100000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 100000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 10, - "node_id": 32, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -120000 - }, - { - "included": -110000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 110000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 11, - "node_id": 35, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -130000 - }, - { - "included": -120000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 120000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 12, - "node_id": 38, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -140000 - }, - { - "included": -130000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 130000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 13, - "node_id": 41, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -150000 - }, - { - "included": -140000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 140000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 14, - "node_id": 44, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -160000 - }, - { - "included": -150000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 150000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 15, - "node_id": 47, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -170000 - }, - { - "included": -160000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 160000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 16, - "node_id": 50, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -180000 - }, - { - "included": -170000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 170000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 17, - "node_id": 53, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -190000 - }, - { - "included": -180000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 180000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 18, - "node_id": 56, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -200000 - }, - { - "included": -190000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 190000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 19, - "node_id": 59, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -210000 - }, - { - "included": -200000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 200000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 20, - "node_id": 62, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -220000 - }, - { - "included": -210000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 210000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 21, - "node_id": 65, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -230000 - }, - { - "included": -220000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 220000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 22, - "node_id": 68, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -240000 - }, - { - "included": -230000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 230000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 23, - "node_id": 71, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -250000 - }, - { - "included": -240000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 240000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 24, - "node_id": 74, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -260000 - }, - { - "included": -250000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 250000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 25, - "node_id": 77, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -270000 - }, - { - "included": -260000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 260000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 26, - "node_id": 80, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -280000 - }, - { - "included": -270000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 270000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 27, - "node_id": 83, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -290000 - }, - { - "included": -280000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 280000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 28, - "node_id": 86, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - }, - { - "coverage": { - "definition_id": "9dfffca4bd58dda229c67ca3b6042d4f", - "selection": [ - { - "columns": [], - "relative_time": [ - { - "excluded": -300000 - }, - { - "included": -290000 - } - ] - } - ] - }, - "inputs": { - "materialized_views": [], - "raw_data_windows": [ - { - "end_offset_ms": 290000, - "source": { - "TimeSeries": { - "metric": "data_total" - } - }, - "width_ms": 10000 - } - ] - }, - "installed_count": 30, - "installed_position": 29, - "node_id": 89, - "refresh": "at_ingestion", - "retention_ms": 300000, - "stage2_node_id": 1 - } - ], - "proven_optimal": true, + "error": "plan selection: no valid candidate: [Rejection { id: \"workload\", cause: Infeasible, reason: \"no plan gives every query output a candidate whose every input has an admissible producer (the selection MILP is infeasible); executions left out because they could not be costed: one of its inputs has no producer that can be costed\" }]", "queries": [ "topk(5, sum by (job) (rate(data_total[5m])))" ], - "search_status": "optimal", - "selected": { - "accepted": [ - { - "accepted_metric": null, - "accepted_regardless_of_guarantee": true, - "guarantee_check_rejection": "no_accuracy_guarantee", - "sketches": [ - "CmsWithHeap" - ], - "summary": "metric not set; accepted by the deployment's accuracy model regardless of guarantee, ignoring a failed guarantee check (NoAccuracyGuarantee) (CmsWithHeap)", - "target_metric": null - } - ], - "cost": { - "cost_per_second": 2.91198328572e-8, - "cost_unit": "cost_per_second", - "cpu_core_seconds_per_second": 0.000814001, - "per_node": { - "0": { - "cost_per_second": 6.52152e-9, - "cpu_core_seconds_per_second": 0.00058, - "detail": "scan 100000 samples; x 1.0000/s", - "multiplier": 1, - "operator": "Scan", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "1": { - "cost_per_second": 2.22159834707e-8, - "cpu_core_seconds_per_second": 0.0002, - "detail": "build exact Rate accumulator in 30 tumbling windows of 10000 ms for 10000 groups: 100000 rows x (1 + depth 1); x 1.0000/s; keeps 17360000 bytes", - "multiplier": 1, - "operator": "SummaryTumblingWindowChain", - "price_source": "analytical", - "timing": "ingestion_time" - }, - "2": { - "cost_per_second": 3.37341900136e-10, - "cpu_core_seconds_per_second": 0.00003, - "detail": "merge 300000 states into 10000; x 0.1000/s; holds 560000 bytes for 0.3 ms", - "multiplier": 1, - "operator": "SummaryMerge", - "price_source": "analytical", - "timing": "query_time" - }, - "3": { - "cost_per_second": 1.1244e-11, - "cpu_core_seconds_per_second": 1e-6, - "detail": "finalize 10000 accumulators; x 0.1000/s", - "multiplier": 1, - "operator": "FinalizeExactAccumulator", - "price_source": "analytical", - "timing": "query_time" - }, - "4": { - "cost_per_second": 3.37322413708e-11, - "cpu_core_seconds_per_second": 3e-6, - "detail": "build CmsWithHeap into 1 states: 10000 rows x depth 3; x 0.1000/s; holds 6172 bytes for 0.3 ms", - "multiplier": 1, - "operator": "SummaryAgg", - "price_source": "analytical", - "timing": "query_time" - }, - "5": { - "cost_per_second": 5.622e-15, - "cpu_core_seconds_per_second": 5e-10, - "detail": "estimate 1 groups x 5; x 0.1000/s", - "multiplier": 1, - "operator": "SummaryEstimate", - "price_source": "analytical", - "timing": "query_time" - }, - "6": { - "cost_per_second": 5.62293857724e-15, - "cpu_core_seconds_per_second": 5e-10, - "detail": "operator: pass 5 rows; x 0.1000/s; holds 24 bytes for 0.3 ms", - "multiplier": 1, - "operator": "Project", - "price_source": "analytical", - "timing": "query_time" - } - }, - "source": "analytical-cost-v2 (illustrative statistics)", - "usage": { - "average_memory_bytes": 17360019.2512, - "cpu_ops_per_second": 334001.0, - "disk_bytes": 0, - "latency_per_query": [ - { - "compaction_ms": 0.0, - "query_ms": 0.34001 - } - ], - "peak_cpu_cores": 2, - "peak_memory_bytes": 17926244, - "scanned_bytes_per_second": 4800000.0 - } - }, - "dag": { - "edges": [ - { - "consumer": 1, - "data_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "job", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 0, - "role": "Input", - "window": "RequiresAlignedPanePhaseOrExactBoundaryResidual" - }, - { - "consumer": 2, - "data_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "job", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 1, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 3, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "job", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 2, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 4, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "job", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "producer": 3, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 5, - "data_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Sketch": [ - { - "algorithm": "CmsWithHeap", - "params": { - "CmsWithHeap": { - "depth": 2, - "heap_size": 20, - "width": 55 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "producer": 4, - "role": "Input", - "window": "NotApplicable" - }, - { - "consumer": 6, - "data_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "grouping": "NotApplicable", - "intermediate_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "job", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "topk", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "producer": 5, - "role": "Input", - "window": "NotApplicable" - } - ], - "nodes": [ - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact over exact inputs" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 0, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "job", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "ingestion_time" - }, - "payload": { - "NonASAP": { - "Scan": { - "predicates": [], - "schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "job", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "source": { - "TimeSeries": { - "metric": "data_total" - } - } - } - } - } - }, - { - "guarantee": null, - "id": 1, - "lifetime": { - "AcrossEvaluations": "Memory" - }, - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "job", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "ingestion_time" - }, - "payload": { - "ASAP": { - "SummaryTumblingWindowChain": { - "child": 0, - "family": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": null, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "unknown_or_signed" - } - }, - "reduction": "PerEntity", - "tumbling_window_count": 30, - "tumbling_window_width_ms": 10000 - } - } - } - }, - { - "guarantee": null, - "id": 2, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "ExactAggregate": [ - "Rate", - "Rate" - ] - }, - "name": "state", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "job", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryMerge": { - "children": [ - 1 - ] - } - } - } - }, - { - "guarantee": { - "provenance": [ - { - "kind": "exact", - "reason": "exact accumulator over exact input" - } - ], - "spec": { - "accuracy_metric": "absolute", - "accuracy_scope": "per_value", - "error": { - "op": "zero" - }, - "failure_probability": { - "op": "zero" - } - } - }, - "id": 3, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "timestamp" - }, - "name": "ts", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "value", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "job", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "$promql_series_identity", - "nullable": false, - "table": null - } - ], - "time_index": 0, - "unique_keys": [ - [ - 3, - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "FinalizeExactAccumulator": { - "child": 2 - } - } - } - }, - { - "guarantee": null, - "id": 4, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Sketch": [ - { - "algorithm": "CmsWithHeap", - "params": { - "CmsWithHeap": { - "depth": 2, - "heap_size": 20, - "width": 55 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "name": "state", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [] - }, - "output_state": { - "primitive": "SummaryState", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryAgg": { - "child": 3, - "family": { - "Sketch": [ - { - "algorithm": "CmsWithHeap", - "params": { - "CmsWithHeap": { - "depth": 2, - "heap_size": 20, - "width": 55 - } - } - }, - "PerSubpopulationInstance" - ] - }, - "filter": null, - "grouping": "PerSubpopulationInstance", - "input": { - "item": { - "Column": { - "Named": "job" - } - }, - "weight": { - "Column": "SampleValue" - }, - "weight_domain": { - "kind": "counter_derivative_of_metric", - "metric": "data_total" - } - }, - "reduction": { - "Reduce": [] - } - } - } - } - }, - { - "guarantee": null, - "id": 5, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "utf8" - }, - "name": "job", - "nullable": true, - "table": null - }, - { - "dtype": { - "Plain": "float64" - }, - "name": "topk", - "nullable": false, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 0 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "ASAP": { - "SummaryEstimate": { - "query": { - "TopK": { - "k": 5 - } - }, - "summary_input": 4 - } - } - } - }, - { - "guarantee": null, - "id": 6, - "lifetime": "None", - "output_schema": { - "closed": true, - "fields": [ - { - "dtype": { - "Plain": "float64" - }, - "name": "topk_5", - "nullable": false, - "table": null - }, - { - "dtype": { - "Plain": "utf8" - }, - "name": "job", - "nullable": true, - "table": null - } - ], - "time_index": null, - "unique_keys": [ - [ - 1 - ] - ] - }, - "output_state": { - "primitive": "Raw", - "timing": "query_time" - }, - "payload": { - "NonASAP": { - "Project": { - "child": 5, - "cols": [ - { - "alias": "topk_5", - "expr": { - "Column": 1 - } - }, - { - "alias": "job", - "expr": { - "Column": 0 - } - } - ], - "qualifier": null - } - } - } - } - ], - "roots": [ - 6 - ], - "scalar_roots": [] - }, - "display_name": "Q1 CMS+heap + Rate acc ×30 tumbling windows · ingestion time: Rate acc for Q1, 30 × 10s tumbling windows" - }, - "tumbling_window_retention_ms": { - "1": 300000 - } + "selected": null } From acc47c9aa59aa9ed8b87324a21464cd080c5fc3d Mon Sep 17 00:00:00 2001 From: zzylol <50204836+zzylol@users.noreply.github.com> Date: Sat, 7 Nov 2026 03:54:33 +0000 Subject: [PATCH 06/11] =?UTF-8?q?test(integration):=20=CE=B8=20on=20hand-b?= =?UTF-8?q?uilt=20KLL=20builds,=20unqualified=20SQL=20columns,=20drop=20ma?= =?UTF-8?q?in's=20pre-#970=20plan=20fixture=20(#1207=20PR=209)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tests/kll_tumbling_window_execution.rs | 29 ++--- .../tests/materialized_views.rs | 118 +----------------- .../tests/sql_to_post_asap.rs | 10 +- 3 files changed, 20 insertions(+), 137 deletions(-) diff --git a/crates/integration-tests/tests/kll_tumbling_window_execution.rs b/crates/integration-tests/tests/kll_tumbling_window_execution.rs index 217f15cfe..6d32e68de 100644 --- a/crates/integration-tests/tests/kll_tumbling_window_execution.rs +++ b/crates/integration-tests/tests/kll_tumbling_window_execution.rs @@ -16,8 +16,8 @@ use asap_types::ir::operator::{GroupKeys, Reduction, Source}; use asap_types::ir::physical_export::PhysicalASAPDAG; use asap_types::ir::scalar::ColumnRef; use asap_types::ir::schema::{ - DataType, Field, FieldDataType, GroupingStrategy, Schema, SketchAlgorithm, SketchStatistic, - SummaryUpdate, + DataType, Field, FieldDataType, GroupingStrategy, Schema, SketchAlgorithm, SketchParams, + SketchStatistic, SummaryUpdate, }; use asap_types::ir::{ASAPOp, NonASAPOp, OperatorNode, QueryRoot, TimeRangeKind}; use futures::{executor::block_on, StreamExt}; @@ -31,7 +31,8 @@ use std::{ const TUMBLING_WINDOW_WIDTH_MS: i64 = 60_000; -fn family(_k: u32) -> FieldDataType { +/// A KLL state's field type: the family only; its `k` is the node's θ. +fn family() -> FieldDataType { FieldDataType::Sketch(SketchAlgorithm::Kll, Default::default()) } /// `t(ts, value)`, time index `ts`. @@ -87,7 +88,7 @@ fn fixture() -> Fixture { })); new(asap_types::ir::Operator::ASAP(ASAPOp::SummaryAgg { child: range, - family: family(200), + family: family(), input: SummaryUpdate::column(ColumnRef::Named("value".into())), reduction: Reduction::Reduce(GroupKeys::default()), grouping: GroupingStrategy::PerSubpopulationInstance, @@ -136,6 +137,13 @@ fn fixture() -> Fixture { } } let mut dag = dag; + // θ of each tumbling window's KLL build (k = 200). + for &id in &tumbling_window_ids { + dag.nodes[id as usize].parameters = Some(SketchParams::Kll { + k: 200, + failure_probability: None, + }); + } let views = views_at(&mut dag, &tumbling_window_ids).unwrap(); Fixture { dag, @@ -225,7 +233,7 @@ fn restore(schema: SchemaRef, states: &[Arc]) -> Batch { .iter() .map(|state| { vec![Value::Summary { - family: family(200), + family: family(), state: state.clone(), }] }) @@ -379,17 +387,10 @@ fn five_tumbling_windows_roundtrip_and_shared_merge_runs_once() { } } -/// Relabelled KLL parameters, a view bound in another schema and a missing -/// view fail explicitly. +/// A view bound in another schema and a missing view fail explicitly. #[test] -fn tumbling_windows_reject_parameters_schema_and_missing_binding() { +fn tumbling_windows_reject_schema_and_missing_binding() { let fixture = fixture(); - let schema = schema_of(&fixture.dag, fixture.tumbling_windows[0]); - let wrong = Value::Summary { - family: family(200), - state: Arc::new(DatasketchesKLLAccumulator::new(128)), - }; - assert!(Batch::try_new(schema, vec![vec![wrong]]).is_err()); let compiled = compile(&fixture.dag, &fixture.views, &[fixture.merge]).unwrap(); let missing = try_execute(&compiled, InMemoryDataStore::default(), query_scope()) .err() diff --git a/crates/integration-tests/tests/materialized_views.rs b/crates/integration-tests/tests/materialized_views.rs index 090b07416..381208ca5 100644 --- a/crates/integration-tests/tests/materialized_views.rs +++ b/crates/integration-tests/tests/materialized_views.rs @@ -1,15 +1,7 @@ -//! What a runtime derives from an installable plan's DAG alone: its -//! materialized views and its raw-data retention (issue #970). +//! An installable plan file of an older wire version is refused by its +//! version (issue #970). -use std::collections::HashSet; - -use asap_planner::{ - InstallablePlan, InstallablePlanError, MaterializedViewRefresh, INSTALLABLE_PLAN_WIRE_VERSION, -}; -use asap_types::ir::operator::Source; -use asap_types::ir::physical_export::PhysicalASAPDAG; - -use asap_types::ir::{NonASAPOp, Operator}; +use asap_planner::{InstallablePlan, InstallablePlanError, INSTALLABLE_PLAN_WIRE_VERSION}; use serde_json::Value; @@ -44,107 +36,3 @@ fn a_plan_file_of_an_older_wire_version_is_refused_by_version() { let read = InstallablePlan::from_json(&serde_json::to_string(¤t).unwrap()).unwrap(); assert_eq!(read, current); } - -/// For installable plans captured from `main` before #970 (each the plan -/// file's DAG and its `stored_outputs` field), `materialized_views()` of -/// that DAG, with each view's `retention_ms` on its node, equals -/// `stored_outputs` field for field after the renames: `built_at` → -/// `refresh`, `inputs.stored_outputs` → `inputs.materialized_views`, and -/// each raw-sample window `(time_range_node_id, width_ms, end_offset_ms, -/// scan_node_id)` → `(source of the Scan, end_offset_ms, width_ms)`. The -/// cases cover views refreshed at ingestion and on first read, offset -/// windows, and views read by other views. -#[test] -fn materialized_views_equal_the_stored_outputs_main_listed() { - let path = std::path::Path::new(env!("CARGO_MANIFEST_DIR")) - .join("tests/materialized_view_fixtures/stored_outputs_on_main.json"); - let cases: Vec = serde_json::from_str(&std::fs::read_to_string(path).unwrap()).unwrap(); - assert!(!cases.is_empty()); - let mut refreshes = HashSet::new(); - let mut read_by_views = 0; - for case in &cases { - let name = case["name"].as_str().unwrap(); - let mut dag: PhysicalASAPDAG = serde_json::from_value(case["dag"].clone()).unwrap(); - let stored = case["stored_outputs"].as_array().unwrap(); - for output in stored { - let id = output["node_id"].as_u64().unwrap() as usize; - let node = dag.nodes.iter_mut().find(|node| node.id == id).unwrap(); - node.retention_ms = Some(output["retention_ms"].as_u64().unwrap()); - } - let views = dag.materialized_views().unwrap(); - assert_eq!(views.len(), stored.len(), "{name}"); - let source_of = |scan: u64| match &dag - .nodes - .iter() - .find(|node| node.id == scan as usize) - .unwrap() - .payload - { - Operator::NonASAP(NonASAPOp::Scan { source, .. }) => source.clone(), - other => panic!("{name}: node {scan} is not a Scan: {other:?}"), - }; - for (view, output) in views.iter().zip(stored) { - let refresh = match output["built_at"].as_str().unwrap() { - "ingestion_run" => MaterializedViewRefresh::AtIngestion, - "query_run" => MaterializedViewRefresh::OnFirstRead, - other => panic!("{name}: {other}"), - }; - refreshes.insert(format!("{refresh:?}")); - assert_eq!( - view.node_id as u64, - output["node_id"].as_u64().unwrap(), - "{name}" - ); - assert_eq!(view.refresh(), refresh, "{name}"); - assert_eq!( - serde_json::to_value(view.coverage()).unwrap(), - output["coverage"], - "{name}" - ); - assert_eq!( - view.retention_ms(), - output["retention_ms"].as_u64().unwrap(), - "{name}" - ); - let views_read: Vec = output["inputs"]["stored_outputs"] - .as_array() - .unwrap() - .iter() - .map(|id| id.as_u64().unwrap()) - .collect(); - read_by_views += usize::from(!views_read.is_empty()); - assert_eq!( - view.inputs - .materialized_views - .iter() - .map(|&id| id as u64) - .collect::>(), - views_read, - "{name}" - ); - let windows: Vec<(Source, i64, i64)> = output["inputs"]["raw_sample_windows"] - .as_array() - .unwrap() - .iter() - .map(|window| { - ( - source_of(window["scan_node_id"].as_u64().unwrap()), - window["end_offset_ms"].as_i64().unwrap(), - window["width_ms"].as_i64().unwrap(), - ) - }) - .collect(); - assert_eq!( - view.inputs - .raw_data_windows() - .iter() - .map(|w| (w.source().clone(), w.end_offset_ms(), w.width_ms())) - .collect::>(), - windows, - "{name}" - ); - } - } - assert_eq!(refreshes.len(), 2, "both refresh modes are covered"); - assert!(read_by_views > 0, "a view read by another view is covered"); -} diff --git a/crates/integration-tests/tests/sql_to_post_asap.rs b/crates/integration-tests/tests/sql_to_post_asap.rs index 2d8829f76..6f32bb9d7 100644 --- a/crates/integration-tests/tests/sql_to_post_asap.rs +++ b/crates/integration-tests/tests/sql_to_post_asap.rs @@ -590,10 +590,7 @@ async fn sql_quantile_binds_kll_sketch_over_named_column() { ); assert_eq!( input, - &SummaryUpdate::column(ColumnRef::Qualified { - table: "metrics".into(), - name: "latency".into(), - }), + &SummaryUpdate::column(ColumnRef::Named("latency".into())), "SQL binds the intent's own named input column, not a synthetic sample value" ); assert_eq!( @@ -669,10 +666,7 @@ async fn sql_count_distinct_with_epsilon_binds_hll_over_named_column() { ); assert_eq!( input, - &SummaryUpdate::column(ColumnRef::Qualified { - table: "metrics".into(), - name: "service".into(), - }) + &SummaryUpdate::column(ColumnRef::Named("service".into())) ); assert_eq!(reduction, &Reduction::by(vec![])); } From c2ee82602afb925f94a4a9b612060fec673efc3b Mon Sep 17 00:00:00 2001 From: zzylol <50204836+zzylol@users.noreply.github.com> Date: Sat, 7 Nov 2026 03:55:07 +0000 Subject: [PATCH 07/11] docs(planner-layering): memo components, the worked example and the stage tables over today's memo (#1207 PR 9) --- .../design_docs/proposals/planner-layering.md | 250 ++++++------------ 1 file changed, 85 insertions(+), 165 deletions(-) diff --git a/docs/design_docs/proposals/planner-layering.md b/docs/design_docs/proposals/planner-layering.md index 62dbc1cfb..987616666 100644 --- a/docs/design_docs/proposals/planner-layering.md +++ b/docs/design_docs/proposals/planner-layering.md @@ -271,11 +271,10 @@ lists each stage's input and output types. | Component | Code | What it is | |---|---|---| -| Memo group | `MemoGroup`, numbered by `MemoGroupId` | One distinct logical sub-expression: its logical node, its child groups, the groups that read it (`parent_groups()`) and the queries that reach it (`reached_by_queries()`). Groups are numbered children first; `DagOfLogicalMemoGroups::query_roots` holds each query's root over groups. | -| DAG of logical memo groups | `DagOfLogicalMemoGroups` | Stage 0's groups, before any implementation choice: the workload's logical DAG hash-consed (below). | -| Memo | `Memo` | The groups, each query's root over them, and the candidates for each memo group (`candidates[group]`). Pass 1 creates it from the DAG of logical memo groups; the Pass 2 rules add candidates and groups. | -| Candidate for a memo group | `CandidateForMemoGroup` | One way to implement a group over child groups. `fused_groups`: for a fused computation, the groups it absorbs beyond the group whose candidate it is; empty otherwise. `root_node`: its own nodes, down to the nodes of the groups it reads. `input_groups`: the groups it reads, whose implementations are chosen separately. `origin`: the rule that made it (`OriginOfCandidateForMemoGroup`, below). `accuracy_budget_parts`: the number of equal shares of the accuracy budget its summaries are sized for, 1 for the whole budget and `n` when it is one of `n` approximate inputs of a query. | -| Concrete summary-state group | a `MemoGroup` whose node is a `SummaryAgg` or a `SummaryTumblingWindowChain` | One summary state at one size, or one tumbling-window chain at one layout, that several readers may share. A choice several groups depend on, such as a shared size or a tumbling-window grid, is one concrete group per value, when two or more readers may read that value, and each of them gets a candidate reading that group: of two readers needing a KLL with `k ≥ 345` and `k ≥ 200`, both may read a group `KLL(345)`, and the second may also keep its own private `KLL(200)`. Choosing a value is choosing a group, so the memo has no separate type for such a choice. The other Pass 2 rules add groups too (below). | +| Memo group | `MemoGroup`, numbered by `MemoGroupId` | One distinct logical sub-expression $G$: its `expression` (one operator over its input groups, `Operator`), its `group_properties` (schema, result kind, column lineage, summary coverage, derived from the input groups' properties), the groups that read it (`parent_groups()`), the queries that reach it (`reached_by_queries()`) and its `candidates`. | +| Memo | `Memo` | The groups (`groups()`) and each query's root over them (`query_roots`). Stage 0 builds it without candidates (`memo_of_queries`); Pass 1 adds the initial candidates and the groups they read; the Pass 2 rules add candidates and groups. | +| Candidate for a memo group | `CandidateForMemoGroup`, named by `CandidateForMemoGroupId { group, index_in_group }` | $v = (e_v, p^{\log}_v)$: `expression` $e_v$, one operator over its input groups $G_{v,1}, \dots, G_{v,n}$ (no private nodes); `logical_properties` $p^{\log}_v$ (`parameters` θ from the family's list, `window_layout` ω); `input_requirements`, one $r^{\log}_{c,i}$ per input (`parameter_floor_for_required_accuracy`); `fused_groups`, the groups of the operators a fused candidate computes as one operator; `origin`, the rule that added it (`OriginOfCandidateForMemoGroup`, below). | +| Summary-state group | a `MemoGroup` whose expression is a `SummaryAgg` | One mergeable summary state; its candidates are the state's sizes (one per θ of the family's list) and, from window composition, its tumbling-window layouts. A consumer reads any of them that satisfies its requirement ($\alpha^{\log}$), so sharing a size or a layout is choosing that candidate for every consumer. | **Stage 0: hash-consing.** Hash-consing merges structurally equal nodes into one. It makes no implementation choice, so this section counts it as Stage 0 @@ -284,7 +283,7 @@ one. It makes no implementation choice, so this section counts it as Stage 0 lists `memo_of_queries` with Pass 1. `memo_of_queries` runs `share_common_sub_dags` (`crates/stage0-memo/src/cse.rs`) over the frontends' roots and numbers the shared nodes as groups. Two structurally equal nodes -become one group only when sharing them is legal, that is, when every reader +become one group only when sharing them is legal, that is, when every consumer of the shared node reads the rows it would read alone. Equal nodes are interned children first, so they always read one input, and a node is legal to share when every execution over the same input rows returns the same @@ -306,11 +305,11 @@ made it in `OriginOfCandidateForMemoGroup`. Rules add candidates and keep the ex ones. A rule that shares a producer (a widened scan, a canonical preprocessing, a ranking, a finer aggregate, a summary readout, a summary state or tumbling-window chain) also adds one group for it, with one candidate of the -rule's origin, and gives each reader a candidate that reads that group. +rule's origin, and gives each consumer a candidate that reads that group. | `OriginOfCandidateForMemoGroup` | Added by | Candidates | |---|---|---| -| `Pass1` | `try_populate_pass1` (`pass1/memo_population.rs`) | Every Pass 1 choice of the group's measures: exact, exact accumulator, each summary family and size, and fused computations. Each summary choice comes at every `accuracy_budget_parts` from 1 to the most approximate inputs a query reaching the group has. A fused candidate implements the groups it absorbs only when no other reader needs them; otherwise they stay groups of their own. | +| `Pass1` | `pass1_memo` (`asap-stage1-pass1-per-computation-candidates`) | Every Pass 1 way to compute the group's measures: exact, exact accumulator, each summary family (its state group gets one candidate per θ of the family's list, its readout a group of its own), and fused computations. A fused candidate computes the groups it fuses only when no other consumer needs them; otherwise they stay groups of their own. | | `TumblingWindows` | Rule 1, window composition: `add_local_window_composition` (`stage1-pass2-reuse-candidates/src/memo/window_candidates.rs`) | A build of a mergeable summary state over a range with a tumbling-window layout $\omega$, one per listed $\boldsymbol\theta$ and per width of the gcd closure of the evaluation grids of the queries reaching the state group (each width divides the window). Added to the state group, so every consumer of it sees it. | | `WidenedScans` | Rule 2, scan widening: `add_scan_label_candidates` (`memo/rules/scan_labels.rs`) | The group of a metric's scan widened to the union of its scans' labels, the widened image of every group above that passes labels on, and in each original group a `Project` of its own columns over its widened image. | | `TopKReuse` | Rule 4, exact top-k reuse: `add_topk_candidates` (`memo/rules/topk.rs`) | A top-k over the largest top-k group of the same input and partition. A top-k has no error contract, so only an exact producer gives it an edge. | @@ -330,11 +329,11 @@ instead of whole candidates: | Stage | Over the memo | |---|---| -| 0 | Hash-conses the frontends' roots into groups (`DagOfLogicalMemoGroups`). | +| 0 | Hash-conses the frontends' roots into the groups of a `Memo` without candidates. | | 1, Pass 1 | Emits the candidates for each memo group: exact, exact accumulator, each summary family and size, fused computations. | | 1, Pass 2 | Each rule adds candidates or groups; none copies a consumer. Identical expression is group identity (nothing to add). Window composition: tumbling-window layouts of a state group's builds. Rollup and exact top-k reuse: a candidate that reads another group (a finer grouping or state, a larger top-k). Scan widening: a projection of a metric's scans widened to a shared label set. Then the logical edges, with parameter floors from the error caps and the metric rule. | -| 2 | Chooses each candidate's materialization, once for a group however many parents read it. A scan read through one window is built once; one read through different windows may also be read per reader. | -| 3 | Chooses one candidate per needed group, and costs each candidate's own nodes, per node, given its readers; plan-level charges are added once per plan. A source's retained raw data is a concrete group `raw window(S, H)`, one per distinct lookback `H` of the source's query-time readers (a window plus any offset); its storage of `H` of raw data is charged once when it is chosen (planned). | +| 2 | Expands each logical candidate into one physical candidate per valid (timing, lifetime), once for a candidate however many consumers read it, lists every physical edge with $\alpha^{\log}$ and $\alpha^{\mathrm{phys}}$, and prunes what cannot be built, run or read by a query output. | +| 3 | Selects candidates and edges with the selection MILP (per execution context), costing each selected execution once; plan-level charges are added once per plan. | #### Example: one query through the memo @@ -364,137 +363,59 @@ operands. A unique key is not needed (the PromQL planning path happens to give this output one, series identity and timestamp); an unordered `LIMIT` would stay one group per reader. -**Step 2, Stage 1 Pass 1.** `try_populate_pass1` gives G2 and G4 seven -candidates each. G0, G1, G3 and G5 get one each, their own node. G6 gets -one: `avg` computed from exact sum and count accumulators. The memo now has -19 candidates. - -| Candidate of G2 or G4 | `accuracy_budget_parts` | -|---|---| -| Exact | 1 | -| KLL, `k` 345 (`failure_probability` 0.001) | 1 | -| KLL, `k` 746 (`failure_probability` 0.0005) | 2 | -| DDSketch, `alpha` 0.01 | 1 | -| DDSketch, `alpha` 0.004963 | 2 | -| KLL, `k` 567 (`failure_probability` 1e-7) | 1 | -| KLL, `k` 1184 (`failure_probability` 5e-8) | 2 | - -The query has two approximate inputs (G2 and G4), so each summary comes -sized for the whole accuracy budget and for a half of it. Pass 1 offers each -KLL at two scopes: per value (the first two KLL candidates) and for the -whole result (the last two), where the per-value `failure_probability` is the -target's 0.001 divided over the source's 10,000 series. The memo stands for 7 × 7 = 49 candidate DAGs, all different: -- 16 = 4 × 4 use only `accuracy_budget_parts` 1. -- 33 size at least one operand's summary for half of the budget. - -**Step 3, Stage 1 Pass 2: window composition.** The groups stay the same 7. -G2 and G4 get 120 `TumblingWindows` candidates each (6 summary candidates × 20 tumbling window -widths, from 1 s to 60 s, that divide one minute), 127 candidates each in -all; the memo has 259 candidates. - -**Step 4, the other Pass 2 rules and the concrete summary-state groups** -(rules 2–9 of `generate_logical_asap_memo_candidates`, then -`add_shared_summary_state_groups`): -- 354 groups: the 7 above; 336 `SummaryTumblingWindowChain` groups (7 summary configurations - × 48 tumbling-window layouts, with tumbling-window widths from 20 ms to 60 s); 7 `SummaryAgg` - state groups (the 6 summaries above and a KLL with `k` 1156, - `failure_probability` 1e-7); 2 `SummaryAgg` groups for G6's sum and count - accumulators; and 2 `FinalizeExactAccumulator` groups (G6's sum and count - readouts). -- 1738 candidates. G2 and G4 have 691 each: 10 `Pass1` (the 7 above and - 3 copies of the `accuracy_budget_parts` 1 KLL `k` 567 that the state-configuration - rule rewrote to the shared configurations with `k` 567, 1156 and 1184; each - keeps `accuracy_budget_parts` 1, and the `k` 1184 one composes the same DAG as the - `accuracy_budget_parts` 2 KLL), - 336 `TumblingWindows` and 345 `SharedBuild`. G6 has 3: `Pass1`, `SummaryResult` and - `SharedBuild`. -- Enumeration stops at the former `stage_pipeline`'s default limit of 1,000 candidate - DAGs (`--memo-enumeration-limit`), as it does after step 3. - -| After | Groups | Candidates for memo groups | Candidate DAGs | -|---|---|---|---| -| Stage 0 | 7 | – (each group is its own node) | 1 | -| Stage 1, Pass 1 | 7 | 19 | 49 = 16 whole-budget + 33 budget-share variants | -| Stage 1, Pass 2 window composition | 7 | 259 | over 1,000 (enumeration stopped at its limit) | -| Stage 1, Pass 2 rules and concrete summary-state groups | 354 | 1738 | over 1,000 (enumeration stopped at its limit) | - -These numbers are the production planner's, read from the stage-pipeline -document `tools/dag-viewer/examples/memo-ratio-of-quantiles.json` (made by -the former `stage_pipeline` from `tools/dag-viewer/memo-examples/promql/ratio-of-quantiles-5m.json`, -with accuracy guarantees enforced and the `aws-fargate-us-east-1` cost model). -`crates/integration-tests/tests/memo_enumeration.rs` lowers the query as -production does (with the series-identity column) and reads the memo from the -production run. It asserts the Stage 0 and Pass 1 numbers above. The last -step is Pass 2's memo over the complete tumbling-window-width domain, which -gives 438 groups and 2158 candidates. - -#### Algorithm: memo to candidate DAGs - -The production search never lists the candidate DAGs (see -[How the search uses the memo](#how-the-search-uses-the-memo)). Tests, the DAG -viewer and cross-checks of the search need them: the memo must stand for -the same candidate DAGs as the vector of whole-workload candidates the stage -table describes. `pass2::memo::enumeration` converts a memo after any step into -that vector. - -- **`ChosenCandidatePerMemoGroup`** maps each needed group to one candidate index in - `Memo::candidates[group]`. A group is *needed* when a query's - root is in it or a chosen candidate reads it. -- **`enumerate(memo, limit) -> AllChosenCandidatesPerMemoGroup { all_chosen_candidates, complete }`** lists - every choice, depth first: - 1. Pending: the root groups (the groups with a query's root). - 2. Take a pending group. If the choice already names it, skip it: a group - several chosen candidates read takes one candidate. - 3. For each of the group's candidates: set it in the choice, add its - `children` to the pending groups, and continue from step 2. - 4. When nothing is pending, the choice is complete: record it. If a - further choice is found after `limit` are recorded, stop with - `complete: false`. -- **`build_logical_asap_dags_from_chosen_candidates(memo, chosen_candidates)`** builds one choice's complete DAG for each root - group, as `(MemoGroupId, Rc)` pairs: - 1. A group's DAG is its chosen candidate's `node`, with each child group's - node in it replaced by that child's DAG. A group the choice does not - name takes its first candidate. - 2. Each group's DAG is built once and shared by every candidate that reads - it. - 3. `recompose_guarantees` then runs over the roots, as plan reconstruction - does: every node is rebuilt with the schema and guarantee derived from - the children chosen, not the ones its candidate had alone. - 4. `ErrorBuildingLogicalASAPDagsFromChosenCandidates` reports a candidate index the group does not have - (`NoSuchCandidate`, bad input), a child group whose node is not in the - candidate (`ChildNotInCandidate`, a memo construction bug), or a - DAG whose schemas or guarantees cannot be re-derived (`Recompose`). - -**Why the count is not a product over groups.** - -| Reason | Effect on the count | In the example | -|---|---|---| -| Shared group | A group several chosen candidates read takes one candidate per choice, not one per reader. | G1 is read by G2 and G4 and chosen once. | -| Group needed only under some choices | A group joins the choice only when a chosen candidate reads it. | A `SummaryTumblingWindowChain` group is needed only when a `SharedBuild` candidate reading it is chosen; a choice of `Pass1` candidates needs none of the 347 added groups. | -| Fused candidate | The groups a fused candidate implements are computed inside it and never become pending. | None (the example has no fused computation). | - -In Pass 1 of the example the count happens to be a product, 7 × 7, -because only G2 and G4 have more than one candidate and both read only G1. - -**Correctness.** Every recorded choice composes unless the memo has a -construction bug (`ChildNotInCandidate`). For Pass 1 of the example -each of the 49 choices composes a different DAG. The whole-budget -choices and the whole-workload plans are not the same set: 9 of the 27 -whole-workload plans are memo DAGs (those that give both `quantile 0.5` the -same choice, since the memo has one group for them), and 7 of the 16 -whole-budget choices take the KLL sized for the whole result, which the -whole-workload inventory does not offer. `memo_enumeration.rs` checks this -(also on a three-query workload). `enumerate` counts -choices, not DAGs: two candidates of a group that differ only in what -recomposing re-derives compose equal DAGs. It does not check validity: input -contracts, accuracy at the query roots, Stage 2 legality and Stage 3 -cost stay with the plan validator and the stages, as for whole-workload +**Step 2, Stage 1 Pass 1.** `pass1_memo` adds the groups the summaries +need and the initial candidates: 19 groups, 36 candidates. +- G2 and G4 get three candidates each: the exact `Aggregate`, and a + `Project` over the quantile readout of a KLL state (G8, G11, both over the + KLL state group G7) and of a DDSketch state (G10, G12, over G9). +- G7 and G9 are the summary-state groups over G1; each gets one candidate + per θ of its family's list: KLL `k` 26, 52, 132, 269, 547, 1404, 2863 and + DDSketch `alpha` 0.1, 0.05, 0.02, 0.01, 0.005, 0.002, 0.001. +- G6 gets two: the exact `avg`, and a `Project` over the quotient (G18) of + the finalized exact sum (G13, G15) and count (G14, G16, G17) accumulators. +- Every other group gets one candidate, its own operator. + +**Step 3, Stage 1 Pass 2: window composition.** The groups stay the same 19. +G7 and G9 get 7 `TumblingWindows` candidates each: every θ at the one +tumbling-window width the query allows, 60 s (the greatest common divisor of +the 5 m range and the 1 m evaluation step, at phase 0). The memo has 50 candidates. -**Complexity.** Time is about the number of choices produced times the -number of groups each needs times the pending list each branch copies; -recursion depth is the number of needed groups, and memory holds at most -`limit` choices. +**Step 4, the other Pass 2 rules and the logical edges.** No other rule +applies to one query; the memo stays at 19 groups and 50 candidates. Pass 2 +then sets each consumer's parameter floors from its query's error cap and +lists the logical edges with $\alpha^{\log}$. + +| After | Groups | Candidates for memo groups | +|---|---|---| +| Stage 0 | 7 | – | +| Stage 1, Pass 1 | 19 | 36 (all `Pass1`) | +| Stage 1, Pass 2 window composition | 19 | 50 (+14 `TumblingWindows`) | +| Stage 1, Pass 2 output | 19 | 50 | + +**Stage 2 and Stage 3.** Stage 2 expands the 50 logical candidates into 49 +physical candidates with 160 physical edges, and prunes 201 (timing, +lifetime) alternatives, each with its reason. Stage 3's MILP has 184 +variables and 243 constraints. It selects the exact plan: the whole-result +failure probability 0.001 over 10,000 series is below what any listed size +gives per value (0.01), so no sketch meets constraint (K) (#1207 PR 8, spec +question 1). + +These numbers are the production planner's, read from `asap_planner +--format text` over `tools/dag-viewer/memo-examples/promql/ratio-of-quantiles-5m.json` +(guarantees enforced, the default cost inputs); `--format json` gives the +same memo to the viewer. + +#### Selection over the memo + +No code lists the candidate DAGs a memo stands for. Stage 3 selects over the +memo directly: the selection MILP chooses physical candidates ($x$) and the +edge serving each consumer input ($y$), so a group several selected +consumers read is chosen once per execution context, and a group joins the +plan only when a selected candidate reads it. `asap_planner --format text` +and the viewer document show the memo after each step, every physical edge +with $\alpha$ and its rejection reason, the selected candidates, and each +stage's pruned candidates. #### How the search uses the memo @@ -533,11 +454,10 @@ candidates is in `crates/stage3-plan-selection/src/` (`select.rs`, `execution_co | Step | Entry point | Path | |---|---|---| -| Stage 0 | `memo_of_queries` → `DagOfLogicalMemoGroups`, `MemoGroup`, `MemoGroupId` | `stage0.rs` (the types: `asap_types::stages`); hash-consing is `share_common_sub_dags` in `stage0/cse.rs` | -| Pass 1 | `pass1_memo` → `PerComputationLogicalMemoCandidates` (its `Memo` and its `PrunedCandidate`s; `ComputationTarget` is Pass 1's working type, in `asap_types::stages`), the one entry: inside it, the computation targets (walking the memo groups), the summaries the deployment does not support and those no query can use pruned, the candidates attached to the groups (`try_populate_pass1`), then the accuracy-scoped sizes | `pass1/logical_memo_candidates.rs`; `pass1/per_computation_candidates.rs`; `pass1/memo_population.rs` | -| Memo types | `DagOfLogicalMemoGroups`, `PerComputationLogicalMemoCandidates`, `HowToComputeAggregateMeasure`, Pass 1's working types (`ComputationTarget`, `FusedComputation`, `HavingEntry`, `HavingPlacement`), `Memo`, `CandidateForMemoGroup`, `OriginOfCandidateForMemoGroup`, `LogicalASAPMemoCandidates`, `CandidateGenerationTimeout`, `root_groups`, `queries_rooted_at` | `crates/types/src/stages/` (`asap_types::stages`) | -| Pass 2 | `generate_logical_asap_memo_candidates` → `LogicalASAPMemoCandidates`, from Pass 1's output. It calls in this order: 1. window composition for every legal tumbling-window width (`add_local_window_composition`); 2–9. the rules in `pass2/memo/rules/`: scan widening, summary inputs, top-k reuse, finer aggregate, rollup, window rollup, summary results, state configurations; 10. `add_shared_summary_state_groups`, the shared builds | `pass2/logical_memo_candidates.rs` (`LogicalASAPMemoCandidates` itself: `asap_types::stages`); `pass2/memo/window_candidates.rs`, `pass2/memo/rules/`, `pass2/memo/state_groups.rs`, `pass2/memo/shared_configurations.rs` | -| Memo to candidate DAGs | `enumerate`, `build_logical_asap_dags_from_chosen_candidates`, `ChosenCandidatePerMemoGroup`, `AllChosenCandidatesPerMemoGroup`, `ErrorBuildingLogicalASAPDagsFromChosenCandidates` | `pass2/memo/enumeration.rs` (re-exported at the crate root) | +| Stage 0 | `memo_of_queries` → `Memo` (groups without candidates), `MemoGroup`, `MemoGroupId` | `crates/stage0-memo/src/lib.rs` (the types: `asap_types::stages`); hash-consing through `Memo::find_or_add_group` | +| Pass 1 | `pass1_memo` → `Memo` with the initial candidates and the groups they read (`ComputationTarget` and `HowToComputeAggregateMeasure` are Pass 1's working types, in `asap_types::stages`); a summary the deployment does not support is not offered | `crates/stage1-pass1-per-computation-candidates/src/` (`logical_memo_candidates.rs`, `per_computation_candidates.rs`, `realization.rs`) | +| Memo types | `Memo`, `MemoGroup`, `GroupProperties`, `CandidateForMemoGroup`, `CandidateForMemoGroupId`, `CandidateExpression`, `LogicalProperties`, `WindowLayout`, `LogicalRequirements`, `OriginOfCandidateForMemoGroup`, `LogicalEdge`, `LogicalASAPMemoCandidates`, Pass 1's working types (`ComputationTarget`, `FusedComputation`, `HavingEntry`, `HavingPlacement`, `HowToComputeAggregateMeasure`), `root_groups`, `queries_rooted_at` | `crates/types/src/stages/` (`asap_types::stages`) | +| Pass 2 | `generate_logical_asap_memo_candidates` → `LogicalASAPMemoCandidates` (`memo`, `edges`), from Pass 1's output. It calls in this order: 1. window composition for the legal tumbling-window widths (`pass2_local_window_composition`); then `pass2_after_local_window_composition`: 2. scan widening, 4. top-k reuse, 5. finer aggregate, 6. rollup, and the logical edges with the parameter floors from the error caps (`logical_edges_with_capped_floors`) | `crates/stage1-pass2-reuse-candidates/src/` (`logical_memo_candidates.rs`, `memo/window_candidates.rs`, `memo/rules/`, `logical_edges.rs`, `parameter_floors.rs`) | | Production memo build and search | The facade's `run_planning` builds the DAG of logical memo groups and runs Pass 1 (`pass1_memo`) once; then `generate_logical_asap_memo_candidates`, `generate_physical_asap_memo_candidates` and Stage 3's `select_plan`, once each, and builds the selected plan with Stage 2's `AssignmentRealizer::realize`. Behind `select_plan`: the selection MILP over execution contexts (#1204), `execution_cost.rs` and `milp/` | `crates/planner/src/run.rs`; `crates/stage3-plan-selection/src/select.rs` | ## ASAPPlanner Detailed Design: Planning Stages and their decisions/Strategies @@ -575,7 +495,7 @@ The sections below describe each stage. | Stage | Prunes (`PruneReason`) | Recorded in | `candidate` | |---|---|---|---| | 0. Frontends | nothing: a query that cannot be lowered fails planning with an error | — | — | -| 1, Pass 1 | what the measure or the deployment cannot compute: `RequiresExact`, `NullableAvgInput`, `NoRelationalCountSketchRealization`, `UnsupportedByDeployment`, `QuantileOutsideUnitInterval`, `TopKHeapOverOneRowPerItem`; and, only when the deployment's accuracy model and evidence cannot accept an output without its guarantee, a summary no query reading it can use: `NoErrorBoundForQueryTarget` | `PerComputationLogicalMemoCandidates::pruned_candidates`, each on its aggregate's memo group | the way to compute the measure (`HowToComputeAggregateMeasure`) | +| 1, Pass 1 | nothing it records: a way to compute a measure that the measure or the deployment cannot compute is not offered (e.g. a summary the deployment does not support, a heap over one row per item) | — | — | | 1, Pass 2 | nothing: it only adds candidates | — | — | | 2 | what cannot be built, run or read by a query output: `PerEntityAggregateNotExecutable` (an exact per-entity `Aggregate` the executor has no kernel for), `NoIngestionPipeline` (ingestion time over data at rest or of unknown arrival), `RawDataNotRetained` (a query-time scan of raw data the deployment does not keep), `QueryTimeResultsNotRetained` (query time, materialized across evaluations, when the deployment keeps no query-time results), `AcrossEvaluationsWithoutWindowLayout`, `InputHasNoBuildableProducer`, `ReachesNoQueryOutput` | `PhysicalASAPMemoCandidates::pruned_candidates`, each on its logical candidate's memo group | `PhysicalCandidateKey { logical_candidate_id, physical_properties }` | | 3 | valid candidates that lose, and the checks only a whole plan can make (accuracy, latency, cluster capacity) | its own `RejectionCause` | — | @@ -584,13 +504,14 @@ Stage 2's key names what a pruned candidate would have been, since emitted candidates are renumbered after pruning and a pruned one has no `PhysicalCandidateId`. Stage 2 emits one candidate per logical candidate, timing and lifetime, and makes no copies of it, so (`logical_candidate_id`, -`physical_properties`) is unique. Pass 1's accuracy pruning -(`NoErrorBoundForQueryTarget`) runs inside Pass 1's entry, before the -candidates are attached to the memo groups, and records a `PrunedCandidate` -like every other Pass 1 prune. - -`asap_planner` writes both lists as `pruned_candidates` under -`stage1_logical_asap_optimization` and `stage2_physical_asap_optimization`, +`physical_properties`) is unique. Accuracy is not pruned in Stage 1: a +summary whose guarantee no query can use has no admissible edge +($\alpha^{\log} = 0$, the metric rule or the parameter floor), and constraint +(K) checks each query's composed accuracy in Stage 3. + +`asap_planner` writes Stage 2's list as `pruned_candidates` under +`stage2_physical_asap_optimization` and Stage 3's under +`stage3_plan_selection` (with `dominated_by`); `--format text` prints both, and the viewer's Memo view lists a group's entries in its group panel. ### Stage inputs and outputs: whole-workload candidates and memo @@ -605,11 +526,10 @@ the memo path's entry points. | Stage | Whole-workload candidates: input → output | Memo: input → output | Entry point (memo path) | |---|---|---|---| | 0. Frontends | Query text, language → one logical root per query, carrying its accuracy target | Same: a `QueryRoot` per query | `lower_promql_query_workload`, `lower_sql_dialect` (`asap-frontend-*`); `plan_installable` (`asap_planner`) runs the frontends and Stages 1–3 on the user input | -| 1, Pass 1 | Logical roots; the deployment's supported summaries → the Pass 1 inventory, every computation's candidates (`PerComputationCandidates`, now Pass 1's crate-private working form) | Logical roots → `DagOfLogicalMemoGroups` (hash-consed `MemoGroup`s); with the Pass 1 inventory, less the summaries the deployment does not support and those no query reading them can use → `PerComputationLogicalMemoCandidates`: the `Memo` (each group's `CandidateForMemoGroup`s, with the accuracy-scoped sizes) and the pruned candidates (`PrunedCandidate`) | `memo_of_queries`, `pass1_memo` | -| 1, Pass 2 | One Pass 1 choice per computation → that choice rewritten by each sharing rule, every subset of sharing choices (no longer in the code) | `Memo`; the entries' recurrence and range steps → the same memo with each rule's candidates added to the groups they implement | the memo rules (`pass2/memo/rules/`), `pass2::memo::window_candidates` | -| 1, concrete summary-state groups | (part of Pass 2) | `Memo` → the memo with concrete summary-state groups: one group per shared size or tumbling-window layout that readers can read | `add_shared_summary_state_groups`, Pass 2's last step; the Pass 2 output is `LogicalASAPMemoCandidates` (`generate_logical_asap_memo_candidates`) | -| 2 | One whole-workload logical candidate; entries (recurrence, predictability), `DataWorkload`, query-time retention → its physical candidates, one per physical properties assignment | `LogicalASAPMemoCandidates`; entries, `DataWorkload`, query-time and raw-data retention → `PhysicalASAPMemoCandidates`: every operator node of every candidate with each allowed timing and lifetime (one physical candidate each, no copies), the producers of each input, reader constraints (each applied to every selected run of its candidate), and the pruned candidates (`PrunedCandidate`) | `generate_physical_asap_memo_candidates` (`asap_stage2_physical_optimization`) | -| 3 | Every physical candidate; accuracy targets, accuracy model and evidence, cost model → one plan | `PhysicalASAPMemoCandidates`; entries, `DataWorkload`, `AccuracyCheckInputs`, `CostInputs`, Stage 2's realizer → `Selection`: the selected plan (`selected_dag`, a `DagOfSelectedCandidates`: one node per run of a candidate, so a candidate recomputed by two readers or shared as two instances over different inputs is two nodes, with an edge per input), its cost, the accepted accuracy per query and the search report | `select_plan` (`asap_stage3_plan_selection`); the facade (`run_planning`, output `PlanningRun`) runs it once and builds the selected `PhysicalWorkloadPlan` with `AssignmentRealizer::realize`, one plan node per selected node | +| 1, Pass 1 | Logical roots; the deployment's supported summaries → the Pass 1 inventory, every computation's candidates (`PerComputationCandidates`, now Pass 1's crate-private working form) | Logical roots → a `Memo` of hash-consed `MemoGroup`s (Stage 0); with the deployment's supported summaries → the `Memo` with each group's initial `CandidateForMemoGroup`s, one per θ of a summary family's list | `memo_of_queries`, `pass1_memo` | +| 1, Pass 2 | One Pass 1 choice per computation → that choice rewritten by each sharing rule, every subset of sharing choices (no longer in the code) | `Memo`; the entries' recurrence, range steps and accuracy targets → `LogicalASAPMemoCandidates`: the memo with each rule's candidates added to the groups they implement, each consumer's parameter floors, and the logical edges with $\alpha^{\log}$ | `generate_logical_asap_memo_candidates` (`asap_stage1_pass2_reuse_candidates`) | +| 2 | One whole-workload logical candidate; entries (recurrence, predictability), `DataWorkload`, query-time retention → its physical candidates, one per physical properties assignment | `LogicalASAPMemoCandidates`; `DataWorkload`, query-time and raw-data retention → `PhysicalASAPMemoCandidates`: each logical candidate with each valid timing and lifetime (one physical candidate each, no copies), every physical edge with $\alpha^{\log}$ and $\alpha^{\mathrm{phys}}$ (`edges()`, `admissible_edges_into`), and the pruned candidates (`PrunedCandidate`) | `generate_physical_asap_memo_candidates` (`asap_stage2_physical_optimization`) | +| 3 | Every physical candidate; accuracy targets, accuracy model and evidence, cost model → one plan | `PhysicalASAPMemoCandidates`; entries, `DataWorkload`, `AccuracyCheckInputs`, `CostInputs`, Stage 2's realizer → `Selection`: the selected plan (`selected_dag`, a `DagOfSelectedCandidates`: one node per run of a candidate, so a candidate recomputed by two consumers or shared as two instances over different inputs is two nodes, with an edge per input), its cost, the accepted accuracy per query and the search report | `select_plan` (`asap_stage3_plan_selection`); the facade (`run_planning`, output `PlanningRun`) runs it once and builds the selected `PhysicalWorkloadPlan` with `AssignmentRealizer::realize`, one plan node per selected node | | 4. Execution | The selected `PhysicalASAPDAG` → query results | Same: an `InstallablePlan` (`{dag, query_texts}`) → query results | The deployment runtime installs the `InstallablePlan` | What changed with the memo: @@ -617,13 +537,13 @@ What changed with the memo: number is the sum of each group's choices instead of their product. Only choices several groups depend on, such as a shared state's size, are made jointly. -- Stage 2 is no longer a pass over whole candidate DAGs. It implements every - operator node of every candidate for a memo group once, enumerates each - node's timings and lifetimes, and prunes what cannot be built, - used or kept; Stage 3 selects among what remains. -- The concrete summary-state groups are expanded by Stage 3's search today, - through the Stage 1 functions above. A planned change moves this expansion - into Stage 1, so that Stage 3 receives a complete memo and only selects. +- Stage 2 is no longer a pass over whole candidate DAGs. It expands every + candidate for a memo group once into its timings and lifetimes, lists the + physical edges, and prunes what cannot be built, run or read by a query + output; Stage 3 selects among what remains. +- Stage 1 hands Stage 2 a complete memo: a summary state's sizes and + tumbling-window layouts are candidates of its state group, so Stage 3 + only selects. ### 0. Language-specific frontends From 4d905c4925149b9b01e3cb75df4a53e818010c95 Mon Sep 17 00:00:00 2001 From: zzylol <50204836+zzylol@users.noreply.github.com> Date: Sat, 7 Nov 2026 04:01:20 +0000 Subject: [PATCH 08/11] =?UTF-8?q?feat(dag-viewer):=20read=20asap-stage-pip?= =?UTF-8?q?eline/v2:=20memo=20candidates=20with=20=CE=B8,=20=CF=89=20and?= =?UTF-8?q?=20floors,=20physical=20edges=20with=20=CE=B1,=20Stage=202=20an?= =?UTF-8?q?d=20Stage=203=20pruned;=20delete=20old-format=20readers=20(#120?= =?UTF-8?q?7=20PR=209)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/devtools/tests/viewer_contract.rs | 53 +- docs/user_guide_docs/asap-planner.md | 6 +- tools/dag-viewer/README.md | 62 +- tools/dag-viewer/app.js | 63 +- tools/dag-viewer/enumeration.js | 236 ------- tools/dag-viewer/enumeration.test.mjs | 157 ----- tools/dag-viewer/index.html | 18 +- tools/dag-viewer/memo.js | 316 ++++++---- tools/dag-viewer/memo.test.mjs | 150 ++--- tools/dag-viewer/stages.js | 580 +++--------------- tools/dag-viewer/stages.test.mjs | 137 +---- .../test-fixtures/memo-enumeration-small.json | 1 - .../dag-viewer/test-fixtures/memo-small.json | 2 +- tools/dag-viewer/test_viewer.py | 195 ++---- 14 files changed, 480 insertions(+), 1496 deletions(-) delete mode 100644 tools/dag-viewer/enumeration.js delete mode 100644 tools/dag-viewer/enumeration.test.mjs delete mode 100644 tools/dag-viewer/test-fixtures/memo-enumeration-small.json diff --git a/crates/devtools/tests/viewer_contract.rs b/crates/devtools/tests/viewer_contract.rs index 0783f2e05..24afaa599 100644 --- a/crates/devtools/tests/viewer_contract.rs +++ b/crates/devtools/tests/viewer_contract.rs @@ -320,13 +320,10 @@ fn wire_name(value: T) -> String { } /// The viewer knows every `MaterializedViewRefresh` -/// (`materialized_views[].refresh`) and every Stage 3 `RejectionCause`, and -/// splits the causes into failed checks and losses as -/// `RejectionCause::failed_a_check` does. +/// (`materialized_views[].refresh`). #[test] -fn viewer_knows_every_view_refresh_and_rejection_cause() { +fn viewer_knows_every_view_refresh() { use asap_planner::MaterializedViewRefresh as R; - use asap_stage3_plan_selection::RejectionCause as C; let refreshes = [R::AtIngestion, R::OnFirstRead]; for refresh in refreshes { // A new variant fails to compile here until it is listed above. @@ -341,50 +338,4 @@ fn viewer_knows_every_view_refresh_and_rejection_cause() { .map(wire_name) .collect::>() ); - - let causes = [ - C::AccuracyTargetMissed, - C::CountMinWeightsNotProvenNonNegative, - C::NoAccuracyGuarantee, - C::LatencyBoundExceeded, - C::LatencyOverRepeatInterval, - C::OverClusterCapacity, - C::Infeasible, - C::CostNotRepresentable, - C::Costlier, - C::Slower, - C::MoreMemory, - C::TiedLostOnEnumerationOrder, - ]; - for cause in causes { - match cause { - C::AccuracyTargetMissed - | C::CountMinWeightsNotProvenNonNegative - | C::NoAccuracyGuarantee - | C::LatencyBoundExceeded - | C::LatencyOverRepeatInterval - | C::OverClusterCapacity - | C::Infeasible - | C::CostNotRepresentable - | C::Costlier - | C::Slower - | C::MoreMemory - | C::TiedLostOnEnumerationOrder => {} - } - } - let failed: BTreeSet = causes - .into_iter() - .filter(|c| c.failed_a_check()) - .map(wire_name) - .collect(); - let lost: BTreeSet = causes - .into_iter() - .filter(|c| !c.failed_a_check()) - .map(wire_name) - .collect(); - assert_eq!(stages_js_strings("const FAILED_CHECK_CAUSES = ["), failed); - assert_eq!( - stages_js_strings("const REJECTION_CAUSES = FAILED_CHECK_CAUSES.concat(["), - lost - ); } diff --git a/docs/user_guide_docs/asap-planner.md b/docs/user_guide_docs/asap-planner.md index 957a6c545..e28bbf0f9 100644 --- a/docs/user_guide_docs/asap-planner.md +++ b/docs/user_guide_docs/asap-planner.md @@ -46,7 +46,7 @@ asap_planner (--workload )... --run-until stage0|stage1_pass1|stage1_pass2 | `--format text\|json` | `text` (the default) for reading; `json` for an `asap-stage-pipeline/v2` document. | | `--out ` | Write to this file instead of standard output. | | `--sql-catalog-table ` | One SQL table a SQL workload reads, as `{"name", "columns": [{"name", "type", "nullable"}], "time_index"}`. Repeat it per table. | -| `--cost-inputs ` | The cost model and its prices (`CostInputs` JSON). The files in `tools/dag-viewer/cost-inputs/` are ready to use. Without it, the built-in usage-over-time model is used. Stage 3 prices only usage-over-time models (`aws-fargate-us-east-1.json` is one); a provisioned- or cluster-capacity model ends Stage 3 with an `UnsupportedCostModel` error. | +| `--cost-inputs ` | The cost model and its costs (`CostInputs` JSON). The files in `tools/dag-viewer/cost-inputs/` are ready to use. Without it, the built-in usage-over-time model is used. Stage 3 costs only usage-over-time models (`aws-fargate-us-east-1.json` is one); a provisioned- or cluster-capacity model ends Stage 3 with an `UnsupportedCostModel` error. | | `--deployment-capabilities ` | What the deployment can do, e.g. `{"raw_data_retained": true, "query_time_results_retained": false}`. Set it to match your deployment. | | `--ignore-accuracy-guarantees` | Accept candidates without an accuracy guarantee. By default each query's accuracy requirement is enforced. | @@ -61,7 +61,7 @@ under the stage that failed. | `--run-until` | Prints, after the stages before it | | --- | --- | | `stage0` | The frontends' query DAGs and their memo groups. | -| `stage1_pass1` | Stage 1 Pass 1: each computation's candidates, and the candidates pruned with their reason. | +| `stage1_pass1` | Stage 1 Pass 1: each computation's candidates. | | `stage1_pass2` | Stage 1 Pass 2: the memo after local window composition (a candidate for every legal tumbling-window width), then the memo after the sharing rules, which Stage 2 implements. | | `stage2` | Stage 2: the physical candidates and the ones pruned. | | `stage3` | Stage 3: the selected plan, its cost per node, each query's accepted accuracy and the search status. | @@ -73,7 +73,7 @@ plan is the best over all of them. The example below plans the checked-in [range-heavy workload](../../tools/dag-viewer/memo-examples/promql/rangeheavy-t8-t5-1h.json) -with raw data retained and AWS Fargate prices: +with raw data retained and AWS Fargate costs: ```sh echo '{"raw_data_retained": true, "query_time_results_retained": false}' > capabilities.json diff --git a/tools/dag-viewer/README.md b/tools/dag-viewer/README.md index 51795c2f0..7eb243007 100644 --- a/tools/dag-viewer/README.md +++ b/tools/dag-viewer/README.md @@ -9,10 +9,10 @@ document shows: - **Stage 1**, the logical candidates of the memo and the selected plan's logical DAG (`L1`); - **Stage 2**, the selected plan as an executable physical DAG (`P1`), with - each node's timing and lifetime, and the physical candidates Stage 2 - pruned; + each node's timing and lifetime, every physical candidate with its + producer edges, and the physical candidates Stage 2 pruned; - **Stage 3**, the selected plan's cost, the accuracy it accepted per query, - its materialized views and the search report. + its materialized views, the candidates it pruned and the search report. To run it, see [RUNNING.md](RUNNING.md). @@ -37,9 +37,8 @@ To run it, see [RUNNING.md](RUNNING.md). distinct values per label, distinct values per label set) and the queries whose text names it, plus the deployment capabilities the run planned with. -- **Stage 3 · plans by cost**: the selected plan, then the Stage 2 pruned - candidates and the Stage 1 candidates that did not compose, each with its - reason. The header counts the candidates, names the search and its report +- **Stage 3 · plans by cost**: the selected plan, then the Stage 1 + candidates that did not compose, each with its error. The header counts the candidates, names the search and its report (status, cost lower bound, MILP size, times), says whether accuracy guarantees were enforced or ignored, shows the run's warnings, and says why Stage 1 or plan selection failed when it did. @@ -47,7 +46,7 @@ To run it, see [RUNNING.md](RUNNING.md). Stage 0, the Stage 1 candidate, and its Stage 2 plan with each node's timing (also its fill: green at ingestion time, orange at query time) and Stage 3 cost (`× n` when a node that is not materialized is computed once - per reader). Each lane is the whole workload's DAG, so a node shared by + per consumer). Each lane is the whole workload's DAG, so a node shared by several queries appears once and says `shared ×n`. Summary builds print their configuration (for example `CmsWithHeap · depth 7 · heap 100 · width 272`) and whether there is one per group, one per series, or one @@ -74,9 +73,18 @@ To run it, see [RUNNING.md](RUNNING.md). and the queries it is the root of; its candidates sit inside it, bordered by origin, marked `✚ new` when the step added them. A group with more than 12 candidates is drawn as one node per origin with its count; - clicking a count lists them. On the last tab the selected plan's - candidates are filled green with `✓ selected`. Clicking a candidate or a - group shows its nodes, children, parents and queries in the details. + clicking a count lists them. Each candidate box shows its parameters θ + and window layout ω. On the last tab the selected plan's candidates are + filled green with `✓ selected` (a group may have several, one per + execution context). Clicking a group shows its operator, children, + parents, queries, its candidates with θ, ω and per-input parameter + floors, and the candidates Stage 2 (`G[] (timing, + lifetime): reason`) and Stage 3 (`C: reason`, with the candidate + that dominates it) pruned there; Pass 1 records none. Clicking a + candidate also lists, on the last tab, its Stage 2 physical candidates + `C (timing, lifetime)` and, per input, every producer edge: `✓` when + admissible, `✗` with the rejection otherwise, `selected` when the + selected plan uses it. - **Details**: click a node for its operator, the queries reaching it, timing, lifetime, output schema, guarantee and Stage 3 cost; click an edge for its schema and data state. @@ -86,8 +94,38 @@ a file on the page, or with `?doc=` for a file served next to `index.html`. A `PlanningWorkload` JSON file (one with a `query_workload`) is planned by the local server instead, with the default deployment capabilities and cost model. The viewer checks a document before showing -it and lists the problems instead when a check fails. Documents written by -earlier versions of the planner devtools remain readable. +it and lists the problems instead when a check fails. It reads only +`asap-stage-pipeline/v2` documents; write an older one again with +`asap_planner`. + +## The memo and pruned-candidate fields + +The fields the Memo view reads (`asap_planner`'s header comment describes +the whole document): + +- `memo.steps[].groups[]`: `id`, `label`, `operator` (the group's + expression as `Operator` JSON, children as group ids), `children`, + `parents`, `queries`, `roots_of`, `candidate_count`, + `candidate_count_by_origin`, `candidates_capped` and `candidates`; +- each candidate (one operator over its input groups): `index`, `origin` + (`pass1`, `summary_input`, `tumbling_windows`, `rollup`, `top_k_reuse`, + `widened_scans`), `added`, `label`, `operator`, `children` (its input + groups), `fused_groups`, `logical_properties` (`parameters` θ as + `SketchParams` JSON or null, `window_layout` ω, e.g. + `{"tumbling": {"width_ms": 10000}}`, or null) and `input_requirements` + (one `{parameter_floor_for_required_accuracy}` per input); +- `memo.selected_candidates`: per group id of the last step, the indices of + the selected plan's candidates there; absent without a selected plan; +- `stage2_physical_asap_optimization.physical_candidates[]`: `id`, `group`, + `index_in_group`, `properties` (`timing`, `lifetime`) and `inputs`, each + with its `group`, `requirement` and `edges` (`producer`, + `satisfies_logical_requirement`, `satisfies_physical_requirement`, + `rejection`, null when admissible, and `selected`); +- `stage2_physical_asap_optimization.pruned_candidates[]`: `group`, + `index_in_group`, `properties` and `reason`; +- `stage3_plan_selection.pruned_candidates[]`: `group`, `candidate` (a + physical candidate id), `reason` and `dominated_by` (a physical candidate + id or null). ## Workload sets diff --git a/tools/dag-viewer/app.js b/tools/dag-viewer/app.js index 8318af9ba..b94fb6650 100644 --- a/tools/dag-viewer/app.js +++ b/tools/dag-viewer/app.js @@ -153,26 +153,21 @@ function statusChip(status) { if (status === 'selected') return '✓ selected'; - if (status === 'reference selected') return 'reference pricer\'s pick'; - if (status === 'costlier') return 'valid · costlier'; - if (status === 'rejected') return '✗ invalid'; if (status === 'not judged') return 'not judged'; - if (status === 'not kept') return '✗ invalid · not kept'; return `${esc(status)}`; } function rowKey(row) { - if (row.status === 'not kept') return `X:${row.id}`; - return `${row.status === 'pruned' || row.status === 'composition error' ? 'L' : 'P'}:${row.id}`; + return `${row.status === 'composition error' ? 'L' : 'P'}:${row.id}`; } function renderRanking() { const pressed = current.physical ? `P:${current.physical}` : `L:${current.logical}`; - $('rank').innerHTML = rows.map((r) => `
  • `).join(''); - $('rank').querySelectorAll('button:not([disabled])').forEach((b) => b.addEventListener('click', () => { + $('rank').querySelectorAll('button').forEach((b) => b.addEventListener('click', () => { const [kind, id] = [b.dataset.key.slice(0, 1), b.dataset.key.slice(2)]; if (kind === 'P') selectPhysical(id); else selectLogical(id); @@ -180,9 +175,8 @@ } // Choose Stage 1 candidate `id`: show its physical plan when it has one; - // a pruned or uncomposed candidate has none, so Stage 2 is cleared. + // an uncomposed candidate has none, so Stage 2 is cleared. function selectLogical(id) { - pressEnumeratedRow(null); const physical = doc.stage2_physical_asap_optimization.candidates.find((p) => p.from_logical === id); if (physical) { selectPhysical(physical.id); return; } showLogical(id); @@ -200,32 +194,15 @@ if (c.dag) { render(1, c.dag, false, null); const physicalFor = doc.stage2_physical_asap_optimization.candidates.filter((p) => p.from_logical === id).map((p) => p.id); - const pruned = (doc.stage2_physical_asap_optimization.pruned || []).find((p) => p.from_logical === id); $('lane1-meta').innerHTML = `${esc(c.display_name)} · ${c.dag.nodes.length} nodes · ` + - (pruned ? `pruned by Stage 2: ${esc(pruned.reason)}` : `physical plan ${physicalFor.map((p) => `${esc(p)}`).join(', ') || 'none'}`); + `physical plan ${physicalFor.map((p) => `${esc(p)}`).join(', ') || 'none'}`; } else { clearLane(1, ''); $('lane1-meta').innerHTML = `${esc(c.display_name)} · composition error: ${esc(c.error)}`; } } - // Draw enumerated DAG `id` of `memo.enumeration` (enumeration.js) in - // lane 1; the document has no physical plan for it. - function showEnumerated(id, dag, description, perQueryDag) { - current = { logical: null, physical: null }; - $('pick1').value = ''; - $('pick2').value = ''; - // Its roots are its root groups; drawn per query when they map to queries. - if (perQueryDag) render(1, perQueryDag, false, null); - else render(1, dag, false, null, dag.roots.map((_, k) => `root group #${k + 1}`)); - $('lane1-meta').innerHTML = `enumerated DAG ${esc(id)} · ${esc(description)} · ${dag.nodes.length} nodes` + - (perQueryDag ? '' : ' · roots not matched to queries'); - clearLane(2, 'no physical plan for an enumerated DAG'); - renderRanking(); - } - function selectPhysical(id) { - pressEnumeratedRow(null); current.physical = id; $('pick2').value = id; const c = physicalById.get(id); @@ -233,10 +210,9 @@ const cost = selection.cost_per_candidate[id]; render(2, c.dag, true, cost ? cost.per_node : null); const row = rows.find((r) => rowKey(r) === `P:${id}`); - const priced = rows.filter((r) => r.rank !== null).length; $('lane2-meta').innerHTML = `${esc(c.display_name)} · from ${esc(c.from_logical)} · ` + - (cost && cost.cost_per_second !== null ? `total ${fmtCost(cost.cost_per_second)} ${esc(cost.cost_unit.replace(/_/g, ' '))} · rank ${row.rank} of ${priced}` - : cost ? 'no price (cost model 3)' : 'not priced') + + (cost && cost.cost_per_second !== null ? `total ${fmtCost(cost.cost_per_second)} ${esc(cost.cost_unit.replace(/_/g, ' '))}` + : cost ? 'no cost (cost model 3)' : 'not costed') + ` · ${statusChip(row.status)}` + (row.accepted ? ` · ${esc(row.accepted)}` : '') + (cost && cost.usage ? `
    Stage 3 usage: ${esc(usageText(cost.usage))}` : ''); @@ -250,10 +226,8 @@ // Show one stage document; `source` names it, `story` explains it. function showDocument(data, source, story) { - upgradeTumblingWindowNames(data); - upgradeMemoSteps(data); fillStagesNotRun(data); - const errors = validateStagePipeline(data).concat(validateMemoEnumeration(data)); + const errors = validateStagePipeline(data); if (!errors.length && typeof validateMemo === 'function') errors.push(...validateMemo(data.memo, data.workload.queries.length)); if (errors.length) throw new Error(errors.slice(0, 3).join('; ')); doc = data; @@ -280,11 +254,10 @@ const req = [acc && `accuracy ${acc}`, r.max_latency_ms && `latency ≤ ${r.max_latency_ms} ms`, schedule].filter(Boolean).join(' · '); return `
    ${esc(q.id)} · ${esc(q.language)}${esc(q.text)}${req ? `${esc(req)}` : ''}
    `; }).join(''); - const count = (status) => rows.filter((r) => r.status === status).length; $('counts').innerHTML = `Candidates per stage: 1 logical DAG → ${logical.combinations} logical ASAP` + (logical.capped ? ` (${logical.candidates.length} shown)` : '') + ` → ${physicalById.size} physical` + - (selection.selected_candidate ? ` → 1 selected (${count('rejected')} invalid, ${count('costlier')} valid but costlier)` : ' → none selected'); + (selection.selected_candidate ? ' → 1 selected' : ' → none selected'); $('rank-meta').textContent = [stageCandidateHeader(doc), accuracyGuaranteesText(doc), searchText(doc)].filter(Boolean).join(' · '); renderDataWorkload(); const sel = selection.selected_candidate ? selection.cost_per_candidate[selection.selected_candidate] : null; @@ -307,8 +280,6 @@ renderRanking(); } renderMaterializedViews(); - renderMemoSearch(); - renderEnumeration(doc, showEnumerated); if (window.MemoView) window.MemoView.show(doc, queryIds); } @@ -368,22 +339,6 @@ }); } - // Joint-search metrics; historical documents may additionally list shared units. - function renderMemoSearch() { - const view = memoSearchView(doc); - $('memoPanel').hidden = !view; - if (!view) return; - $('memo-meta').textContent = [memoSummaryText(view.summary), - view.scansWidened ? 'selected plan: the scan-widening variant of the solution' : ''].filter(Boolean).join(' · '); - $('memoShared').innerHTML = view.sharedUnits.length - ? table(['shared unit', 'kind', 'readers', 'queries', 'threshold', 'runs', 'strictest reader'], - view.sharedUnits.map((u) => `${esc(u.unit)}${esc(u.kind)}${esc(u.readers.join(', '))}${esc(u.queries.join(', '))}` + - `${esc(u.threshold)}${esc(u.schedule)}${esc(u.strictest)}`).join('')) - : (view.summary && view.summary.status - ? 'Inspect the selected execution DAG for shared producer nodes.' - : 'No shared units recorded.'); - } - // Show the selected plan in the Stage 2 lane and select its node `id`. function selectStage2Node(id) { const selected = selectionTable(doc).selected_candidate; diff --git a/tools/dag-viewer/enumeration.js b/tools/dag-viewer/enumeration.js deleted file mode 100644 index 3fe25a6ce..000000000 --- a/tools/dag-viewer/enumeration.js +++ /dev/null @@ -1,236 +0,0 @@ -// The Enumerated DAGs panel: `memo.enumeration` of an asap-stage-pipeline/v2 -// document, the complete candidate DAGs the memo stands for, as `asap_planner` -// enumerated and composed them. The document holds each listed choice's DAG -// as its `roots` in the memo's node table (`memo.nodes`), so the page -// composes nothing: a clicked row's DAG (memoNodeDag) is drawn in the Stage 1 -// lane by app.js. The checks and the rows are DOM-free (enumeration.test.mjs); -// renderEnumeration fills the panel. Reads memoNodeDag and uniqueIds from -// stages.js. - -// Memo steps in pipeline order, with the names the header uses. -const MEMO_STEP_NAMES = { stage0: 'Stage 0', pass1: 'Pass 1', pass2_local_window_composition: 'local window composition', pass2: 'Pass 2' }; - -function memoStepName(step) { - return MEMO_STEP_NAMES[step] || step; -} - -const enumerationIsObject = (value) => !!value && typeof value === 'object' && !Array.isArray(value); -const enumerationIsCount = (value) => Number.isInteger(value) && value >= 0; - -// A `ChosenCandidatePerMemoGroup`: group id (a string of digits) → candidate index. -function isChosenCandidatePerMemoGroup(choice) { - return enumerationIsObject(choice) && Object.entries(choice).every(([group, index]) => /^\d+$/.test(group) && enumerationIsCount(index)); -} - -// Every shape problem of `memo.enumeration`, as readable strings; empty when -// the document has none (a document without `memo` has none). -function validateMemoEnumeration(doc) { - const memo = doc && doc.memo; - if (memo === undefined) return []; - if (!enumerationIsObject(memo)) return ['memo must be an object']; - const enumeration = memo.enumeration; - if (enumeration === undefined) return []; - const at = 'memo.enumeration'; - if (!enumerationIsObject(enumeration)) return [`${at} must be an object`]; - const errors = []; - const perStep = enumeration.per_step; - if (!enumerationIsObject(perStep)) errors.push(`${at}.per_step must be an object`); - else { - Object.entries(perStep).forEach(([step, entry]) => { - if (!entry || !enumerationIsCount(entry.count) || typeof entry.complete !== 'boolean') errors.push(`${at}.per_step.${step} needs a count and complete`); - }); - } - if (typeof enumeration.step !== 'string' || !enumerationIsObject(perStep) || !(enumeration.step in perStep)) { - errors.push(`${at}.step must name a step of per_step`); - } - if (!Number.isInteger(enumeration.limit) || enumeration.limit < 1) errors.push(`${at}.limit must be a positive integer`); - const priced = enumeration.priced; - if (priced !== undefined && priced !== null && !(enumerationIsObject(priced) && enumerationIsCount(priced.count) && enumerationIsCount(priced.cheaper_than_selected) - && (priced.selected_cost_per_second === null || Number.isFinite(priced.selected_cost_per_second)))) { - errors.push(`${at}.priced must be null or {count, cheaper_than_selected, selected_cost_per_second}`); - } - if (!Array.isArray(enumeration.choices)) return errors.concat(`${at}.choices must be an array`); - uniqueIds(enumeration.choices, `${at}.choices`, errors); - const counted = enumerationIsObject(perStep) && perStep[enumeration.step]; - if (counted && enumerationIsCount(counted.count) && enumeration.choices.length > counted.count) { - errors.push(`${at}: ${enumeration.choices.length} choices listed but per_step.${enumeration.step} counts ${counted.count}`); - } - enumeration.choices.forEach((entry, index) => { - if (!enumerationIsObject(entry)) return; - const where = `${at}.choices[${index}]`; - if (!isChosenCandidatePerMemoGroup(entry.choice)) errors.push(`${where}.choice must map group ids to candidate indices`); - // A choice that does not compose has no DAG but its error. Otherwise one - // root per root group (which need not be one per query), each an index - // into memo.nodes. - if (entry.roots === null) { - if (typeof entry.error !== 'string' || !entry.error) errors.push(`${where}: needs roots or an error`); - } else if (!Array.isArray(entry.roots) || entry.roots.length === 0 - || !entry.roots.every((id) => Number.isInteger(id) && id >= 0 && Array.isArray(memo.nodes) && id < memo.nodes.length)) { - errors.push(`${where}.roots must index memo.nodes`); - } - ['accuracy_budget_parts_1', 'selected'].forEach((field) => { - if (typeof entry[field] !== 'boolean') errors.push(`${where}.${field} must be true or false`); - }); - // Present only when the run priced the enumerated DAGs. - ['valid', 'cheaper_than_selected'].forEach((field) => { - if (entry[field] !== undefined && typeof entry[field] !== 'boolean') errors.push(`${where}.${field} must be true or false`); - }); - if (entry.rejection !== undefined && entry.rejection !== null && typeof entry.rejection !== 'string') errors.push(`${where}.rejection must be a string or null`); - if (entry.cost_per_second !== undefined && entry.cost_per_second !== null && !Number.isFinite(entry.cost_per_second)) { - errors.push(`${where}.cost_per_second must be a number or null`); - } - }); - return errors; -} - -// "49", or "≥ 1000" when the count stopped at the limit. -function enumerationCountText(entry, limit) { - return entry.complete ? String(entry.count) : `≥ ${limit}`; -} - -// The panel's content, or null for a document without `memo.enumeration`: -// `counts` ("Stage 0: 1 · Pass 1: 49 · Pass 2: ≥ 1000"), `listing` (what the -// rows are), `priced` (the pricing summary, "" when not priced), and one row -// per listed choice. A row's `changes` are the groups whose candidate differs -// from `selected_choice` (every group of the choice when there is none), each -// with the candidate's origin and label when the enumerated step's memo -// lists that candidate. Both choices are sparse: a group a choice does not -// name takes candidate 0. `selected_choice` is over the last memo step; when -// the enumerated step is an earlier one, only the row's own groups are -// compared and `against` says the comparison crosses steps. -function enumerationView(doc) { - const memo = doc && doc.memo; - const enumeration = memo && memo.enumeration; - if (!enumeration) return null; - const known = Object.keys(MEMO_STEP_NAMES); - const steps = Object.keys(enumeration.per_step) - .sort((a, b) => (known.indexOf(a) + 1 || known.length + 1) - (known.indexOf(b) + 1 || known.length + 1)); - const counts = steps.map((step) => `${memoStepName(step)}: ${enumerationCountText(enumeration.per_step[step], enumeration.limit)}`).join(' · '); - const total = enumeration.per_step[enumeration.step]; - const name = memoStepName(enumeration.step); - const shown = enumeration.choices.length; - const listing = total.complete && shown === total.count - ? `listed: all ${shown} ${name} DAGs` - : `listed: the first ${shown} of ${enumerationCountText(total, enumeration.limit)} ${name} DAGs`; - const priced = enumeration.priced - ? `${enumeration.priced.count} priced · ${enumeration.priced.cheaper_than_selected} cheaper than the selected plan` + - (enumeration.priced.selected_cost_per_second === null ? '' : ` (${Number(enumeration.priced.selected_cost_per_second.toPrecision(4))})`) - : ''; - - const selected = enumerationIsObject(memo.selected_choice) ? memo.selected_choice : null; - const step = (Array.isArray(memo.steps) ? memo.steps : []).find((s) => s && s.step === enumeration.step); - const candidateOf = (group, index) => { - const g = step && Array.isArray(step.groups) ? step.groups.find((x) => x && String(x.id) === group) : null; - return g && Array.isArray(g.candidates) ? g.candidates.find((c) => c && c.index === index) : null; - }; - const memoSteps = Array.isArray(memo.steps) ? memo.steps.filter((s) => s && typeof s.step === 'string') : []; - const lastStep = memoSteps.length ? memoSteps[memoSteps.length - 1].step : steps[steps.length - 1]; - const sameStep = enumeration.step === lastStep; - const rows = enumeration.choices.map((entry) => { - const groups = new Set(Object.keys(entry.choice)); - if (selected && sameStep) Object.keys(selected).forEach((group) => groups.add(group)); - const changes = [...groups] - .filter((group) => !selected || (entry.choice[group] ?? 0) !== (selected[group] ?? 0)) - .sort((a, b) => Number(a) - Number(b)) - .map((group) => { - // A group of the selected choice this DAG does not read. - if (!(group in entry.choice)) return { group: Number(group), index: null, origin: null, label: null }; - const index = entry.choice[group]; - const candidate = candidateOf(group, index); - return { group: Number(group), index, origin: candidate ? candidate.origin : null, label: candidate ? candidate.label : null }; - }); - return { - id: entry.id, - changes, - text: changes.length - ? changes.map((c) => (c.index === null ? `G${c.group} not read` - : `G${c.group} → #${c.index}${c.label ? ` ${c.label}` : ''}${c.origin ? ` (${c.origin})` : ''}`)).join(' · ') - : 'the selected choice', - nodes: entry.roots ? memoNodeDag(memo.nodes, entry.roots).nodes.length : null, - error: entry.roots ? null : entry.error, - accuracyBudgetParts1: entry.accuracy_budget_parts_1, - selected: entry.selected, - priced: 'valid' in entry, - valid: entry.valid, - rejection: entry.rejection || null, - cost: typeof entry.cost_per_second === 'number' ? entry.cost_per_second : null, - cheaper: entry.cheaper_than_selected === true, - }; - }); - const against = !selected - ? `every group's candidate (no selected choice${memo.selected_choice_unavailable ? `: ${memo.selected_choice_unavailable}` : ''})` - : sameStep ? 'groups whose candidate differs from the selected plan’s choice' - : `groups whose candidate differs from the selected plan’s choice, which is over the ${memoStepName(lastStep)} memo: its group ids and candidate indices may not match ${name}'s, and “selected” is not meaningful`; - // `build_logical_asap_dags_from_chosen_candidates` writes one root per root group, in increasing group id: root k - // is the k-th group with `roots_of`, the query positions it answers. Null - // when the enumerated step's memo is not in the document. - const rootQueries = step && Array.isArray(step.groups) - ? step.groups.filter((g) => g && Array.isArray(g.roots_of) && g.roots_of.length).sort((a, b) => a.id - b.id).map((g) => g.roots_of) : null; - return { counts, listing, priced, against, rows: sameStep ? rows : rows.map((r) => ({ ...r, selected: false })), rootQueries }; -} - -// `dag` with one root per workload query (query q's root is the root of the -// group whose `roots_of` holds q), the shape the lanes draw; null when -// `rootQueries` does not cover every query with one root each. -function enumeratedDagPerQuery(dag, rootQueries, queryCount) { - if (!rootQueries || rootQueries.length !== dag.roots.length) return null; - const roots = new Array(queryCount).fill(null); - rootQueries.forEach((queries, k) => queries.forEach((q) => { if (q >= 0 && q < queryCount) roots[q] = dag.roots[k]; })); - return roots.every(Boolean) ? { ...dag, roots } : null; -} - -// The panel's state: the document's view, the row drawn in the Stage 1 -// lane, and app.js's function that draws an enumerated DAG there. -const enumerationPanel = { doc: null, view: null, pressed: null, draw: null, bound: false }; - -function enumerationRowHtml(row, pressed) { - const esc = (s) => String(s).replace(/[&<>"]/g, (c) => ({ '&': '&', '<': '<', '>': '>', '"': '"' }[c])); - const chips = [ - row.selected ? '✓ selected' : '', - row.cheaper ? 'cheaper than selected' : '', - row.priced && row.valid === false ? '✗ invalid' : '', - row.priced && row.valid === true && !row.selected && !row.cheaper ? 'valid' : '', - row.accuracyBudgetParts1 ? '' : 'accuracy budget parts > 1', - ].join(''); - const cost = row.cost === null ? (row.priced ? '—' : '') : String(Number(row.cost.toPrecision(4))); - return `
  • `; -} - -// Mark row `id` (null: none) as the one the Stage 1 lane draws. -function pressEnumeratedRow(id) { - const state = enumerationPanel; - state.pressed = id; - if (state.view) document.getElementById('enumRows').innerHTML = state.view.rows.map((row) => enumerationRowHtml(row, id)).join(''); -} - -// Fill the panel for `doc` (hidden without `memo.enumeration`); a click on a -// row calls `draw(id, dag, description, perQueryDag)` (perQueryDag: `dag` -// with one root per query, or null when the roots cannot be matched to -// queries) and marks the row. -function renderEnumeration(doc, draw) { - const $ = (id) => document.getElementById(id); - const state = enumerationPanel; - state.doc = doc; - state.view = enumerationView(doc); - state.draw = draw; - $('enumPanel').hidden = !state.view; - if (!state.view) { state.pressed = null; $('enumRows').innerHTML = ''; return; } - $('enum-meta').textContent = [state.view.counts, state.view.listing, state.view.priced, `each row: ${state.view.against}`].filter(Boolean).join(' · '); - pressEnumeratedRow(null); - if (state.bound) return; - state.bound = true; - // One listener for every document: rows are rewritten on each load. - $('enumRows').addEventListener('click', (event) => { - const button = event.target && event.target.closest ? event.target.closest('button[data-id]') : null; - if (!button || !state.view) return; - const choice = state.doc.memo.enumeration.choices.find((c) => c.id === button.dataset.id); - if (!choice.roots) return; - const row = state.view.rows.find((r) => r.id === button.dataset.id); - const dag = memoNodeDag(state.doc.memo.nodes, choice.roots); - state.draw(choice.id, dag, row.text, - enumeratedDagPerQuery(dag, state.view.rootQueries, state.doc.workload.queries.length)); - pressEnumeratedRow(choice.id); - }); -} diff --git a/tools/dag-viewer/enumeration.test.mjs b/tools/dag-viewer/enumeration.test.mjs deleted file mode 100644 index 900ccb28e..000000000 --- a/tools/dag-viewer/enumeration.test.mjs +++ /dev/null @@ -1,157 +0,0 @@ -// Node tests of enumeration.js (no DOM): the checks of `memo.enumeration` and -// the Enumerated DAGs panel's rows, over a hand-written priced memo on #509 -// Example 1 (test-fixtures/memo-enumeration-small.json). Run from the -// repository root: `node --test tools/dag-viewer/enumeration.test.mjs`. -import { test } from 'node:test'; -import assert from 'node:assert/strict'; -import { readFileSync } from 'node:fs'; -import vm from 'node:vm'; - -const here = new URL('.', import.meta.url); -const context = vm.createContext({ console: { warn() {} } }); -for (const file of ['node-style.js', 'stages.js', 'enumeration.js']) { - vm.runInContext(readFileSync(new URL(file, here), 'utf8'), context, { filename: file }); -} -const call = (name, ...args) => JSON.parse(JSON.stringify(context[name](...args))); -const read = (path) => JSON.parse(readFileSync(new URL(path, here), 'utf8')); -// enumeration.js reads only a document's `memo`: Example 1's two queries -// stand for the rest of the document. -const example1 = { workload: { queries: [{ id: 'q1' }, { id: 'q2' }] } }; -const priced = () => ({ ...structuredClone(example1), ...read('test-fixtures/memo-enumeration-small.json') }); -// The same memo as a run without --price-enumerated writes it. -const unpriced = () => { - const doc = priced(); - doc.memo.enumeration.priced = null; - doc.memo.enumeration.choices.forEach((c) => { delete c.valid; delete c.rejection; delete c.cost_per_second; delete c.cheaper_than_selected; }); - return doc; -}; - -test('documents without memo, or memo without enumeration, have no enumeration problems', () => { - assert.deepEqual(call('validateMemoEnumeration', example1), []); - assert.deepEqual(call('validateMemoEnumeration', { ...example1, memo: { steps: [] } }), []); - assert.equal(call('enumerationView', example1), null); -}); - -test('the priced and unpriced fixtures are valid', () => { - assert.deepEqual(call('validateMemoEnumeration', priced()), []); - assert.deepEqual(call('validateMemoEnumeration', unpriced()), []); -}); - -test('each broken field of memo.enumeration is reported', () => { - const cases = { - 'memo must be an object': (d) => { d.memo = []; }, - 'per_step.pass1 needs a count and complete': (d) => { d.memo.enumeration.per_step.pass1.complete = 'yes'; }, - 'step must name a step of per_step': (d) => { d.memo.enumeration.step = 'pass9'; }, - 'limit must be a positive integer': (d) => { d.memo.enumeration.limit = 0; }, - 'choices must be an array': (d) => { d.memo.enumeration.choices = {}; }, - 'duplicate id E1': (d) => { d.memo.enumeration.choices[1].id = 'E1'; }, - '5 choices listed but per_step.pass1 counts 4': (d) => { d.memo.enumeration.choices.push({ ...d.memo.enumeration.choices[0], id: 'E5' }); }, - 'choices[0].choice must map group ids to candidate indices': (d) => { d.memo.enumeration.choices[0].choice = { G7: 0 }; }, - 'choices[0].roots must index memo.nodes': (d) => { d.memo.enumeration.choices[0].roots = [d.memo.nodes.length]; }, - 'choices[1].roots must index memo.nodes': (d) => { delete d.memo.enumeration.choices[1].roots; }, - 'choices[0].accuracy_budget_parts_1 must be true or false': (d) => { delete d.memo.enumeration.choices[0].accuracy_budget_parts_1; }, - 'choices[0].cheaper_than_selected must be true or false': (d) => { d.memo.enumeration.choices[0].cheaper_than_selected = 1; }, - 'choices[0].cost_per_second must be a number or null': (d) => { d.memo.enumeration.choices[0].cost_per_second = 'cheap'; }, - 'choices[0].rejection must be a string or null': (d) => { d.memo.enumeration.choices[0].rejection = 3; }, - 'priced must be null or': (d) => { d.memo.enumeration.priced = { count: 4 }; }, - }; - for (const [message, breakIt] of Object.entries(cases)) { - const doc = priced(); - breakIt(doc); - const errors = call('validateMemoEnumeration', doc); - assert.ok(errors.some((e) => e.includes(message)), `${message}: got ${JSON.stringify(errors)}`); - } -}); - -test('the header counts every step, with ≥ and the limit when the count stopped', () => { - const view = call('enumerationView', unpriced()); - assert.equal(view.counts, 'Stage 0: 1 · Pass 1: 4'); - assert.equal(view.listing, 'listed: all 4 Pass 1 DAGs'); - assert.equal(view.priced, ''); - const capped = unpriced(); - capped.memo.enumeration.per_step.pass1 = { count: 1000, complete: false }; - capped.memo.enumeration.per_step.pass2 = { count: 1000, complete: false }; - const cappedView = call('enumerationView', capped); - assert.equal(cappedView.counts, 'Stage 0: 1 · Pass 1: ≥ 1000 · Pass 2: ≥ 1000'); - assert.equal(cappedView.listing, 'listed: the first 4 of ≥ 1000 Pass 1 DAGs'); -}); - -test('choices are sparse: a group either choice leaves out takes candidate 0', () => { - const doc = unpriced(); - doc.memo.selected_choice = { 7: 1 }; - const choices = doc.memo.enumeration.choices; - choices[0].choice = { 3: 0, 7: 0 }; - delete choices[1].choice[2]; - choices[2].choice = { 7: 2, 2: 0 }; - const rows = call('enumerationView', doc).rows; - assert.equal(rows[0].text, 'G7 → #0 exact accumulator (pass1)'); - assert.equal(rows[1].text, 'the selected choice'); - assert.equal(rows[2].text, 'G7 → #2 CountSketch+heap (pass1)'); -}); - -test('a group of the selected choice that a DAG does not read is named', () => { - const doc = unpriced(); - doc.memo.selected_choice = { 7: 1, 9: 2 }; - assert.equal(call('enumerationView', doc).rows[1].text, 'G9 not read'); -}); - -test('a selected choice over a later step than the enumerated one is flagged', () => { - const doc = unpriced(); - doc.memo.steps.push({ step: 'pass2', title: 'Pass 2', groups: [] }); - doc.memo.enumeration.per_step.pass2 = { count: 1000, complete: false }; - doc.memo.selected_choice = { 7: 1, 9: 2 }; - const view = call('enumerationView', doc); - assert.match(view.against, /over the Pass 2 memo/); - assert.ok(view.rows.every((r) => !r.selected)); - // Only the row's own groups are compared across steps. - assert.equal(view.rows[1].text, 'the selected choice'); -}); - -test('a row names the groups whose candidate differs from the selected choice, with origin and label', () => { - const rows = call('enumerationView', unpriced()).rows; - assert.deepEqual(rows.map((r) => r.id), ['E1', 'E2', 'E3', 'E4']); - assert.equal(rows[0].text, 'G7 → #0 exact accumulator (pass1)'); - assert.equal(rows[1].text, 'the selected choice'); - assert.equal(rows[1].selected, true); - assert.equal(rows[3].text, 'G7 → #3 CMS+heap shared build (shared_build)'); - assert.equal(rows[3].accuracyBudgetParts1, false); - assert.ok(rows.every((r) => !r.priced && r.cost === null && !r.cheaper)); -}); - -test('a choice that does not compose has its error instead of a DAG and is not clickable', () => { - const doc = unpriced(); - doc.memo.enumeration.choices[3].roots = null; - assert.ok(call('validateMemoEnumeration', doc).some((e) => e.includes('choices[3]: needs roots or an error'))); - doc.memo.enumeration.choices[3].error = 'cycle'; - assert.deepEqual(call('validateMemoEnumeration', doc), []); - const row = call('enumerationView', doc).rows[3]; - assert.equal(row.error, 'cycle'); - assert.match(context.enumerationRowHtml(row, null), /disabled>.*does not compose: cycle/); -}); - -test('without the step in memo.steps a row names only the candidate index', () => { - const doc = unpriced(); - doc.memo.steps = []; - assert.equal(call('enumerationView', doc).rows[2].text, 'G7 → #2'); -}); - -test('without a selected choice a row names every group of its choice', () => { - const doc = unpriced(); - doc.memo.selected_choice = null; - doc.memo.selected_choice_unavailable = 'no plan selected'; - const view = call('enumerationView', doc); - assert.equal(view.rows[0].changes.length, 8); - assert.match(view.against, /no plan selected/); -}); - -test('a priced row carries its cost, validity and whether it is cheaper than the selected plan', () => { - const view = call('enumerationView', priced()); - assert.equal(view.priced, '4 priced · 1 cheaper than the selected plan (2)'); - const byId = Object.fromEntries(view.rows.map((r) => [r.id, r])); - assert.deepEqual([byId.E3.cost, byId.E3.valid, byId.E3.cheaper], [1.5, true, true]); - assert.deepEqual([byId.E4.cost, byId.E4.valid, byId.E4.rejection], [null, false, 'accuracy_target_missed']); - const html = context.enumerationRowHtml(view.rows[2], null); - assert.match(html, /class="cheaper"/); - assert.match(html, /cheaper than selected/); - assert.doesNotMatch(context.enumerationRowHtml(view.rows[0], null), /cheaper/); -}); diff --git a/tools/dag-viewer/index.html b/tools/dag-viewer/index.html index 7eb4bc9c0..e54f0dc11 100644 --- a/tools/dag-viewer/index.html +++ b/tools/dag-viewer/index.html @@ -82,11 +82,6 @@ .chip { font-size: 11px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; border-radius: 999px; padding: 1px 8px; white-space: nowrap; } .chip.selected { color: var(--ok); background: var(--ok-soft); } .chip.invalid { color: var(--bad); background: var(--bad-soft); } -.chip.costlier { color: var(--warn); background: var(--warn-soft); } -/* Enumerated DAGs: a row cheaper than the selected plan is red. */ -#enumRows { max-height: 360px; } -.rank button.cheaper { border-color: var(--bad); background: var(--bad-soft); } -.chip.cheaper { color: var(--bad); border: 1px solid var(--bad); } /* Stage 0, 1 and 2 stack top to bottom, each as wide as the page allows. */ .lanes { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; min-width: 0; } .lane .panel-head { align-items: center; } @@ -140,7 +135,7 @@

    ASAPPlanner Stage Viewer

    -

    The planner's stages for one workload: the query-language frontends lower the queries into one logical DAG (Stage 0), Pass 1 and Pass 2 propose logical ASAP candidates (Stage 1), each becomes a physical candidate (Stage 2), and Stage 3 checks every physical candidate, prices the valid ones and selects the cheapest.

    +

    The planner's stages for one workload: the query-language frontends lower the queries into one logical DAG (Stage 0), Pass 1 and Pass 2 propose logical ASAP candidates (Stage 1), each becomes a physical candidate (Stage 2), and Stage 3 checks every physical candidate, costs the valid ones and selects the cheapest.

    @@ -186,11 +181,6 @@

    ASAPPlanner Stage Viewer

    -
    Stage 1

    Logical ASAP candidate

    @@ -214,11 +204,6 @@

    ASAPPlanner Stage Viewer

    -
    data source @@ -244,7 +229,6 @@

    ASAPPlanner Stage Viewer

    - diff --git a/tools/dag-viewer/memo.js b/tools/dag-viewer/memo.js index d13aa801b..31efbc4ee 100644 --- a/tools/dag-viewer/memo.js +++ b/tools/dag-viewer/memo.js @@ -1,27 +1,29 @@ // The Memo view of the Stage Viewer: the document's optional `memo` section // (written by `asap_planner`) drawn after each memo step, one tab per -// step. Each memo group is a box holding its implementation candidates; an -// edge goes from a candidate to each child group it reads. The functions up -// to `memoViewController` are DOM-free (memo.test.mjs and test_viewer.py run -// them headless); the controller draws them on the page. `memo.enumeration` -// is not read here. +// step. Each memo group is a box holding its candidates; an edge goes from +// a candidate to each input group it reads. The functions up to +// `memoViewController` are DOM-free (memo.test.mjs and test_viewer.py run +// them headless); the controller draws them on the page. // -// The section: `nodes`, the node table every step shares (each distinct -// logical node once, children as indices into the table; memoNodeDag in -// stages.js rebuilds the flat DAG below any of them), and, per step: -// `{step, title, groups: [{id, label, children, parents, queries, roots_of, -// node, candidate_count, candidate_count_by_origin, candidates_capped, -// candidates: [{index, implements, children, origin, accuracy_budget_parts, added, -// label, node, group_of_node}]}]}`, where `node` is a table index and -// `group_of_node` maps table indices to child groups; `selected_choice` -// maps a group id (string) of the last step to the selected plan's -// candidate index, or is null with `selected_choice_unavailable` saying why. - -// Outside the section, each stage's `pruned_candidates` -// (`stage1_logical_asap_optimization` for Pass 1, -// `stage2_physical_asap_optimization` for Stage 2) lists what it removed, -// each entry on its memo `group` with a `reason`; the group panel lists a -// group's entries of both. +// The section, per step: `{step, title, groups: [{id, label, operator, +// children, parents, queries, roots_of, candidate_count, +// candidate_count_by_origin, candidates_capped, candidates: [{index, +// origin, added, label, operator, children, fused_groups, +// logical_properties: {parameters, window_layout}, input_requirements: +// [{parameter_floor_for_required_accuracy}]}]}]}`. A group's `operator` +// is its expression and a candidate's `operator` one operator, both with +// group ids as children; a candidate's `children` are its input groups, +// one input requirement each. `selected_candidates` maps a group id +// (string) of the last step to the indices of the selected plan's +// candidates there (one per execution context using the group); it is +// absent when no plan was selected. +// +// Outside the section, the memo view reads Stage 2's `physical_candidates` +// (each a memo candidate's `group` and `index_in_group` with physical +// `properties` and, per input, every producer edge) and the pruned +// candidates of Stage 2 (`group`, `index_in_group`, `properties`, `reason`) +// and Stage 3 (`group`, `candidate`, `reason`, `dominated_by`, physical +// candidate ids). Pass 1 records no pruned candidates. // Memo steps in pipeline order; a step production does not run is omitted. const MEMO_STEPS = ['stage0', 'pass1', 'pass2_local_window_composition', 'pass2']; @@ -30,8 +32,6 @@ const MEMO_STEPS = ['stage0', 'pass1', 'pass2_local_window_composition', 'pass2' // border color of its candidates (mid tones, readable in both themes). const MEMO_ORIGINS = { pass1: { name: 'Pass1', color: '#4f7bd9' }, - shared_build: { name: 'SharedBuild', color: '#2e9e6b' }, - summary_result: { name: 'SummaryResult', color: '#a36ad6' }, summary_input: { name: 'SummaryInput', color: '#d0842a' }, tumbling_windows: { name: 'TumblingWindows', color: '#d4524c' }, rollup: { name: 'Rollup', color: '#1d9fb0' }, @@ -44,31 +44,85 @@ const MEMO_ORIGINS = { const MEMO_COLLAPSE_ABOVE = 12; const memoIsIndexList = (ids) => Array.isArray(ids) && ids.every((id) => Number.isInteger(id) && id >= 0); +const memoIsObject = (value) => !!value && typeof value === 'object' && !Array.isArray(value); + +// `SketchParams` JSON, e.g. `{"Kll": {"k": 269}}`, as "Kll(k=269)". +function memoSketchParamsText(parameters) { + return Object.entries(parameters).map(([family, fields]) => (fields && typeof fields === 'object' + ? `${family}(${Object.entries(fields).map(([k, v]) => `${k}=${compactWire(v)}`).join(', ')})` : compactWire({ [family]: fields }))).join(', '); +} + +// A candidate's parameters θ as "θ Kll(k=269)"; null without any. +function memoParametersText(parameters) { + return parameters ? `θ ${memoSketchParamsText(parameters)}` : null; +} + +// A candidate's window layout ω (`{"tumbling": {"width_ms": 10000}}`) as +// "ω tumbling 10 s"; null without one. +function memoWindowLayoutText(layout) { + if (!layout) return null; + return layout.tumbling ? `ω tumbling ${durationText(layout.tumbling.width_ms)}` : `ω ${compactWire(layout)}`; +} -// Whether `id` is an index into the node table `nodes`. -const memoIsNode = (nodes, id) => Number.isInteger(id) && id >= 0 && id < nodes.length; - -// One line per entry of a stage's `pruned_candidates` on group `group`: -// Pass 1's `candidate`, or Stage 2's operator with its timing, -// lifetime and scope copy; then the reason. 'none' without any. -function memoPrunedText(entries, group) { - const lines = (Array.isArray(entries) ? entries : []).filter((p) => p && p.group === group).map((p) => { - const what = 'candidate' in p ? p.candidate - : `node ${p.operator_node} ${p.operator} ${p.timing} ${JSON.stringify(p.lifetime)}`; - return `${what}: ${p.reason}`; +// A candidate's per-input parameter floors, one "G: floor" each +// ("none" for an input without one). +function memoFloorTexts(candidate) { + return candidate.children.map((group, i) => { + const floor = candidate.input_requirements[i].parameter_floor_for_required_accuracy; + return `G${group}: ${floor ? memoSketchParamsText(floor) : 'none'}`; }); - return lines.length ? lines.join('; ') : 'none'; } -// The checks of `memo.steps` and `memo.selected_choice` against the format -// above, as messages ([] when it holds or the document has no memo). -// `queryCount` is the workload's query count. +// Physical properties `{timing, lifetime}` as "query_time, OneEvaluation(Memory)". +function memoPropertiesText(properties) { + return `${properties.timing}, ${compactWire(properties.lifetime)}`; +} + +// The pruned candidates of memo group `group`, one line each: Stage 2's +// as "G[] (timing, lifetime): reason", Stage 3's as +// "C: reason" with "dominated by C". +function memoPrunedLines(doc, group) { + const stage2 = ((doc.stage2_physical_asap_optimization || {}).pruned_candidates || []).filter((p) => p.group === group); + const stage3 = ((doc.stage3_plan_selection || {}).pruned_candidates || []).filter((p) => p.group === group); + return { + stage2: stage2.map((p) => `G${p.group}[${p.index_in_group}] (${memoPropertiesText(p.properties)}): ${p.reason}`), + stage3: stage3.map((p) => `C${p.candidate}: ${p.reason}${p.dominated_by === null ? '' : ` (dominated by C${p.dominated_by})`}`), + }; +} + +// The physical candidates Stage 2 made of candidate `index` of memo group +// `group`: each `C (timing, lifetime)`, Stage 3's pruning of it, and +// per input every producer edge, "✓ C" when admissible or +// "✗ C: rejection", marked "selected" when the selected plan +// uses it. +function memoPhysicalCandidates(doc, group, index) { + const pruned3 = new Map(((doc.stage3_plan_selection || {}).pruned_candidates || []).map((p) => [p.candidate, p])); + return ((doc.stage2_physical_asap_optimization || {}).physical_candidates || []) + .filter((c) => c.group === group && c.index_in_group === index) + .map((c) => { + const p = pruned3.get(c.id); + return { + title: `C${c.id} (${memoPropertiesText(c.properties)})`, + pruned: p ? `pruned by Stage 3: ${p.reason}${p.dominated_by === null ? '' : ` (dominated by C${p.dominated_by})`}` : null, + inputs: c.inputs.map((input) => { + const floor = input.requirement.parameter_floor_for_required_accuracy; + return { + title: `input G${input.group} · floor ${floor ? memoSketchParamsText(floor) : 'none'}`, + edges: input.edges.map((e) => `${e.rejection === null ? '✓' : '✗'} C${e.producer}${e.rejection === null ? '' : `: ${e.rejection}`}${e.selected ? ' · selected' : ''}`), + }; + }), + }; + }); +} + +// The checks of `memo.steps` and `memo.selected_candidates` against the +// format above, as messages ([] when it holds or the document has no +// memo). `queryCount` is the workload's query count. function validateMemo(memo, queryCount) { if (memo === undefined) return []; - if (!memo || typeof memo !== 'object' || Array.isArray(memo)) return ['memo must be an object']; + if (!memoIsObject(memo)) return ['memo must be an object']; if (!Array.isArray(memo.steps) || memo.steps.length === 0) return ['memo.steps must be a non-empty array']; - if (!Array.isArray(memo.nodes)) return ['memo.nodes must be an array (a memo section written before the node table: regenerate the document with asap_planner)']; - const errors = validateLogicalDag({ nodes: memo.nodes, roots: [] }, 'memo.nodes', 0); + const errors = []; let previous = -1; memo.steps.forEach((step, s) => { const at = `memo.steps[${s}]`; @@ -85,20 +139,19 @@ function validateMemo(memo, queryCount) { else if (ids.has(group.id)) errors.push(`${at}.groups[${g}]: duplicate group id ${group.id}`); else ids.add(group.id); }); - step.groups.forEach((group, g) => { + step.groups.forEach((group) => { if (!group || !ids.has(group.id)) return; const where = `${at} G${group.id}`; - if (typeof group.label !== 'string') errors.push(`${where}: label must be a string`); + if (typeof group.label !== 'string' || !memoIsObject(group.operator)) errors.push(`${where}: needs a label and an operator`); const names = (list) => memoIsIndexList(list) && list.every((id) => ids.has(id)); if (!names(group.children) || !names(group.parents)) errors.push(`${where}: children and parents must name groups of the step`); if (!memoIsIndexList(group.queries) || !memoIsIndexList(group.roots_of) || ![...group.queries, ...group.roots_of].every((q) => q < queryCount)) errors.push(`${where}: queries and roots_of must name workload queries`); - if (!memoIsNode(memo.nodes, group.node)) errors.push(`${where}: node must index memo.nodes`); if (!Array.isArray(group.candidates)) { errors.push(`${where}: candidates must be an array`); return; } const count = group.candidate_count; if (!Number.isInteger(count) || count < group.candidates.length) errors.push(`${where}: candidate_count must count at least the listed candidates`); const byOrigin = group.candidate_count_by_origin; - if (!byOrigin || typeof byOrigin !== 'object' || Object.keys(byOrigin).some((o) => !(o in MEMO_ORIGINS)) + if (!memoIsObject(byOrigin) || Object.keys(byOrigin).some((o) => !(o in MEMO_ORIGINS)) || Object.values(byOrigin).reduce((n, c) => n + c, 0) !== count) errors.push(`${where}: candidate_count_by_origin must count candidate_count by known origin`); if (group.candidates_capped !== (group.candidates.length < count)) errors.push(`${where}: candidates_capped must say whether fewer than candidate_count are listed`); const indices = new Set(); @@ -111,28 +164,30 @@ function validateMemo(memo, queryCount) { indices.add(candidate.index); if (!(candidate.origin in MEMO_ORIGINS)) errors.push(`${cw}: unknown origin ${JSON.stringify(candidate.origin)}`); else if (!(byOrigin && byOrigin[candidate.origin] > 0)) errors.push(`${cw}: origin ${candidate.origin} is not counted in candidate_count_by_origin`); - if (typeof candidate.label !== 'string' || typeof candidate.accuracy_budget_parts !== 'number') errors.push(`${cw}: needs a label and a numeric accuracy_budget_parts`); - if (!names(candidate.children)) errors.push(`${cw}: children must name groups of the step`); + if (typeof candidate.label !== 'string' || !memoIsObject(candidate.operator)) errors.push(`${cw}: needs a label and an operator`); + if (!names(candidate.children) || !names(candidate.fused_groups)) errors.push(`${cw}: children and fused_groups must name groups of the step`); if (typeof candidate.added !== 'boolean') errors.push(`${cw}: added must be a boolean`); - if (!memoIsNode(memo.nodes, candidate.node)) errors.push(`${cw}: node must index memo.nodes`); - const boundaries = candidate.group_of_node; - if (!boundaries || typeof boundaries !== 'object' || Object.entries(boundaries).some(([node, child]) => !(/^\d+$/.test(node) && memoIsNode(memo.nodes, Number(node))) - || !(Array.isArray(candidate.children) && candidate.children.includes(child)))) errors.push(`${cw}: group_of_node must map memo.nodes indices to its child groups`); + const props = candidate.logical_properties; + if (!memoIsObject(props) || !(props.parameters === null || memoIsObject(props.parameters)) + || !(props.window_layout === null || memoIsObject(props.window_layout))) errors.push(`${cw}: logical_properties needs parameters and window_layout (objects or null)`); + const requirements = candidate.input_requirements; + if (!Array.isArray(requirements) || !Array.isArray(candidate.children) || requirements.length !== candidate.children.length + || !requirements.every((r) => memoIsObject(r) && 'parameter_floor_for_required_accuracy' in r)) { + errors.push(`${cw}: input_requirements must hold one parameter_floor_for_required_accuracy per input`); + } }); }); }); - if (errors.length) return errors; - const choice = memo.selected_choice; - if (choice === null || choice === undefined) { - if (choice === null && typeof memo.selected_choice_unavailable !== 'string') errors.push('memo.selected_choice is null without selected_choice_unavailable'); - return errors; - } - if (typeof choice !== 'object' || Array.isArray(choice)) return ['memo.selected_choice must be an object or null']; + if (errors.length || memo.selected_candidates === undefined) return errors; + const selected = memo.selected_candidates; + if (!memoIsObject(selected)) return ['memo.selected_candidates must be an object']; const last = new Map(memo.steps[memo.steps.length - 1].groups.map((group) => [String(group.id), group])); - Object.entries(choice).forEach(([group, index]) => { + Object.entries(selected).forEach(([group, indices]) => { const g = last.get(group); - if (!g) errors.push(`memo.selected_choice: ${group} is not a group of the last step`); - else if (!Number.isInteger(index) || index < 0 || index >= g.candidate_count) errors.push(`memo.selected_choice: G${group} has no candidate ${index}`); + if (!g) errors.push(`memo.selected_candidates: ${group} is not a group of the last step`); + else if (!Array.isArray(indices) || !indices.length || !indices.every((i) => Number.isInteger(i) && i >= 0 && i < g.candidate_count)) { + errors.push(`memo.selected_candidates: G${group} must list candidate indices of the group`); + } }); return errors; } @@ -171,33 +226,6 @@ function memoClip(text, n) { return s.length > n ? `${s.slice(0, n - 1)}…` : s; } -// A candidate's own nodes: its node and what it reads, down to (not -// through) the nodes `group_of_node` names as a child group's node, in the -// node table `nodes` (`memo.nodes`). Returns `own` (table indices, top -// first, each with its display lines) and `reads` (the boundary nodes -// reached, with their group). -function memoCandidateOwnNodes(nodes, candidate) { - const boundaries = candidate.group_of_node || {}; - const own = []; - const reads = []; - const seen = new Set(); - const stack = [candidate.node]; - while (stack.length) { - const id = stack.pop(); - if (seen.has(id)) continue; - seen.add(id); - if (String(id) in boundaries) { reads.push({ node: id, group: boundaries[String(id)] }); continue; } - const node = nodes[id]; - const [, body] = stageOperatorParts(node.operator); - const children = stageLogicalChildren(body); - const input = children.length ? nodes[children[0]] : null; - own.push({ node: id, lines: stageNodeLines(node.operator, input && input.schema) }); - children.slice().reverse().forEach((child) => stack.push(child)); - } - reads.sort((a, b) => a.group - b.group); - return { own, reads }; -} - // Each group's rank in the drawing: 0 without a child group in the step, // else one above its highest child (through its own children and its // candidates'). A cycle, which a memo should not have, is cut. @@ -220,7 +248,7 @@ function memoGroupRanks(groups) { } // Sizes of the drawing, in cytoscape pixels. -const MEMO_ITEM = { width: 190, height: 44, gap: 10, columns: 3, pad: 12, label: 34, rowGap: 70, groupGap: 36, rowWidth: 2200 }; +const MEMO_ITEM = { width: 190, height: 56, gap: 10, columns: 3, pad: 12, label: 34, rowGap: 70, groupGap: 36, rowWidth: 2200 }; // Step `s` of `memo` as cytoscape elements with preset positions. A group // is node `g` (a compound node holding its candidates, or a plain box @@ -229,13 +257,13 @@ const MEMO_ITEM = { width: 190, height: 44, gap: 10, columns: 3, pad: 12, label: // from a candidate (or origin node, or a group without candidates) to each // child group it reads. Options: `expanded` (ids of large groups drawn with // every listed candidate), `collapseAbove` (default MEMO_COLLAPSE_ABOVE), -// `queryIds` (the workload's query ids). The selected choice is marked at -// the last step only. +// `queryIds` (the workload's query ids). The selected plan's candidates +// are marked at the last step only. function memoStepElements(memo, s, options) { const { expanded = [], collapseAbove = MEMO_COLLAPSE_ABOVE, queryIds = [] } = options || {}; const step = memo.steps[s]; const last = s === memo.steps.length - 1; - const choice = last && memo.selected_choice ? memo.selected_choice : {}; + const selected = last && memo.selected_candidates ? memo.selected_candidates : {}; const queryName = (q) => queryIds[q] || `query #${q + 1}`; const ranks = memoGroupRanks(step.groups); const nodes = []; @@ -250,7 +278,7 @@ function memoStepElements(memo, s, options) { // Each group's items (candidates or origin counts), laid out below. const boxes = step.groups.map((group) => { - const chosenIndex = Object.prototype.hasOwnProperty.call(choice, String(group.id)) ? choice[String(group.id)] : null; + const chosenIndices = selected[String(group.id)] || []; const collapsible = group.candidates.length > collapseAbove; const collapsed = collapsible && !expanded.includes(group.id); const queries = group.queries; @@ -262,7 +290,7 @@ function memoStepElements(memo, s, options) { const entry = listed.get(c.origin); if (c.added) entry.added += 1; c.children.forEach((child) => entry.children.add(child)); - if (c.index === chosenIndex) { entry.chosen = true; entry.chosenChildren = c.children; } + if (chosenIndices.includes(c.index)) { entry.chosen = true; entry.chosenChildren.push(...c.children); } }); items = Object.entries(group.candidate_count_by_origin).filter(([, count]) => count > 0).map(([origin, count]) => { const entry = listed.get(origin); @@ -288,11 +316,12 @@ function memoStepElements(memo, s, options) { }); } else { items = group.candidates.map((c) => { - const chosen = c.index === chosenIndex; - const notes = [MEMO_ORIGINS[c.origin].name, c.accuracy_budget_parts !== 1 ? `parts ${c.accuracy_budget_parts}` : '', c.added ? '✚ new' : '', chosen ? '✓ selected' : ''].filter(Boolean); + const chosen = chosenIndices.includes(c.index); + const properties = [memoParametersText(c.logical_properties.parameters), memoWindowLayoutText(c.logical_properties.window_layout)].filter(Boolean); + const notes = [MEMO_ORIGINS[c.origin].name, c.added ? '✚ new' : '', chosen ? '✓ selected' : ''].filter(Boolean); return { data: { id: `g${group.id}c${c.index}`, kind: 'candidate', groupId: group.id, index: c.index, origin: c.origin, color: MEMO_ORIGINS[c.origin].color, - label: `${memoClip(`#${c.index} ${c.label}`, 30)}\n${memoClip(notes.join(' · '), 30)}`, queries, w: MEMO_ITEM.width, h: MEMO_ITEM.height }, + label: `${memoClip(`#${c.index} ${c.label}`, 30)}\n${memoClip(properties.join(' · ') || '—', 30)}\n${memoClip(notes.join(' · '), 30)}`, queries, w: MEMO_ITEM.width, h: MEMO_ITEM.height }, classes: ['memoItem', chosen ? 'chosen' : '', c.added ? 'added' : ''].filter(Boolean).join(' '), children: c.children, chosenChildren: chosen ? c.children : [], chosen, }; @@ -300,8 +329,9 @@ function memoStepElements(memo, s, options) { } const count = group.candidates_capped ? `${group.candidate_count} candidates (${group.candidates.length} listed)` : `${group.candidate_count} candidate${group.candidate_count === 1 ? '' : 's'}`; - // The selected candidate may lie past the listed prefix. - const unlisted = chosenIndex !== null && !group.candidates.some((c) => c.index === chosenIndex) ? ` · ✓ selected #${chosenIndex} (not listed)` : ''; + // A selected candidate may lie past the listed prefix. + const unlistedIndices = chosenIndices.filter((i) => !group.candidates.some((c) => c.index === i)); + const unlisted = unlistedIndices.length ? ` · ✓ selected ${unlistedIndices.map((i) => `#${i}`).join(', ')} (not listed)` : ''; const roots = group.roots_of.length ? ` · root of ${group.roots_of.map(queryName).join(', ')}` : ''; const toggle = collapsible ? (collapsed ? ' · click a count to expand' : ' · click the group to collapse') : ''; const label = `G${group.id} · ${memoClip(group.label, 40)}\n${step.step !== 'stage0' ? count : 'no candidates yet'}${unlisted}${roots}${toggle}`; @@ -350,7 +380,7 @@ function memoStepElements(memo, s, options) { const { group, items } = box; const data = { id: `g${group.id}`, kind: 'group', groupId: group.id, label: box.label, queries: box.queries, collapsible: box.collapsible, collapsed: box.collapsed, w: box.width, h: box.height }; - const chosenGroup = Object.prototype.hasOwnProperty.call(choice, String(group.id)); + const chosenGroup = Object.prototype.hasOwnProperty.call(selected, String(group.id)); const node = { data, classes: ['memoGroup', items.length ? 'compound' : '', chosenGroup ? 'chosenGroup' : ''].filter(Boolean).join(' ') }; if (!items.length) node.position = { x: box.x + box.width / 2, y: box.y + box.height / 2 }; nodes.push(node); @@ -394,15 +424,15 @@ function memoViewController() { const $ = (id) => document.getElementById(id); const esc = (s) => String(s).replace(/[&<>"]/g, (c) => ({ '&': '&', '<': '<', '>': '>', '"': '"' }[c])); const tok = (name) => getComputedStyle(document.documentElement).getPropertyValue(name).trim(); + // The shown document and its memo section. + let doc = null; let memo = null; - // Each stage's `pruned_candidates` of the shown document. - let pruned = { pass1: [], stage2: [] }; let queryIds = []; let stepIndex = 0; let cy = null; let elements = []; let highlighted = ''; - // Per step, the large groups the reader expanded. + // Per step, the large groups the user expanded. let expanded = []; function style() { @@ -435,16 +465,16 @@ function memoViewController() { cy.on('tap', (e) => { if (e.target === cy || typeof e.target.isNode !== 'function') $('details').innerHTML = HINT; }); dim(); const step = memo.steps[stepIndex]; - const choice = memo.selected_choice; + const selected = memo.selected_candidates; const last = stepIndex === memo.steps.length - 1; $('memoView-meta').innerHTML = `${esc(step.title)} · ${esc(memoStepText(memo, stepIndex))}` - + (last ? (choice ? ` · selected plan's candidates highlighted (${Object.keys(choice).length} groups)` : ` · no selected choice: ${esc(memo.selected_choice_unavailable || 'none')}`) - : ' · the selected choice is shown on the last tab'); + + (last ? (selected ? ` · selected plan's candidates highlighted (${Object.keys(selected).length} groups)` : ' · no plan selected') + : ' · the selected plan\'s candidates are shown on the last tab'); $('memoTabs').innerHTML = memo.steps.map((st, i) => ``).join(''); $('memoTabs').querySelectorAll('button').forEach((b) => b.addEventListener('click', () => selectStep(Number(b.dataset.step)))); } - const HINT = '

    Click a memo candidate to see its own nodes; click a count to expand its group.

    '; + const HINT = '

    Click a memo candidate to see its properties and physical candidates; click a count to expand its group.

    '; function dim() { if (!cy || !cy.batch) return; @@ -466,46 +496,63 @@ function memoViewController() { else showGroup(group); } - function nodeList(own) { - return `
      ${own.map((n) => `
    1. node ${esc(n.node)} ${esc(n.lines.join(' · '))}
    2. `).join('')}
    `; - } + const list = (items) => (items.length ? `
      ${items.map((i) => `
    • ${esc(i)}
    • `).join('')}
    ` : ''); - // The selected plan's candidate of `group`, on the last step only. + // The selected plan's candidates of `group`, on the last step only. function selectedText(group) { - const choice = memo.selected_choice; + const selected = memo.selected_candidates; if (stepIndex !== memo.steps.length - 1) return 'shown on the last tab'; - if (!choice) return `unavailable: ${memo.selected_choice_unavailable || 'none'}`; - if (!Object.prototype.hasOwnProperty.call(choice, String(group.id))) return 'no candidate chosen in this group'; - const index = choice[String(group.id)]; - const c = group.candidates.find((x) => x.index === index); - return c ? `#${index} ${c.label} (${MEMO_ORIGINS[c.origin].name})` : `#${index} (not listed)`; + if (!selected) return 'no plan selected'; + const indices = selected[String(group.id)]; + if (!indices) return 'no candidate of this group is used'; + return indices.map((index) => { + const c = group.candidates.find((x) => x.index === index); + return c ? `#${index} ${c.label} (${MEMO_ORIGINS[c.origin].name})` : `#${index} (not listed)`; + }).join('; '); + } + + // One line per candidate: label, θ, ω and per-input parameter floors. + function candidateLine(c) { + return [`#${c.index} ${c.label}`, memoParametersText(c.logical_properties.parameters), + memoWindowLayoutText(c.logical_properties.window_layout), + c.children.length ? `floors ${memoFloorTexts(c).join(', ')}` : ''].filter(Boolean).join(' · '); } function showGroup(group) { const origins = Object.entries(group.candidate_count_by_origin).map(([o, n]) => `${n} ${MEMO_ORIGINS[o].name}`).join(', '); + const pruned = memoPrunedLines(doc, group.id); $('details').innerHTML = `

    Memo group G${esc(group.id)} ${esc(memo.steps[stepIndex].title)}

    ${kv([ - ['label', group.label], ['node', stageNodeLines(memo.nodes[group.node].operator).join(' · ')], + ['label', group.label], ['operator', stageNodeLines(group.operator).join(' · ')], ['reads', groupList(group.children)], ['read by', groupList(group.parents)], ['queries reaching it', queryList(group.queries)], ['root of', queryList(group.roots_of)], ['candidates', `${group.candidate_count}${group.candidates_capped ? ` (${group.candidates.length} listed)` : ''}${origins ? `: ${origins}` : ''}`], ['selected plan', selectedText(group)], - ['pruned by Pass 1', memoPrunedText(pruned.pass1, group.id)], - ['pruned by Stage 2', memoPrunedText(pruned.stage2, group.id)], - ])}
    Group DAG (JSON)
    ${esc(JSON.stringify(memoNodeDag(memo.nodes, [group.node]), null, 2))}
    `; + ['pruned by Pass 1', 'Pass 1 records no pruned candidates'], + ['pruned by Stage 2', pruned.stage2.length ? `${pruned.stage2.length}` : 'none'], + ['pruned by Stage 3', pruned.stage3.length ? `${pruned.stage3.length}` : 'none'], + ])}${list(group.candidates.map(candidateLine))} + ${pruned.stage2.length ? `
    pruned by Stage 2
    ${list(pruned.stage2)}` : ''} + ${pruned.stage3.length ? `
    pruned by Stage 3
    ${list(pruned.stage3)}` : ''} +
    Group operator (JSON)
    ${esc(JSON.stringify(group.operator, null, 2))}
    `; } function showCandidate(group, candidate) { - const { own, reads } = memoCandidateOwnNodes(memo.nodes, candidate); - const choice = memo.selected_choice; - const selected = stepIndex === memo.steps.length - 1 && choice && choice[String(group.id)] === candidate.index; + const indices = (memo.selected_candidates || {})[String(group.id)] || []; + const selected = stepIndex === memo.steps.length - 1 && indices.includes(candidate.index); + // Stage 2 expands the last step's memo only. + const physical = stepIndex === memo.steps.length - 1 ? memoPhysicalCandidates(doc, group.id, candidate.index) : []; + const physicalHtml = physical.map((p) => `
    ${esc(p.title)}${p.pruned ? ` · ${esc(p.pruned)}` : ''}${p.inputs.map((input) => + `
    ${esc(input.title)}
    ${list(input.edges) || '
    no producer
    '}`).join('')}
    `).join(''); $('details').innerHTML = `

    Candidate #${esc(candidate.index)} of G${esc(group.id)} ${esc(memo.steps[stepIndex].title)}

    ${kv([ ['label', candidate.label], ['origin', MEMO_ORIGINS[candidate.origin].name], - ['added at this step', candidate.added ? 'yes' : 'no'], ['accuracy budget parts', candidate.accuracy_budget_parts], - ['implements', groupList(candidate.implements || [])], ['reads', groupList(candidate.children)], - ['selected plan', selected ? 'chosen for this group' : 'no'], - ])}
    own nodes (top first)
    ${nodeList(own)}
    -
    ${reads.length ? `Reads ${reads.map((r) => `G${r.group} (node ${r.node})`).join(', ')}.` : 'Reads no other group.'}
    -
    Candidate DAG (JSON)
    ${esc(JSON.stringify(memoNodeDag(memo.nodes, [candidate.node]), null, 2))}
    `; + ['added at this step', candidate.added ? 'yes' : 'no'], + ['parameters θ', memoParametersText(candidate.logical_properties.parameters) || 'none'], + ['window layout ω', memoWindowLayoutText(candidate.logical_properties.window_layout) || 'none'], + ['input parameter floors', candidate.children.length ? memoFloorTexts(candidate).join(', ') : 'no inputs'], + ['reads', groupList(candidate.children)], ['fuses', groupList(candidate.fused_groups)], + ['selected plan', selected ? 'used by the selected plan' : 'no'], + ])}
    physical candidates (Stage 2)
    ${physicalHtml || '
    none (shown on the last tab)
    '} +
    Candidate operator (JSON)
    ${esc(JSON.stringify(candidate.operator, null, 2))}
    `; } function selectStep(i) { @@ -513,13 +560,10 @@ function memoViewController() { draw(); } - function show(doc, ids) { + function show(shown, ids) { if (cy) { cy.destroy(); cy = null; } - memo = doc.memo || null; - pruned = { - pass1: (doc.stage1_logical_asap_optimization || {}).pruned_candidates || [], - stage2: (doc.stage2_physical_asap_optimization || {}).pruned_candidates || [], - }; + doc = shown; + memo = shown.memo || null; queryIds = ids; highlighted = ''; $('memoView').hidden = !memo; diff --git a/tools/dag-viewer/memo.test.mjs b/tools/dag-viewer/memo.test.mjs index a4aef40ee..f9b51f262 100644 --- a/tools/dag-viewer/memo.test.mjs +++ b/tools/dag-viewer/memo.test.mjs @@ -1,7 +1,10 @@ // Node tests of memo.js (no DOM): the `memo` section checks, the per-step // diff, a step's elements (groups holding their candidates, collapsed large -// groups, the selected choice, query dimming) and a candidate's own nodes, -// over the hand-written fixture test-fixtures/memo-small.json; the elements +// groups, the selected candidates, query dimming), a candidate's θ, ω and +// input parameter floors, its physical candidates' edges and the pruned +// candidates of Stages 2 and 3, over the hand-written fixture +// test-fixtures/memo-small.json (a `memo` section with the Stage 2 and +// Stage 3 sections the memo view reads); the elements // load into the vendored cytoscape (headless). Run from the repository root: // `node --test tools/dag-viewer/memo.test.mjs`. import { test } from 'node:test'; @@ -24,7 +27,8 @@ const cytoscape = (elements) => { page.elementsJson = JSON.stringify(elements); return vm.runInContext('cytoscape({ headless: true, elements: JSON.parse(elementsJson), layout: { name: "preset" } })', page); }; -const fixture = () => JSON.parse(readFileSync(new URL('test-fixtures/memo-small.json', here), 'utf8')).memo; +const fixtureDoc = () => JSON.parse(readFileSync(new URL('test-fixtures/memo-small.json', here), 'utf8')); +const fixture = () => fixtureDoc().memo; const nodesOf = (elements) => elements.filter((e) => !('source' in e.data)); const edgesOf = (elements) => elements.filter((e) => 'source' in e.data); const byId = (elements, id) => elements.find((e) => e.data.id === id); @@ -48,18 +52,16 @@ test('memo violations are reported', () => { assert.match(broken((m) => { m.steps[2].groups[2].candidates_capped = false; }), /candidates_capped/); assert.match(broken((m) => { m.steps[1].groups[2].candidate_count_by_origin = { pass1: 1 }; }), /candidate_count_by_origin/); assert.match(broken((m) => { m.steps[1].groups[2].candidate_count_by_origin = { pass1: 1, tumbling_windows: 1 }; m.steps[1].groups[2].candidates[1].origin = 'rollup'; }), /origin rollup is not counted/); - assert.match(broken((m) => { m.steps[1].groups[3].candidates[0].group_of_node = { '1.5': 2 }; }), /group_of_node must map/); - assert.match(broken((m) => { delete m.steps[1].groups[3].candidates[0].label; }), /needs a label/); - assert.match(broken((m) => { m.steps[1].groups[3].candidates[0].group_of_node = { 0: 4 }; }), /group_of_node must map/); - assert.match(broken((m) => { m.nodes.find((n) => n.operator.NonASAP && n.operator.NonASAP.Aggregate).operator.NonASAP.Aggregate.child = 99; }), /memo.nodes: node \d+ reads missing node 99/); - assert.match(broken((m) => { delete m.nodes; }), /memo.nodes must be an array/); - assert.match(broken((m) => { m.steps[1].groups[3].node = 99; }), /G3: node must index memo.nodes/); - assert.match(broken((m) => { m.steps[1].groups[3].candidates[0].node = -1; }), /candidates\[0\]: node must index memo.nodes/); - assert.match(broken((m) => { m.steps[1].groups[3].candidates[0].group_of_node = { 99: 2 }; }), /group_of_node must map/); - assert.match(broken((m) => { m.selected_choice = { 9: 0 }; }), /9 is not a group of the last step/); - assert.match(broken((m) => { m.selected_choice = { 5: 3 }; }), /G5 has no candidate 3/); - assert.match(broken((m) => { m.selected_choice = null; }), /without selected_choice_unavailable/); - assert.equal(broken((m) => { m.selected_choice = null; m.selected_choice_unavailable = 'no plan selected'; }), ''); + assert.match(broken((m) => { delete m.steps[1].groups[3].candidates[0].label; }), /needs a label and an operator/); + assert.match(broken((m) => { delete m.steps[1].groups[3].operator; }), /G3: needs a label and an operator/); + assert.match(broken((m) => { m.steps[1].groups[5].candidates[1].fused_groups = [9]; }), /children and fused_groups must name groups/); + assert.match(broken((m) => { m.steps[1].groups[5].candidates[1].logical_properties = { parameters: 7, window_layout: null }; }), /logical_properties needs parameters and window_layout/); + assert.match(broken((m) => { m.steps[1].groups[5].candidates[1].input_requirements = []; }), /one parameter_floor_for_required_accuracy per input/); + assert.match(broken((m) => { m.selected_candidates = { 9: [0] }; }), /9 is not a group of the last step/); + assert.match(broken((m) => { m.selected_candidates = { 5: [3] }; }), /G5 must list candidate indices of the group/); + assert.match(broken((m) => { m.selected_candidates = { 5: 1 }; }), /G5 must list candidate indices of the group/); + // A document without a selected plan has no selected_candidates. + assert.equal(broken((m) => { delete m.selected_candidates; }), ''); }); test('each step says what it added over the previous one', () => { @@ -71,7 +73,7 @@ test('each step says what it added over the previous one', () => { assert.equal(pass1.listedAdded, 10); assert.deepEqual(pass1.groupsAdded, []); const pass2 = call('memoStepDiff', memo, 2); - // G2 grows from 2 to 20 (18 TumblingWindows and SharedBuild, 11 listed), G3 gains a + // G2 grows from 2 to 20 (18 TumblingWindows and SummaryInput, 11 listed), G3 gains a // rollup, the new tumbling-window-chain group G6 has one. assert.deepEqual(pass2.groupsAdded, [6]); assert.equal(pass2.candidatesDelta, 18 + 1 + 1); @@ -87,7 +89,7 @@ test('stage 0 draws one box per group and an edge per child group', () => { assert.equal(nodesOf(elements).length, 6); assert.deepEqual(edgesOf(elements).map((e) => e.data.id).sort(), ['g1>g0', 'g2>g1', 'g3>g2', 'g4>g1', 'g5>g4']); assert.match(byId(elements, 'g3').data.label, /^G3 · sum by \(job\)\nno candidates yet · root of Q1$/); - // Readers sit above what they read. + // Consumers sit above what they read. assert.ok(byId(elements, 'g3').position.y < byId(elements, 'g2').position.y); assert.ok(byId(elements, 'g2').position.y < byId(elements, 'g1').position.y); assert.equal(cytoscape(elements).nodes().length, 6); @@ -101,7 +103,9 @@ test('pass 1 puts each candidate inside its group, colored by origin, with an ed assert.equal(cms.data.parent, 'g5'); assert.equal(cms.data.color, vm.runInContext('MEMO_ORIGINS.pass1.color', context)); assert.match(cms.data.classes || cms.classes, /added/); - assert.equal(cms.data.label, '#1 CMS+heap depth 7 width 272\nPass1 · ✚ new'); + assert.equal(cms.data.label, '#1 CMS+heap depth 7 width 272\nθ CmsWithHeap(depth=7, heap_s…\nPass1 · ✚ new'); + // A candidate without θ or ω says so on its middle line. + assert.equal(byId(elements, 'g5c0').data.label.split('\n')[1], '—'); assert.equal(call('memoClip', 'abcdef', 4), 'abc…'); // The exact topk reads G4, the sketches read the range G1 directly. assert.ok(byId(elements, 'g5c0>g4')); @@ -117,12 +121,14 @@ test('a large group collapses to one count per origin and expands on request', ( const memo = fixture(); const collapsed = call('memoStepElements', memo, 2, {}); const inG2 = (elements) => nodesOf(elements).filter((e) => e.data.parent === 'g2'); - assert.deepEqual(inG2(collapsed).map((e) => e.data.label.split('\n')[0]), ['2 Pass1', '9 TumblingWindows', '9 SharedBuild']); + assert.deepEqual(inG2(collapsed).map((e) => e.data.label.split('\n')[0]), ['2 Pass1', '9 TumblingWindows', '9 SummaryInput']); assert.match(byId(collapsed, 'g2').data.label, /20 candidates \(13 listed\) · click a count to expand/); - // The selected candidate (G2 #2, a TumblingWindows candidate) marks its count. + // The selected candidates (G2 #2, a TumblingWindows candidate, and #8, a + // SummaryInput one) mark their counts. assert.match(byId(collapsed, 'g2otumbling_windows').classes, /chosen/); assert.match(byId(collapsed, 'g2otumbling_windows').data.label, /✚ 6 new · ✓ selected/); assert.ok(byId(collapsed, 'g2otumbling_windows>g6')); + assert.match(byId(collapsed, 'g2osummary_input').classes, /chosen/); assert.ok(byId(collapsed, 'g2opass1>g1')); const open = call('memoStepElements', memo, 2, { expanded: [2] }); assert.equal(inG2(open).length, 13); @@ -132,20 +138,19 @@ test('a large group collapses to one count per origin and expands on request', ( assert.equal(cytoscape(open).getElementById('g2').children().length, 13); // An origin with no listed candidate says so. const capped = fixture(); - capped.steps[2].groups[2].candidates = capped.steps[2].groups[2].candidates.filter((c) => c.origin !== 'shared_build'); - assert.equal(byId(call('memoStepElements', capped, 2, { collapseAbove: 4 }), 'g2oshared_build').data.label, '9 SharedBuild\nnone listed'); + capped.steps[2].groups[2].candidates = capped.steps[2].groups[2].candidates.filter((c) => c.origin !== 'summary_input'); + assert.equal(byId(call('memoStepElements', capped, 2, { collapseAbove: 4 }), 'g2osummary_input').data.label, '9 SummaryInput\nnone listed'); // A threshold above the listed count draws every candidate. assert.equal(inG2(call('memoStepElements', memo, 2, { collapseAbove: 20 })).length, 13); }); -test('the selected choice is highlighted on the last step only', () => { +test('the selected candidates, several per group, are highlighted on the last step only', () => { const memo = fixture(); const last = call('memoStepElements', memo, 2, { expanded: [2] }); const chosen = nodesOf(last).filter((e) => /\bchosen\b/.test(e.classes)).map((e) => e.data.id).sort(); - assert.deepEqual(chosen, ['g0c0', 'g1c0', 'g2c2', 'g3c0', 'g4c0', 'g5c1', 'g6c0']); + assert.deepEqual(chosen, ['g0c0', 'g1c0', 'g2c2', 'g2c8', 'g3c0', 'g4c0', 'g5c1', 'g6c0']); assert.match(byId(last, 'g5c1').data.label, /✓ selected/); - memo.selected_choice = null; - memo.selected_choice_unavailable = 'no plan selected'; + delete memo.selected_candidates; assert.ok(!call('memoStepElements', memo, 2, {}).some((e) => /chosen/.test(e.classes || ''))); }); @@ -154,7 +159,6 @@ test('a collapsed count marks only the selected candidate\'s edges', () => { // Another listed TumblingWindows candidate of G2 reads G1 instead of G6. const other = memo.steps[2].groups[2].candidates.find((c) => c.index === 3); other.children = [1]; - other.group_of_node = { [memo.steps[2].groups.find((g) => g.id === 1).node]: 1 }; const elements = call('memoStepElements', memo, 2, {}); assert.match(byId(elements, 'g2otumbling_windows>g6').classes, /chosen/); assert.equal(byId(elements, 'g2otumbling_windows>g1').classes, ''); @@ -162,7 +166,7 @@ test('a collapsed count marks only the selected candidate\'s edges', () => { test('a selected candidate past the listed prefix is named on its group', () => { const memo = fixture(); - memo.selected_choice['2'] = 15; + memo.selected_candidates['2'] = [15]; assert.deepEqual(call('validateMemo', memo, 2), []); const elements = call('memoStepElements', memo, 2, {}); assert.match(byId(elements, 'g2').data.label, /✓ selected #15 \(not listed\)/); @@ -179,50 +183,41 @@ test('highlighting a query dims the groups it does not reach', () => { assert.ok(dimmed.has('g2c0>g1')); }); -test("a candidate's own nodes stop at its child groups' nodes", () => { +test("a candidate's θ, ω and per-input parameter floors read its logical properties and input requirements", () => { const memo = fixture(); - const accumulator = memo.steps[1].groups[3].candidates[1]; - const { own, reads } = call('memoCandidateOwnNodes', memo.nodes, accumulator); - assert.deepEqual(own.map((n) => n.lines[0]), ['FinalizeExactAccumulator', 'SummaryAgg']); - assert.deepEqual(reads, [{ node: Number(Object.keys(accumulator.group_of_node)[0]), group: 2 }]); - const cms = call('memoCandidateOwnNodes', memo.nodes, memo.steps[1].groups[5].candidates[1]); - assert.deepEqual(cms.own.map((n) => n.lines[0]), ['Project', 'SummaryEstimate', 'SummaryAgg']); - assert.deepEqual(cms.reads.map((r) => r.group), [1]); - // A group with no child group reads nothing: its whole dag is its own. - assert.deepEqual(call('memoCandidateOwnNodes', memo.nodes, memo.steps[1].groups[0].candidates[0]).own.map((n) => n.lines[0]), ['Scan']); + const cms = memo.steps[2].groups[5].candidates[1]; + assert.equal(call('memoParametersText', cms.logical_properties.parameters), 'θ CmsWithHeap(depth=7, heap_size=10, width=272)'); + assert.equal(call('memoParametersText', null), null); + const chain = memo.steps[2].groups[6].candidates[0]; + assert.equal(call('memoWindowLayoutText', chain.logical_properties.window_layout), 'ω tumbling 10 s'); + assert.equal(call('memoWindowLayoutText', null), null); + // One floor per input group, "none" for an input without one. + const estimate = { children: [3, 4], input_requirements: [ + { parameter_floor_for_required_accuracy: { Kll: { k: 269 } } }, { parameter_floor_for_required_accuracy: null }] }; + assert.deepEqual(call('memoFloorTexts', estimate), ['G3: Kll(k=269)', 'G4: none']); }); -test('memoNodeDag follows and renumbers a node read through a scalar body', () => { - // `vector(scalar(x))`: PromqlVectorFromScalar's body is the scalar itself. - const scan = { operator: { NonASAP: { Scan: { predicates: [] } } } }; - const other = { operator: { NonASAP: { Scan: { predicates: ['other'] } } } }; - const vector = { operator: { NonASAP: { PromqlVectorFromScalar: { PromqlScalarFromVector: 1 } } } }; - assert.deepEqual(call('stageLogicalChildren', { PromqlScalarFromVector: 1 }), [1]); - const dag = call('memoNodeDag', [other, scan, vector], [2]); - assert.equal(dag.nodes.length, 2); - assert.deepEqual(dag.nodes[1].operator, { NonASAP: { PromqlVectorFromScalar: { PromqlScalarFromVector: 0 } } }); - assert.deepEqual(dag.roots, [{ Operator: 1 }]); +test("a candidate's physical candidates list each input's producer edges, admissible or with their rejection", () => { + const doc = fixtureDoc(); + const physical = call('memoPhysicalCandidates', doc, 5, 1); + assert.deepEqual(physical.map((p) => p.title), ['C2 (query_time, OneEvaluation(Memory))', 'C3 (ingestion_time, AcrossEvaluations(Memory))']); + assert.deepEqual(physical[0].inputs, [{ title: 'input G1 · floor none', edges: [ + '✗ C1: α^phys = 0: consumer (QueryTime, OneEvaluation(Memory)) cannot read producer (IngestionTime, None)'] }]); + assert.equal(physical[0].pruned, 'pruned by Stage 3: dominated_by (dominated by C3)'); + // An edge of the selected DAG is marked. + assert.deepEqual(physical[1].inputs[0].edges, ['✓ C1 · selected']); + assert.equal(physical[1].pruned, null); + assert.deepEqual(call('memoPhysicalCandidates', doc, 5, 0), []); }); -test('a node shared by groups is stored once, and memoNodeDag rebuilds each DAG from the table', () => { - const memo = fixture(); - const keys = memo.nodes.map((n) => JSON.stringify(n)); - assert.equal(new Set(keys).size, keys.length); - // Every step's scan group names the same table node. - const scans = memo.steps.map((s) => s.groups.find((g) => g.id === 0).node); - assert.equal(new Set(scans).size, 1); - // The DAG below the Pass 1 accumulator candidate: its own two nodes over - // the DAG of the node it reads from G2, renumbered from 0 with children - // before parents. - const candidate = memo.steps[1].groups[3].candidates[1]; - const dag = call('memoNodeDag', memo.nodes, [candidate.node]); - const below = call('memoNodeDag', memo.nodes, [Number(Object.keys(candidate.group_of_node)[0])]); - assert.equal(dag.nodes.length, below.nodes.length + 2); - assert.deepEqual(dag.roots, [{ Operator: dag.nodes.length - 1 }]); - assert.deepEqual(call('validateLogicalDag', dag, 'dag', 1), []); - dag.nodes.forEach((node, id) => { - call('stageLogicalChildren', call('stageOperatorParts', node.operator)[1]).forEach((child) => assert.ok(child < id)); +test('the pruned candidates of a group: Stage 2 by memo candidate and properties, Stage 3 by physical candidate and what dominates it', () => { + const doc = fixtureDoc(); + assert.deepEqual(call('memoPrunedLines', doc, 5), { + stage2: ['G5[2] (ingestion_time, None): no_ingestion_pipeline'], + stage3: ['C2: dominated_by (dominated by C3)'], }); + assert.deepEqual(call('memoPrunedLines', doc, 1), { stage2: [], stage3: ['C4: usage_not_costable'] }); + assert.deepEqual(call('memoPrunedLines', { memo: doc.memo }, 5), { stage2: [], stage3: [] }); }); // The memo asap_planner writes for #1005's ratio-of-quantiles query @@ -241,9 +236,22 @@ test('the real example: each step draws its groups and counts its new candidates const elements = call('memoStepElements', memo, last, {}); assert.equal(nodesOf(elements).filter((e) => e.data.kind === 'group').length, memo.steps[last].groups.length); assert.ok(cytoscape(elements).nodes().length >= memo.steps[last].groups.length); - // A candidate's boundary node is its child group's own table node. - memo.steps.forEach((step) => { - const nodeOf = new Map(step.groups.map((g) => [g.id, g.node])); - step.groups.forEach((g) => g.candidates.forEach((c) => Object.entries(c.group_of_node).forEach(([node, group]) => assert.equal(Number(node), nodeOf.get(group))))); - }); + // A candidate is one operator over its input groups, one input + // requirement each. + memo.steps.forEach((step) => step.groups.forEach((g) => g.candidates.forEach((c) => { + assert.deepEqual(call('stageLogicalChildren', call('stageOperatorParts', c.operator)[1]), c.children); + assert.equal(c.input_requirements.length, c.children.length); + }))); + // Some quantile estimate reads a sketch with a parameter floor; some + // candidate has θ and ω. + const lastGroups = memo.steps[last].groups; + assert.ok(lastGroups.some((g) => g.candidates.some((c) => call('memoFloorTexts', c).some((f) => /Kll\(k=\d+\)/.test(f))))); + assert.ok(lastGroups.some((g) => g.candidates.some((c) => c.logical_properties.parameters && c.logical_properties.window_layout))); + // Every selected candidate has a physical candidate with a selected edge + // into each of its inputs, and the stage sections pass their checks. + assert.deepEqual(call('validatePrunedAndPhysical', doc.stage2_physical_asap_optimization, doc.stage3_plan_selection), []); + Object.entries(memo.selected_candidates).forEach(([group, indices]) => indices.forEach((index) => { + const physical = call('memoPhysicalCandidates', doc, Number(group), index); + assert.ok(physical.some((p) => p.inputs.every((input) => input.edges.some((e) => /^✓ C\d+ · selected$/.test(e)))), `G${group}[${index}]`); + })); }); diff --git a/tools/dag-viewer/stages.js b/tools/dag-viewer/stages.js index 1e61d8aa5..838137e0b 100644 --- a/tools/dag-viewer/stages.js +++ b/tools/dag-viewer/stages.js @@ -4,113 +4,19 @@ // app.js draws them; test_viewer.py runs this file headless. const STAGE_PIPELINE_FORMAT = 'asap-stage-pipeline/v2'; -// Documents written before #1163 name the tumbling-window chain `PaneChain`, -// its fields `pane_*`, and the memo origin `panes` (`Panes` in older MILP -// search reports); renames them in place to today's names, keeping each -// object's key order, so the rest of the viewer reads one set of names. -// Remove once no document the viewer must open predates #1163. -const TUMBLING_WINDOW_RENAMES = Object.freeze({ - PaneChain: 'SummaryTumblingWindowChain', - pane_width_ms: 'tumbling_window_width_ms', - pane_count: 'tumbling_window_count', - newest_panes: 'newest_tumbling_windows', - pane_retention_ms: 'tumbling_window_retention_ms', -}); -const ORIGIN_RENAMES = Object.freeze({ panes: 'tumbling_windows', Panes: 'TumblingWindows' }); -const has = (object, key) => Object.prototype.hasOwnProperty.call(object, key); -function upgradeTumblingWindowNames(value, parentKey) { - if (Array.isArray(value)) { - value.forEach((item, index) => { - if (item === 'PaneChain') value[index] = TUMBLING_WINDOW_RENAMES.PaneChain; - else upgradeTumblingWindowNames(item); - }); - return value; - } - if (!value || typeof value !== 'object') return value; - // Origin counts are keyed by origin name. - const renames = parentKey === 'candidate_count_by_origin' || parentKey === 'candidates_by_origin' - ? ORIGIN_RENAMES : TUMBLING_WINDOW_RENAMES; - const entries = Object.entries(value); - if (!entries.some(([key]) => has(renames, key) && !has(value, renames[key]))) { - for (const [key, item] of entries) value[key] = upgradeItem(key, item); - return value; - } - for (const key of Object.keys(value)) delete value[key]; - for (const [key, item] of entries) { - // An old key never overwrites a new one already present. - const renamed = has(renames, key) && !entries.some(([other]) => other === renames[key]) ? renames[key] : key; - value[renamed] = upgradeItem(key, item); - } - return value; -} -// Documents written before the planner dropped `MemoSteps` have a memo step -// `pass2` (local window composition only) followed by `concrete_states` -// (Pass 2's output); older ones also name Stage 1's pruned candidates -// `pass1_pruned` (read by the memo group panel). -// Renames them in place to today's steps, where `pass2` is Pass 2's output: -// the window-composition step is dropped (its candidates are in Pass 2's -// output, marked by their origin), `concrete_states` becomes `pass2`. -// Remove once no document the viewer must open predates the change. // A stage `run_until` stopped before, or one after a failed stage, is null; // the viewer shows it empty. function fillStagesNotRun(doc) { if (!doc || typeof doc !== 'object') return doc; const empty = { - stage1_logical_asap_optimization: { combinations: 0, capped: false, pruned_candidates: [], candidates: [] }, - stage2_physical_asap_optimization: { candidates: [], pruned: [], pruned_candidates: [] }, - stage3_plan_selection: { selected_dag: null, materialized_views: [] }, + stage1_logical_asap_optimization: { combinations: 0, capped: false, candidates: [] }, + stage2_physical_asap_optimization: { candidates: [], physical_candidates: [], pruned_candidates: [] }, + stage3_plan_selection: { selected_dag: null, materialized_views: [], pruned_candidates: [] }, }; Object.entries(empty).forEach(([stage, section]) => { if (doc[stage] === null) doc[stage] = section; }); return doc; } -function upgradeMemoSteps(doc) { - const stage1 = doc && doc.stage1_logical_asap_optimization; - if (stage1 && has(stage1, 'pass1_pruned') && !has(stage1, 'pruned_candidates')) { - stage1.pruned_candidates = stage1.pass1_pruned; - delete stage1.pass1_pruned; - } - const memo = doc && doc.memo; - if (!memo || !Array.isArray(memo.steps) || !memo.steps.some((step) => step && step.step === 'concrete_states')) return doc; - // `added` was relative to the dropped step: a candidate that step added - // (same group, node and children) is also new since Pass 1. - const dropped = memo.steps.find((step) => step && step.step === 'pass2'); - const addedByDropped = new Set(); - for (const group of (dropped && dropped.groups) || []) { - for (const candidate of group.candidates || []) { - if (candidate.added) addedByDropped.add(JSON.stringify([group.id, candidate.node, candidate.children])); - } - } - memo.steps = memo.steps.filter((step) => !step || step.step !== 'pass2'); - for (const step of memo.steps) { - if (!step || step.step !== 'concrete_states') continue; - Object.assign(step, { step: 'pass2', title: 'Stage 1, Pass 2' }); - for (const group of step.groups || []) { - for (const candidate of group.candidates || []) { - if (addedByDropped.has(JSON.stringify([group.id, candidate.node, candidate.children]))) candidate.added = true; - } - } - } - const enumeration = memo.enumeration; - if (enumeration && enumeration.per_step) { - const perStep = {}; - for (const [step, count] of Object.entries(enumeration.per_step)) { - if (step === 'pass2') continue; - perStep[step === 'concrete_states' ? 'pass2' : step] = count; - } - enumeration.per_step = perStep; - // A listing of the dropped step is a listing of no step left. - if (enumeration.step === 'pass2') Object.assign(enumeration, { step: 'pass2', choices: [], priced: null }); - else if (enumeration.step === 'concrete_states') enumeration.step = 'pass2'; - } - return doc; -} -function upgradeItem(key, item) { - if (item === 'PaneChain') return TUMBLING_WINDOW_RENAMES.PaneChain; - if (key === 'origin' && has(ORIGIN_RENAMES, item)) return ORIGIN_RENAMES[item]; - return upgradeTumblingWindowNames(item, key); -} - function isStagePipelineDocument(doc) { return !!doc && typeof doc === 'object' && doc.format === STAGE_PIPELINE_FORMAT; } @@ -153,49 +59,6 @@ function stageLogicalChildren(body) { return ids; } -// `value` (an operator body field that is not a child field) with every -// operator node id its scalar expressions read replaced by `f(id)`. -function stageMapScalarRefs(value, f) { - if (Array.isArray(value)) return value.map((inner) => stageMapScalarRefs(inner, f)); - if (!value || typeof value !== 'object') return value; - return Object.fromEntries(Object.entries(value).map(([field, inner]) => [field, - STAGE_SCALAR_REF_FIELDS.includes(field) && typeof inner === 'number' ? f(inner) : stageMapScalarRefs(inner, f)])); -} - -// A logical operator with every node id it reads (those stageLogicalChildren -// lists) replaced by `f(id)`. -function stageMapLogicalChildren(operator, f) { - const [outer, inner] = Object.entries(operator)[0]; - if (!inner || typeof inner !== 'object') return operator; - const [kind, body] = Object.entries(inner)[0]; - if (!body || typeof body !== 'object' || Array.isArray(body)) return operator; - const mapped = Object.fromEntries(Object.entries(body).map(([field, value]) => { - if (!STAGE_CHILD_FIELDS.includes(field)) return [field, stageMapScalarRefs({ [field]: value }, f)[field]]; - const id = (v) => (typeof v === 'number' ? f(v) : v); - return [field, Array.isArray(value) ? value.map(id) : id(value)]; - })); - return { [outer]: { [kind]: mapped } }; -} - -// The flat DAG below `roots` (indices into `table`, the memo section's -// `memo.nodes`): the nodes they reach, renumbered from 0 in table order (so -// children still come before parents), with one operator root per entry of -// `roots`. -function memoNodeDag(table, roots) { - const reached = new Set(); - const pending = [...roots]; - while (pending.length) { - const id = pending.pop(); - if (reached.has(id) || !table[id]) continue; - reached.add(id); - pending.push(...stageLogicalChildren(stageOperatorParts(table[id].operator)[1])); - } - const tableIds = [...reached].sort((a, b) => a - b); - const local = new Map(tableIds.map((id, i) => [id, i])); - const nodes = tableIds.map((id) => ({ ...table[id], operator: stageMapLogicalChildren(table[id].operator, (child) => local.get(child)) })); - return { nodes, roots: roots.map((id) => ({ Operator: local.get(id) })) }; -} - // A scalar expression as short text: `time()`, `scalar(#3)` (node 3), // literals as their value; other forms by name. function stageScalarText(expr) { @@ -315,51 +178,13 @@ function uniqueIds(list, where, errors) { return ids; } -// The `reference_pricing.pruned_candidates[].cause` values (`RejectionCause`) -// of a candidate that failed a check (`RejectionCause::failed_a_check`): -// it is not priced. -const FAILED_CHECK_CAUSES = [ - 'accuracy_target_missed', - 'count_min_weights_not_proven_non_negative', - 'no_accuracy_guarantee', 'latency_bound_exceeded', 'latency_over_repeat_interval', - 'over_cluster_capacity', 'infeasible', 'cost_not_representable', -]; -// Every `reference_pricing.pruned_candidates[].cause` the reference pricer -// writes: the failed checks, then the losses under the cost model (priced, -// not selected). -const REJECTION_CAUSES = FAILED_CHECK_CAUSES.concat([ - 'costlier', 'slower', 'more_memory', - 'tied_lost_on_enumeration_order', -]); - -// The per-candidate selection table the panels read, named as -// `reference_pricing` names its keys, from Stage 3's `Selection` -// (`stage3_plan_selection`): the selected plan `P1` with its cost and -// accepted accuracy. Under `--exhaustive` it also holds the reference -// pricer's table (`reference_pricing`) over the enumerated plans: their -// costs, accepted accuracy and pruned candidates, with the reference -// pricer's own pick as `reference_selected_candidate`. A document written -// before `Selection` (its Stage 3 section has `costs`, `selected`, -// `accepted`, `rejected` with `id`s) is read into the same table. +// The per-candidate selection table the panels read, from Stage 3's +// `Selection` (`stage3_plan_selection`): the selected plan `P1` with its +// cost and accepted accuracy. function selectionTable(doc) { const stage3 = doc.stage3_plan_selection || {}; - if ('costs' in stage3) { - const pruned = Array.isArray(stage3.rejected) - ? stage3.rejected.map((r) => (r && typeof r === 'object' ? { candidate: r.id, cause: r.cause, reason: r.reason } : r)) - : stage3.rejected; - return { - ...stage3, - selected_candidate: stage3.selected, - cost_per_candidate: stage3.costs, - accepted_accuracy_per_candidate: stage3.accepted || {}, - pruned_candidates: pruned, - pruned_candidates_not_enumerated: (stage3.search_rejected || []).map((r) => ({ candidate: r.id, cause: r.cause, reason: r.reason })), - pruned_candidate_count_by_cause: stage3.rejected_by_cause, - }; - } const table = { selected_candidate: null, cost_per_candidate: {}, accepted_accuracy_per_candidate: {}, - pruned_candidates: [], pruned_candidates_not_enumerated: [], error: stage3.error, warnings: stage3.warnings, materialized_views: stage3.materialized_views, materialized_views_error: stage3.materialized_views_error, tumbling_window_retention_ms: stage3.tumbling_window_retention_ms, search_report: stage3.search_report, @@ -369,47 +194,19 @@ function selectionTable(doc) { table.cost_per_candidate.P1 = stage3.cost; table.accepted_accuracy_per_candidate.P1 = stage3.accepted_accuracy_per_query; } - const reference = doc.reference_pricing; - if (reference) { - Object.assign(table.cost_per_candidate, reference.cost_per_candidate || {}); - Object.assign(table.accepted_accuracy_per_candidate, reference.accepted_accuracy_per_candidate || {}); - table.pruned_candidates = (reference.pruned_candidates || []).slice(); - table.pruned_candidates_not_enumerated = (reference.pruned_candidates_not_enumerated || []).slice(); - table.pruned_candidate_count_by_cause = reference.pruned_candidate_count_by_cause; - table.reference_selected_candidate = reference.selected_candidate ?? null; - if (reference.error && !table.error) table.reference_error = reference.error; - } return table; } -// The selection table's problems; paths name `reference_pricing`'s keys -// (an archived document's Stage 3 section holds the same under its older -// names). +// The selection table's problems. function validateSelection(selection, physicalById) { const errors = []; - if (!selection || typeof selection !== 'object') return ['stage3_plan_selection must be an object']; if (selection.selected_candidate !== null && !physicalById.has(selection.selected_candidate)) { errors.push('selected_candidate must name a Stage 2 candidate or be null'); } - if (!Array.isArray(selection.pruned_candidates)) return errors.concat('pruned_candidates must be an array'); - const accounted = new Set([selection.selected_candidate, selection.reference_selected_candidate].filter((id) => id !== null && id !== undefined)); - selection.pruned_candidates.forEach((entry, index) => { - const at = `pruned_candidates[${index}]`; - const id = entry && entry.candidate; - if (!physicalById.has(id)) errors.push(`${at}: ${JSON.stringify(id)} is not a Stage 2 candidate`); - else if (accounted.has(id)) errors.push(`${at}: ${id} is already selected or pruned`); - if (!entry || !REJECTION_CAUSES.includes(entry.cause)) errors.push(`${at}: cause must be one of ${REJECTION_CAUSES.join(', ')}`); - accounted.add(id); - }); - if (selection.selected_candidate !== null) { - physicalById.forEach((_, id) => { if (!accounted.has(id)) errors.push(`stage3_plan_selection: ${id} is neither selected nor pruned`); }); - } - const costs = selection.cost_per_candidate; - if (!costs || typeof costs !== 'object' || Array.isArray(costs)) return errors.concat('cost_per_candidate must be an object'); - Object.entries(costs).forEach(([id, cost]) => { + Object.entries(selection.cost_per_candidate).forEach(([id, cost]) => { const at = `cost_per_candidate.${id}`; if (!physicalById.has(id)) { errors.push(`${at}: not a Stage 2 candidate`); return; } - // `cost_per_second` is null under cost model 3 (own cluster), which has no prices. + // `cost_per_second` is null under cost model 3 (own cluster), which has no unit costs. if (!cost || (cost.cost_per_second !== null && (typeof cost.cost_per_second !== 'number' || !Number.isFinite(cost.cost_per_second)))) errors.push(`${at}: cost_per_second must be a number or null`); if (!cost || typeof cost.cost_unit !== 'string') errors.push(`${at}: cost_unit must be a string`); const nodeIds = new Set(physicalById.get(id).dag.nodes.map((node) => String(node.id))); @@ -420,6 +217,48 @@ function validateSelection(selection, physicalById) { return errors; } +// The checks of Stage 2's `physical_candidates` and `pruned_candidates` and +// Stage 3's `pruned_candidates` (the memo view reads them), as messages. +// Physical candidates are numbered by their position; an edge's `producer` +// and a Stage 3 entry's `candidate` and `dominated_by` index them. +function validatePrunedAndPhysical(stage2, stage3) { + const errors = []; + const physical = stage2.physical_candidates; + const pruned2 = stage2.pruned_candidates; + const pruned3 = stage3.pruned_candidates === undefined ? [] : stage3.pruned_candidates; + if (!Array.isArray(physical) || !Array.isArray(pruned2)) return ['stage2_physical_asap_optimization: physical_candidates and pruned_candidates must be arrays']; + if (!Array.isArray(pruned3)) return ['stage3_plan_selection.pruned_candidates must be an array']; + const isIndex = (v) => Number.isInteger(v) && v >= 0; + const isCandidate = (v) => isIndex(v) && v < physical.length; + const hasProperties = (p) => !!p && typeof p.timing === 'string' && p.lifetime !== undefined; + physical.forEach((c, k) => { + const at = `stage2_physical_asap_optimization.physical_candidates[${k}]`; + if (!c || c.id !== k || !isIndex(c.group) || !isIndex(c.index_in_group) || !hasProperties(c.properties) || !Array.isArray(c.inputs)) { + errors.push(`${at}: needs id ${k}, group, index_in_group, properties {timing, lifetime} and inputs`); + return; + } + c.inputs.forEach((input, i) => { + if (!input || !isIndex(input.group) || !input.requirement || !Array.isArray(input.edges) + || !input.edges.every((e) => e && isCandidate(e.producer) && typeof e.selected === 'boolean' + && (e.rejection === null || typeof e.rejection === 'string'))) { + errors.push(`${at}.inputs[${i}]: needs group, requirement and edges whose producer is a physical candidate`); + } + }); + }); + pruned2.forEach((p, k) => { + if (!p || !isIndex(p.group) || !isIndex(p.index_in_group) || !hasProperties(p.properties) || typeof p.reason !== 'string') { + errors.push(`stage2_physical_asap_optimization.pruned_candidates[${k}]: needs group, index_in_group, properties and reason`); + } + }); + pruned3.forEach((p, k) => { + if (!p || !isIndex(p.group) || !isCandidate(p.candidate) || typeof p.reason !== 'string' + || !(p.dominated_by === null || isCandidate(p.dominated_by))) { + errors.push(`stage3_plan_selection.pruned_candidates[${k}]: needs group, candidate and dominated_by naming physical candidates, and reason`); + } + }); + return errors; +} + // Every shape problem, as readable strings; empty means the document can be // shown. The viewer refuses a document with problems rather than guessing. function validateStagePipeline(doc) { @@ -443,7 +282,7 @@ function validateStagePipeline(doc) { const logical = Array.isArray(stage1.candidates) ? stage1.candidates : []; if (!Array.isArray(stage1.candidates)) errors.push('stage1_logical_asap_optimization.candidates must be an array'); - const logicalIds = uniqueIds(logical, 'stage1_logical_asap_optimization.candidates', errors); + uniqueIds(logical, 'stage1_logical_asap_optimization.candidates', errors); const composed = new Set(); logical.forEach((candidate) => { if (!candidate) return; @@ -468,15 +307,13 @@ function validateStagePipeline(doc) { } errors.push(...validatePhysicalDag(candidate.dag, `stage2_physical_asap_optimization ${candidate.id}`, queries.length)); }); - (Array.isArray(stage2.pruned) ? stage2.pruned : []).forEach((entry, index) => { - if (!entry || !logicalIds.has(entry.from_logical)) errors.push(`stage2_physical_asap_optimization.pruned[${index}]: from_logical is not a Stage 1 candidate`); - }); + errors.push(...validatePrunedAndPhysical(stage2, stage3)); errors.push(...validateDataWorkload(doc.workload.data_workload)); if (errors.length) return errors; const table = selectionTable(doc); const selectionErrors = validateSelection(table, physicalById); if (selectionErrors.length) return selectionErrors; - return validateMaterializedViews(table, physicalById).concat(validateMemoPlan((stage3.search || {}).memo_plan, doc.workload.queries.length)); + return validateMaterializedViews(table, physicalById); } // A query's accuracy target (`AccuracyTarget` JSON: `accuracy_metric`, @@ -516,57 +353,32 @@ function acceptedText(queries) { return parts.length ? parts.join('; ') : null; } -// Stage 3's view of every candidate the document shows: the selected one, -// the other valid ones cheapest first ("costlier"), the rejected ones with -// their reasons ("not judged" when selection failed with an error), then -// the Stage 2 pruned ones and the Stage 1 ones that did not compose -// ("composition error") with theirs. `logical` names the Stage 1 -// candidate to show beside the row; `rank` counts the priced ones. +// Stage 3's view of every candidate the document shows: the selected one +// ("not judged" for another, as when selection failed with an error), then +// the Stage 1 ones that did not compose ("composition error") with their +// error. `logical` names the Stage 1 candidate to show beside the row. function stageCandidateRows(doc) { const selection = selectionTable(doc); - const costs = selection.cost_per_candidate || {}; - const pruned = new Map((selection.pruned_candidates || []).map((r) => [r.candidate, r])); - const accepted = selection.accepted_accuracy_per_candidate || {}; - const physical = doc.stage2_physical_asap_optimization || {}; - const rows = (physical.candidates || []).map((candidate) => { + const costs = selection.cost_per_candidate; + const accepted = selection.accepted_accuracy_per_candidate; + const rows = ((doc.stage2_physical_asap_optimization || {}).candidates || []).map((candidate) => { const cost = costs[candidate.id]; - const rejection = pruned.get(candidate.id); - // A rejection's cause says whether it failed a check or lost under - // the cost model; a failed selection (`error`) judged no candidate. - const status = candidate.id === selection.selected_candidate ? 'selected' - : candidate.id === selection.reference_selected_candidate ? 'reference selected' - : rejection ? (FAILED_CHECK_CAUSES.includes(rejection.cause) ? 'rejected' : 'costlier') - : selection.error ? 'not judged' : 'rejected'; + const selected = candidate.id === selection.selected_candidate; return { id: candidate.id, logical: candidate.from_logical, display_name: candidate.display_name, total: cost ? cost.cost_per_second : null, - rank: null, - status, - reason: status === 'rejected' && rejection ? rejection.reason : null, + status: selected ? 'selected' : 'not judged', + reason: null, accepted: acceptedText(accepted[candidate.id]), }; }); - (physical.pruned || []).forEach((p) => rows.push({ - id: p.from_logical, logical: p.from_logical, display_name: p.display_name, total: null, rank: null, status: 'pruned', reason: p.reason, - })); ((doc.stage1_logical_asap_optimization || {}).candidates || []).filter((c) => 'error' in c).forEach((c) => rows.push({ - id: c.id, logical: c.id, display_name: c.display_name, total: null, rank: null, status: 'composition error', reason: c.error, - })); - // Rejections of candidates the document does not hold (the default search - // keeps only the best one and records the first rejection of each cause), - // and the search's own: listed with their cause, not clickable. - (selection.pruned_candidates_not_enumerated || []).forEach((r) => rows.push({ - id: r.candidate, logical: null, display_name: `not kept · ${r.cause.replace(/_/g, ' ')}`, total: null, rank: null, status: 'not kept', reason: r.reason, + id: c.id, logical: c.id, display_name: c.display_name, total: null, status: 'composition error', reason: c.error, })); - const order = { selected: 0, 'reference selected': 1, costlier: 1, rejected: 2, 'not judged': 2, pruned: 3, 'composition error': 4, 'not kept': 5 }; - rows.sort((a, b) => order[a.status] - order[b.status] || (a.total ?? 0) - (b.total ?? 0)); - let rank = 0; - // Only valid candidates are ranked: the selected one and those that lost - // under the cost model, whether or not the document carries their cost. - rows.forEach((row) => { if (['selected', 'reference selected', 'costlier'].includes(row.status)) row.rank = ++rank; }); - return rows; + const order = { selected: 0, 'not judged': 1, 'composition error': 2 }; + return rows.sort((a, b) => order[a.status] - order[b.status]); } // The candidate list's header: how many candidates Stage 1 enumerated, how @@ -601,54 +413,19 @@ function accuracyGuaranteesText(doc) { }[doc.accuracy_guarantees] || ''; } -// What the search behind the document did, for the candidate list's -// header: "default search · 206 physical candidates checked · 2 independent -// components searched separately · discarded before -// composition: no accuracy guarantee ×3 (q3, q4, q5)", with why the -// workload was searched as one ("searched as one: not in joint space") and -// the classes of interchangeable queries, which took one shared choice -// ("interchangeable queries: (p50, p90, p99)"); under the -// exhaustive search, the pruned candidates by cause with their counts. "" for a -// document that does not say. +// The search behind the document and Stage 3's search report, for the +// candidate list's header, e.g. "candidate-connection search · search +// optimal · MILP 936 variables, …". "" for a document that names no search. function searchText(doc) { - const name = { default: 'default search', exhaustive: 'exhaustive search', 'candidate-connections': 'candidate-connection search', 'memo-milp': 'memo-MILP search', 'memo-brute-force': 'memo brute-force search' }[doc.search]; + const name = { 'candidate-connections': 'candidate-connection search' }[doc.search]; if (!name) return ''; const parts = [name]; - const selection = doc.stage3_plan_selection || {}; - const search = selection.search; - const cause = (c) => String(c).replace(/_/g, ' '); - if (search) { - parts.push(`${search.candidates_checked} physical candidates checked`); - const componentCount = typeof search.candidate_connections?.independent_components === 'number' - ? search.candidate_connections.independent_components - : (search.components || []).length; - if (componentCount > 1) parts.push(`${componentCount} independent components searched separately`); - const queryIds = ((doc.workload || {}).queries || []).map((q) => q.id); - const byCause = new Map(); - (search.queries || []).forEach((query, index) => query.discarded.forEach((d) => { - if (!byCause.has(d.cause)) byCause.set(d.cause, { count: 0, queries: new Set() }); - byCause.get(d.cause).count += 1; - byCause.get(d.cause).queries.add(queryIds[index] || `q${index + 1}`); - })); - if (byCause.size) { - parts.push(`discarded before composition: ${[...byCause].map(([c, v]) => `${cause(c)} ×${v.count} (${[...v.queries].join(', ')})`).join(', ')}`); - } - if (search.raw_scan_candidates_skipped) parts.push(`${search.raw_scan_candidates_skipped} Stage 1 candidates skipped: they scan raw data at query time`); - if (search.raw_scan_assignments_skipped) parts.push(`${search.raw_scan_assignments_skipped} Stage 2 assignments skipped: they scan raw data at query time`); - if (search.searched_as_one) parts.push(`searched as one: ${cause(search.searched_as_one)}`); - const classes = (search.interchangeable_queries || []).map((members) => `(${members.map((i) => queryIds[i] || `q${i + 1}`).join(', ')})`); - if (classes.length) parts.push(`interchangeable queries: ${classes.join(', ')}`); - } - const report = selection.search_report; + const report = (doc.stage3_plan_selection || {}).search_report; if (report) { parts.push(`search ${String(report.status).replace(/_/g, ' ')}`); if (typeof report.cost_lower_bound_per_second === 'number') parts.push(`cost lower bound ${Number(report.cost_lower_bound_per_second.toPrecision(4))}`); parts.push(`MILP ${report.milp_variables} variables, ${report.milp_constraints} constraints · model ${report.model_construction_ms} ms, solve ${report.solver_ms} ms, validation ${report.validation_ms} ms`); } - const counts = selectionTable(doc).pruned_candidate_count_by_cause; - if (doc.search === 'exhaustive' && counts && Object.keys(counts).length) { - parts.push(`pruned: ${Object.entries(counts).sort((a, b) => b[1] - a[1]).map(([c, n]) => `${cause(c)} ×${n}`).join(', ')}`); - } return parts.join(' · '); } @@ -1198,216 +975,3 @@ function planningWorkloadQueries(workload) { function isPlanningWorkload(value) { return !!value && typeof value === 'object' && !isStagePipelineDocument(value) && !!value.query_workload && typeof value.query_workload === 'object'; } - -// The memo-MILP search's selected plan over the memo -// (`stage3_plan_selection.search.memo_plan`): every group, coupling-site and -// query reference in range. An absent plan has nothing to check. -function validateMemoPlan(plan, queryCount) { - if (plan === undefined || plan === null) return []; - const at = 'stage3_plan_selection.search.memo_plan'; - if (typeof plan !== 'object' || !Array.isArray(plan.groups) || !Array.isArray(plan.coupling_sites)) return [`${at} must have groups and coupling_sites arrays`]; - const errors = []; - const groupCount = plan.groups.length; - const siteCount = plan.coupling_sites.length; - const inRange = (ids, n) => Array.isArray(ids) && ids.every((i) => Number.isInteger(i) && i >= 0 && i < n); - plan.groups.forEach((group, index) => { - const where = `${at}.groups[${index}]`; - if (!group || group.group !== index) { errors.push(`${where}: group must be ${index}`); return; } - if (!inRange(group.parents, groupCount)) errors.push(`${where}: parents must name groups`); - if (!inRange(group.queries, queryCount) || !inRange(group.roots_of, queryCount)) errors.push(`${where}: queries and roots_of must name queries`); - if (group.implemented_by !== null && group.implemented_by !== undefined && !inRange([group.implemented_by], groupCount)) errors.push(`${where}: implemented_by must name a group`); - const chosen = group.chosen; - if (chosen && (!inRange(chosen.implements, groupCount) || !inRange(chosen.reads, groupCount) || !inRange(chosen.coupling_sites, siteCount))) { - errors.push(`${where}.chosen: implements and reads must name groups, coupling_sites must name coupling sites`); - } - }); - plan.coupling_sites.forEach((site, index) => { - if (!site || !inRange(site.readers, groupCount)) errors.push(`${at}.coupling_sites[${index}]: readers must name groups`); - }); - return errors; -} - -// A coupling site's chosen threshold as text: a shared build's size, a tumbling window -// chain's grid, a scan's label set or a raw horizon. -function couplingThresholdText(kind, threshold) { - const t = threshold || {}; - switch (kind) { - case 'SharedBuildSize': - if ('state' in t) return `finer state ${summaryFamilyText(t.state)}`; - if (!t.params) return 'exact accumulator (no size)'; - return [Object.keys(t.params)[0]].concat(wireParams(t.params)).join(' · '); - case 'SummaryTumblingWindowChain': return `${durationText(t.tumbling_window_width_ms)} tumbling windows over ${durationText(t.longest_window_ms)} · ${summaryFamilyText(t.family)}`; - case 'ScanLabels': return `labels ${(t.labels || []).join(', ') || 'none'}`; - case 'RawHorizon': return `raw horizon ${durationText(t.horizon_ms)}`; - default: return compactWire(threshold); - } -} - -function gcd(a, b) { return b ? gcd(b, a % b) : a; } - -// The memo-MILP search's view of a document, or null when its search built -// no memo: the MILP summary (incumbent cost, lower bound, gap, rounds, -// whether it certified, and the cost of each query planned alone), each -// memo group with its chosen implementation candidate, and the selected -// plan's shared units: each group one node serves to several readers, and -// each coupling site read by several groups, with its readers, the queries -// behind them, their repeat intervals (a shared unit runs on their union) -// and the threshold (a size is set by its strictest reader). -function memoSearchView(doc) { - const search = (doc.stage3_plan_selection || {}).search || {}; - const candidate = search.candidate_connections; - if (candidate) { - const number = (value) => typeof value === 'number' ? String(Number(value.toPrecision(4))) : null; - return { summary: { - incumbent: number(search.incumbent_cost), lowerBound: number(candidate.lower_bound), - gap: candidate.relative_gap ?? null, rounds: candidate.refinements, - certified: candidate.status === 'optimal', alone: null, saving: null, - clusters: 0, memo: null, objective: candidate.objective, - status: candidate.status, calibration: candidate.calibration_scope, - generationMs: candidate.memo_expansion_ms, modelMs: candidate.model_construction_ms, - solverMs: candidate.solver_ms, validationMs: candidate.validation_ms, - }, groups: [], sharedUnits: [] }; - } - const milp = search.milp; - const plan = search.memo_plan; - if (!milp && !plan) return null; - const queries = doc.workload.queries; - const qid = (i) => (queries[i] || {}).id || `q${i + 1}`; - const gid = (g) => `G${g + 1}`; - const interval = (i) => ((queries[i] || {}).requirements || {}).repeat_interval_ms; - const maxError = (i) => (((queries[i] || {}).requirements || {}).accuracy || {}).max_error; - const fixed = (x) => (typeof x !== 'number' ? null : (x !== 0 && Math.abs(x) < 1e-3 ? x.toExponential(3) : String(Number(x.toPrecision(4))))); - const summary = milp ? { - incumbent: fixed(search.incumbent_cost), - lowerBound: fixed(milp.lower_bound), - gap: typeof milp.gap === 'number' ? milp.gap : null, - rounds: milp.rounds, - certified: typeof milp.gap === 'number' && milp.gap <= 1e-4 && !milp.time_limit_reached, - alone: fixed(milp.queries_alone_cost), - saving: typeof milp.queries_alone_cost === 'number' && milp.queries_alone_cost > 0 && typeof search.incumbent_cost === 'number' - ? 1 - search.incumbent_cost / milp.queries_alone_cost : null, - clusters: (milp.clusters || []).length, - memo: search.memo || null, - } : null; - if (!plan) return { summary, groups: [], sharedUnits: [] }; - // The queries (and their schedule and strictest target) behind readers. - const behind = (groupIds) => [...new Set(groupIds.flatMap((g) => plan.groups[g].queries))].sort((a, b) => a - b); - const schedule = (qs) => { - const every = [...new Set(qs.map(interval).filter((ms) => typeof ms === 'number'))].sort((a, b) => a - b); - if (every.length < 2) return every.length ? `every ${durationText(every[0])}` : '—'; - return `${every.map((ms) => `every ${durationText(ms)}`).join(' ∪ ')} → on a ${durationText(every.reduce(gcd))} grid`; - }; - const strictest = (qs) => { - const approx = qs.filter((q) => typeof maxError(q) === 'number'); - if (!approx.length) return '—'; - const best = Math.min(...approx.map(maxError)); - return `${approx.filter((q) => maxError(q) === best).map(qid).join(', ')} (ε=${best})`; - }; - const groups = plan.groups.map((g) => { - const [kind, body] = stageOperatorParts(g.operator); - const lines = stageNodeLines(g.operator, null).slice(1); - const c = g.chosen; - return { - id: gid(g.group), - label: [kind].concat(lines).join(' · '), - reads: stageLogicalChildren(body).map(gid), - readBy: g.parents.map(gid).concat(g.roots_of.map((q) => `${qid(q)} (root)`)), - queries: g.queries.map(qid), - candidates: g.candidates, - chosen: c ? [`${c.origin} · ${c.operator}`, - c.implements.length > 1 ? `fuses ${c.implements.map(gid).join(', ')}` : '', - c.reads.length ? `reads ${c.reads.map(gid).join(', ')}` : '', - c.built_once ? 'built once per evaluation' : '', - c.coupling_sites.length ? `at ${c.coupling_sites.map((s) => `S${s + 1}`).join(', ')}` : ''].filter(Boolean).join(' · ') - : (g.implemented_by !== null && g.implemented_by !== undefined ? `implemented by ${gid(g.implemented_by)}'s candidate` - : (g.parents.length ? 'no choice: inside its readers\' candidates' : 'not read by the plan')), - shared: g.parents.length + g.roots_of.length > 1, - }; - }); - // The plan's readers of group g: the queries whose root it is, and the - // parents whose chosen candidate (or the candidate fusing them) reads it. - const chosenOf = (p) => { - const parent = plan.groups[p]; - if (parent.chosen) return [p, parent.chosen]; - const by = parent.implemented_by; - return by === null || by === undefined ? [null, null] : [by, plan.groups[by].chosen]; - }; - const planReaders = (g) => { - const parents = [...new Set(g.parents.map(chosenOf).filter(([, c]) => c && c.reads.includes(g.group)).map(([p]) => p))]; - return parents.map(gid).concat(g.roots_of.map(qid)); - }; - const sharedUnits = []; - plan.groups.forEach((g) => { - if (!g.chosen && (g.implemented_by === null || g.implemented_by === undefined)) return; - const readers = planReaders(g); - if (readers.length < 2) return; - const qs = g.queries; - sharedUnits.push({ - unit: `${gid(g.group)} · ${groups[g.group].label}`, - kind: 'shared group', - readers, - queries: qs.map(qid), - threshold: g.chosen ? (g.chosen.built_once ? 'one node, built once per evaluation' : 'one node; its query-time part runs per reader') : `inside ${gid(g.implemented_by)}'s candidate`, - schedule: schedule(qs), - strictest: strictest(qs), - }); - }); - plan.coupling_sites.forEach((site, index) => { - const qs = behind(site.readers); - if (site.readers.length < 2 && qs.length < 2) return; - sharedUnits.push({ - unit: `S${index + 1}`, - kind: `coupling site · ${site.kind}`, - readers: site.readers.map(gid), - queries: qs.map(qid), - threshold: `${couplingThresholdText(site.kind, site.threshold)} (1 of ${site.thresholds} thresholds)`, - schedule: schedule(qs), - strictest: strictest(qs), - }); - }); - // Scan widening is no model variable: when the selected plan is the - // widened variant, a source's scan groups are one scan. - if (plan.scans_widened) { - const bySource = new Map(); - plan.groups.forEach((g) => { - const [kind, body] = stageOperatorParts(g.operator); - if (kind !== 'Scan') return; - const source = wireSource(body.source); - if (!bySource.has(source)) bySource.set(source, []); - bySource.get(source).push(g); - }); - bySource.forEach((scans, source) => { - if (scans.length < 2) return; - const readers = scans.flatMap((g) => g.parents); - const qs = behind(scans.map((g) => g.group)); - sharedUnits.push({ - unit: `${scans.map((g) => gid(g.group)).join(' + ')} · Scan of ${source}`, - kind: 'widened scan', - readers: readers.map(gid), - queries: qs.map(qid), - threshold: 'one scan, widened to the union of its readers\' labels', - schedule: schedule(qs), - strictest: strictest(qs), - }); - }); - } - return { summary, groups, sharedUnits, scansWidened: !!plan.scans_widened }; -} - -// The MILP summary as one line, e.g. "incumbent 1.2 · lower bound 1.2 · -// gap 0 · 3 rounds · certified · queries planned alone 2.4 (sharing saves -// 50%)". -function memoSummaryText(summary) { - if (!summary) return ''; - const parts = [`incumbent ${summary.incumbent ?? '—'}`, `lower bound ${summary.lowerBound ?? '—'}`, - `gap ${summary.gap === null ? '—' : (summary.gap === 0 ? '0' : summary.gap.toExponential(2))}`, `${summary.rounds} round${summary.rounds === 1 ? '' : 's'}`, - summary.certified ? (summary.status ? 'optimal over generated catalog' : 'certified (gap ≤ 1e-4)') : 'not certified']; - if (summary.status) parts.push(`status ${summary.status}`); - if (summary.objective) parts.push(`objective ${summary.objective}`); - if (summary.calibration) parts.push(`calibration ${summary.calibration}`); - if (summary.solverMs !== undefined) parts.push(`generation ${summary.generationMs ?? '—'} ms, model ${summary.modelMs ?? '—'} ms, solve ${summary.solverMs} ms, validation ${summary.validationMs ?? '—'} ms`); - if (summary.clusters > 1) parts.push(`${summary.clusters} independent clusters`); - if (summary.memo) parts.push(`${summary.memo.groups} groups (${summary.memo.shared_groups} shared), ${summary.memo.candidates} implementation candidates`); - if (summary.alone !== null) parts.push(`queries planned alone ${summary.alone}${summary.saving === null ? '' : ` (sharing saves ${Number((summary.saving * 100).toFixed(1))}%)`}`); - return parts.join(' · '); -} diff --git a/tools/dag-viewer/stages.test.mjs b/tools/dag-viewer/stages.test.mjs index ade509f0e..0ada44175 100644 --- a/tools/dag-viewer/stages.test.mjs +++ b/tools/dag-viewer/stages.test.mjs @@ -128,26 +128,16 @@ test('the physical candidate list is in plan-number order', () => { assert.deepEqual(ids.sort((a, b) => call('byPlanNumber', a, b)), ['P1', 'P2', 'P2-m1', 'P3', 'P10']); }); -test('the search header says why the search ran as one and which queries were interchangeable', () => { +test('the search header names the search and its report', () => { const searched = { - search: 'default', - workload: { queries: [{ id: 'p50' }, { id: 'p90' }, { id: 'p99' }, { id: 'total' }] }, - stage3_plan_selection: { - search: { - candidates_checked: 12, queries: [], components: [], raw_scan_candidates_skipped: 0, raw_scan_assignments_skipped: 0, - searched_as_one: 'not_in_joint_space', - interchangeable_queries: [[0, 1, 2]], - }, - }, + search: 'candidate-connections', + stage3_plan_selection: { search_report: { status: 'time_limit', cost_lower_bound_per_second: null, milp_variables: 9, milp_constraints: 4, + model_construction_ms: 1, solver_ms: 2, validation_ms: 3 } }, }; - assert.equal( - call('searchText', searched), - 'default search · 12 physical candidates checked · searched as one: not in joint space · interchangeable queries: (p50, p90, p99)', - ); - // Components searched separately carry no reason; no classes, no text. - searched.stage3_plan_selection.search.searched_as_one = null; - searched.stage3_plan_selection.search.interchangeable_queries = undefined; - assert.equal(call('searchText', searched), 'default search · 12 physical candidates checked'); + assert.equal(call('searchText', searched), + 'candidate-connection search · search time limit · MILP 9 variables, 4 constraints · model 1 ms, solve 2 ms, validation 3 ms'); + assert.equal(call('searchText', { search: 'candidate-connections', stage3_plan_selection: {} }), 'candidate-connection search'); + assert.equal(call('searchText', {}), ''); }); test('the validator accepts a document with and without its memo section', { skip }, () => { @@ -158,10 +148,6 @@ test('the validator accepts a document with and without its memo section', { ski assert.deepEqual([...call('validateStagePipeline', memo)], []); }); -test('a document of another search has no memo-MILP view', { skip }, () => { - assert.equal(call('memoSearchView', doc), null); -}); - test('Stage 2 nodes carry their timing as a class the lane colors', { skip }, () => { assert.equal(call('timingClass', 'ingestion_time'), 'ingestionTime'); assert.equal(call('timingClass', 'QueryTime'), 'queryTime'); @@ -173,91 +159,24 @@ test('Stage 2 nodes carry their timing as a class the lane colors', { skip }, () assert.ok(nodesOf(elements).filter((n) => n.classes === 'queryTime').every((n) => n.data.label.includes('⏱ query time'))); }); -// Current reports retain nullable bounds and cannot certify a timeout incumbent. -test('candidate search report exposes objective and partial status', () => { - const document = { search: 'candidate-connections', workload: { queries: [] }, - stage3_plan_selection: { search: { candidates_checked: 3, incumbent_cost: 2, - candidate_connections: { status: 'time_limit', objective: 'cluster_capacity', - calibration_scope: 'frozen', lower_bound: null, relative_gap: null, - refinements: 3, solver_ms: 4 } } } }; - const view = call('memoSearchView', document); - assert.equal(view.summary.certified, false); - assert.equal(view.summary.lowerBound, null); - assert.equal(view.summary.objective, 'cluster_capacity'); - assert.match(call('searchText', document), /candidate-connection search/); -}); - -test('a document written before the tumbling-window rename (#1163) upgrades to today\'s names', { skip }, () => { - // Today's document, written back with the old names. - const old = JSON.parse(JSON.stringify(doc) - .replaceAll('"SummaryTumblingWindowChain"', '"PaneChain"') - .replaceAll('"tumbling_window_width_ms"', '"pane_width_ms"') - .replaceAll('"tumbling_window_count"', '"pane_count"') - .replaceAll('"newest_tumbling_windows"', '"newest_panes"') - .replaceAll('"tumbling_window_retention_ms"', '"pane_retention_ms"') - .replaceAll('"tumbling_window_width_domain"', '"pane_width_domain"') - .replaceAll('"tumbling_window_widths_pending"', '"pane_widths_pending"')); - assert.ok(JSON.stringify(old).includes('"PaneChain"')); - assert.deepEqual(call('upgradeTumblingWindowNames', old), doc); -}); - -// A document written before `MemoSteps` was dropped opens with today's -// steps: the window-composition step is gone and Pass 2's output is `pass2`. -test('a memo written with the window-composition step upgrades to stage0, pass1, pass2', () => { - const old = { - stage1_logical_asap_optimization: { pass1_pruned: [{ group: 1 }] }, - memo: { - steps: [{ step: 'stage0', title: 'S0' }, { step: 'pass1', title: 'P1' }, { step: 'pass2', title: 'windows' }, { step: 'concrete_states', title: 'rules' }], - enumeration: { step: 'concrete_states', per_step: { stage0: 1, pass1: 2, pass2: 3, concrete_states: 4 }, choices: [] }, - }, - }; - const doc = JSON.parse(JSON.stringify(call('upgradeMemoSteps', old))); - assert.deepEqual(doc.memo.steps.map((s) => [s.step, s.title]), [['stage0', 'S0'], ['pass1', 'P1'], ['pass2', 'Stage 1, Pass 2']]); - assert.deepEqual(doc.memo.enumeration.per_step, { stage0: 1, pass1: 2, pass2: 4 }); - assert.equal(doc.memo.enumeration.step, 'pass2'); - assert.deepEqual(doc.stage1_logical_asap_optimization, { pruned_candidates: [{ group: 1 }] }); - // A candidate the dropped step added stays marked new in `pass2`. - const marked = JSON.parse(JSON.stringify(call('upgradeMemoSteps', { - memo: { - steps: [ - { step: 'stage0', groups: [] }, - { step: 'pass2', groups: [{ id: 2, candidates: [{ node: 5, children: [1], added: true }] }] }, - { step: 'concrete_states', groups: [{ id: 2, candidates: [{ node: 5, children: [1], added: false }, { node: 6, children: [], added: false }] }] }, - ], - }, - }))); - assert.deepEqual(marked.memo.steps[1].groups[0].candidates.map((c) => c.added), [true, false]); - // An old listing of the dropped step lists nothing; the document stays valid. - const listedDropped = { - memo: { - steps: [{ step: 'stage0' }, { step: 'pass1' }, { step: 'pass2' }, { step: 'concrete_states' }], - enumeration: { step: 'pass2', limit: 10, per_step: { stage0: { count: 1, complete: true }, pass2: { count: 2, complete: true }, concrete_states: { count: 9, complete: false } }, choices: [{ id: 'E1' }], priced: { count: 1 } }, - }, - }; - const enumeration = JSON.parse(JSON.stringify(call('upgradeMemoSteps', listedDropped))).memo.enumeration; - assert.equal(enumeration.step, 'pass2'); - assert.deepEqual(enumeration.choices, []); - assert.equal(enumeration.priced, null); - assert.deepEqual(enumeration.per_step, { stage0: { count: 1, complete: true }, pass2: { count: 9, complete: false } }); - // A current document is left as it is. - const current = { memo: { steps: [{ step: 'stage0' }, { step: 'pass1' }, { step: 'pass2' }] } }; - assert.deepEqual(JSON.parse(JSON.stringify(call('upgradeMemoSteps', JSON.parse(JSON.stringify(current))))), current); -}); - -test('a memo written before the rename upgrades its pane origin', () => { - const group = { candidate_count_by_origin: { pass1: 1, panes: 2 }, candidates: [{ origin: 'pass1' }, { origin: 'panes' }] }; - assert.deepEqual(call('upgradeTumblingWindowNames', group), - { candidate_count_by_origin: { pass1: 1, tumbling_windows: 2 }, candidates: [{ origin: 'pass1' }, { origin: 'tumbling_windows' }] }); -}); - -test('the upgrade keeps key order, never lets an old key overwrite a new one, and renames old MILP report origins', () => { - const body = { family: 'f', pane_width_ms: 1, pane_count: 2, child: 0 }; - call('upgradeTumblingWindowNames', body); - assert.deepEqual(Object.keys(body), ['family', 'tumbling_window_width_ms', 'tumbling_window_count', 'child']); - const both = { pane_count: 1, tumbling_window_count: 2 }; - call('upgradeTumblingWindowNames', both); - assert.equal(both.tumbling_window_count, 2); - const report = { candidates_by_origin: { Pass1: 1, Panes: 3 }, chosen: { origin: 'Panes' } }; - assert.deepEqual(call('upgradeTumblingWindowNames', report), - { candidates_by_origin: { Pass1: 1, TumblingWindows: 3 }, chosen: { origin: 'TumblingWindows' } }); +// Stage 2's physical and pruned candidates and Stage 3's pruned candidates +// are checked: ids in range, the fields the memo view reads present. +test('physical and pruned candidate violations are reported', () => { + const edge = { producer: 0, satisfies_logical_requirement: true, satisfies_physical_requirement: true, rejection: null, selected: true }; + const stage2 = () => ({ + physical_candidates: [ + { id: 0, group: 0, index_in_group: 0, properties: { timing: 'ingestion_time', lifetime: 'None' }, inputs: [] }, + { id: 1, group: 1, index_in_group: 0, properties: { timing: 'query_time', lifetime: { OneEvaluation: 'Memory' } }, + inputs: [{ group: 0, requirement: { parameter_floor_for_required_accuracy: null }, edges: [edge] }] }, + ], + pruned_candidates: [{ group: 1, index_in_group: 0, properties: { timing: 'ingestion_time', lifetime: 'None' }, reason: 'no_ingestion_pipeline' }], + }); + const stage3 = () => ({ pruned_candidates: [{ group: 1, candidate: 1, reason: 'dominated_by', dominated_by: 0 }] }); + const check = (edit) => { const s2 = stage2(); const s3 = stage3(); edit(s2, s3); return [...call('validatePrunedAndPhysical', s2, s3)].join('\n'); }; + assert.equal(check(() => {}), ''); + assert.match(check((s2) => { s2.physical_candidates[1].id = 5; }), /physical_candidates\[1\]: needs id 1/); + assert.match(check((s2) => { s2.physical_candidates[1].inputs[0].edges[0].producer = 7; }), /inputs\[0\]: needs group, requirement and edges/); + assert.match(check((s2) => { delete s2.pruned_candidates[0].properties; }), /pruned_candidates\[0\]: needs group, index_in_group, properties and reason/); + assert.match(check((s2, s3) => { s3.pruned_candidates[0].dominated_by = 9; }), /stage3_plan_selection.pruned_candidates\[0\]/); + assert.match(check((s2) => { delete s2.physical_candidates; }), /must be arrays/); }); diff --git a/tools/dag-viewer/test-fixtures/memo-enumeration-small.json b/tools/dag-viewer/test-fixtures/memo-enumeration-small.json deleted file mode 100644 index a5bcc3476..000000000 --- a/tools/dag-viewer/test-fixtures/memo-enumeration-small.json +++ /dev/null @@ -1 +0,0 @@ -{"memo":{"nodes":[{"guarantee":null,"operator":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"source":{"TimeSeries":{"metric":"http_requests_total"}}}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":null,"operator":{"NonASAP":{"TimeRange":{"child":0,"kind":"range","range":{"nanos":0,"secs":60}}}},"result_kind":"range_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":null,"operator":{"NonASAP":{"Aggregate":{"child":1,"filters":[],"having":null,"measures":[{"kind":"rate"}],"output_names":[""],"reduction":"PerEntity"}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":null,"operator":{"NonASAP":{"Aggregate":{"child":2,"filters":[],"having":null,"measures":[{"col":null,"kind":"sum"}],"output_names":[""],"reduction":{"Reduce":[2]}}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"sum","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]}},{"guarantee":null,"operator":{"NonASAP":{"Aggregate":{"child":1,"filters":[],"having":null,"measures":[{"col":null,"kind":"sum"}],"output_names":[""],"reduction":"PerEntity"}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":null,"operator":{"NonASAP":{"Aggregate":{"child":4,"filters":[],"having":null,"measures":[{"accuracy":{"accuracy_scope":"whole_result","failure_probability":0.001,"max_error":0.01},"k":10,"kind":"top_k"}],"output_names":[],"reduction":{"Reduce":[2]}}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"topk_10","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"operator":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"source":{"TimeSeries":{"metric":"http_requests_total"}}}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"operator":{"NonASAP":{"TimeRange":{"child":6,"kind":"range","range":{"nanos":0,"secs":60}}}},"result_kind":"range_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":null,"operator":{"ASAP":{"SummaryAgg":{"child":7,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}},"result_kind":"state","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"operator":{"ASAP":{"FinalizeExactAccumulator":{"child":8}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":null,"operator":{"ASAP":{"SummaryAgg":{"child":9,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":{"Reduce":[2]}}}},"result_kind":"state","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"operator":{"ASAP":{"FinalizeExactAccumulator":{"child":10}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"sum","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]}},{"guarantee":null,"operator":{"ASAP":{"SummaryAgg":{"child":7,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}},"result_kind":"state","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"operator":{"ASAP":{"FinalizeExactAccumulator":{"child":12}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"operator":{"NonASAP":{"Aggregate":{"child":13,"filters":[],"having":null,"measures":[{"accuracy":{"accuracy_scope":"whole_result","failure_probability":0.001,"max_error":0.01},"k":10,"kind":"top_k"}],"output_names":[],"reduction":{"Reduce":[2]}}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"topk_10","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]}},{"guarantee":null,"operator":{"ASAP":{"SummaryAgg":{"child":7,"family":{"Sketch":[{"algorithm":"CmsWithHeap","category":"TopK","params":{"CmsWithHeap":{"depth":7,"heap_size":100,"width":272}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":{"Column":{"Named":"$promql_series_identity"}},"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"samples_of_metric","metric":"http_requests_total"}},"reduction":{"Reduce":[2]}}}},"result_kind":"state","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Sketch":[{"algorithm":"CmsWithHeap","category":"TopK","params":{"CmsWithHeap":{"depth":7,"heap_size":100,"width":272}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]}},{"guarantee":null,"operator":{"ASAP":{"SummaryEstimate":{"query":{"TopK":{"k":10}},"summary_input":15}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"topk","nullable":false,"table":null}],"time_index":null,"unique_keys":[]}},{"guarantee":null,"operator":{"NonASAP":{"Project":{"child":16,"cols":[{"alias":"job","expr":{"Column":0}},{"alias":"topk_10","expr":{"Column":2}},{"alias":"$promql_series_identity","expr":{"Column":1}}],"qualifier":null}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"topk_10","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":null,"unique_keys":[]}},{"guarantee":null,"operator":{"ASAP":{"SummaryAgg":{"child":7,"family":{"Sketch":[{"algorithm":"CountSketchWithHeap","category":"TopK","params":{"CountSketchWithHeap":{"depth":81,"heap_size":100,"width":30000}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":{"Column":{"Named":"$promql_series_identity"}},"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"samples_of_metric","metric":"http_requests_total"}},"reduction":{"Reduce":[2]}}}},"result_kind":"state","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Sketch":[{"algorithm":"CountSketchWithHeap","category":"TopK","params":{"CountSketchWithHeap":{"depth":81,"heap_size":100,"width":30000}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]}},{"guarantee":null,"operator":{"ASAP":{"SummaryEstimate":{"query":{"TopK":{"k":10}},"summary_input":18}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"topk","nullable":false,"table":null}],"time_index":null,"unique_keys":[]}},{"guarantee":null,"operator":{"NonASAP":{"Project":{"child":19,"cols":[{"alias":"job","expr":{"Column":0}},{"alias":"topk_10","expr":{"Column":2}},{"alias":"$promql_series_identity","expr":{"Column":1}}],"qualifier":null}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"topk_10","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":null,"unique_keys":[]}}],"steps":[{"step":"stage0","title":"Stage 0","groups":[{"id":0,"label":"Scan http_requests_total","children":[],"parents":[1],"queries":[0],"roots_of":[],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[],"node":0},{"id":1,"label":"TimeRange 1m","children":[0],"parents":[2],"queries":[0],"roots_of":[],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[],"node":1},{"id":2,"label":"rate per series","children":[1],"parents":[3],"queries":[0],"roots_of":[],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[],"node":2},{"id":3,"label":"sum by (job)","children":[2],"parents":[],"queries":[0],"roots_of":[0],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[],"node":3},{"id":4,"label":"Scan http_requests_total","children":[],"parents":[5],"queries":[1],"roots_of":[],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[],"node":0},{"id":5,"label":"TimeRange 1m","children":[4],"parents":[6],"queries":[1],"roots_of":[],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[],"node":1},{"id":6,"label":"sum_over_time per series","children":[5],"parents":[7],"queries":[1],"roots_of":[],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[],"node":4},{"id":7,"label":"topk by (job) 10","children":[6],"parents":[],"queries":[1],"roots_of":[1],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[],"node":5}]},{"step":"pass1","title":"Stage 1, Pass 1","groups":[{"id":0,"label":"Scan http_requests_total","children":[],"parents":[1],"queries":[0],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[0],"children":[],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"Scan http_requests_total","group_of_node":{},"node":0}],"node":0},{"id":1,"label":"TimeRange 1m","children":[0],"parents":[2],"queries":[0],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[1],"children":[0],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"TimeRange 1m","group_of_node":{"0":0},"node":1}],"node":1},{"id":2,"label":"rate per series","children":[1],"parents":[3],"queries":[0],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[2],"children":[1],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"rate per series","group_of_node":{"1":1},"node":2}],"node":2},{"id":3,"label":"sum by (job)","children":[2],"parents":[],"queries":[0],"roots_of":[0],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[3],"children":[2],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"sum by (job)","group_of_node":{"2":2},"node":3}],"node":3},{"id":4,"label":"Scan http_requests_total","children":[],"parents":[5],"queries":[1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[4],"children":[],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"Scan http_requests_total","group_of_node":{},"node":0}],"node":0},{"id":5,"label":"TimeRange 1m","children":[4],"parents":[6],"queries":[1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[5],"children":[4],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"TimeRange 1m","group_of_node":{"0":4},"node":1}],"node":1},{"id":6,"label":"sum_over_time per series","children":[5],"parents":[7],"queries":[1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[6],"children":[5],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"sum_over_time per series","group_of_node":{"1":5},"node":4}],"node":4},{"id":7,"label":"topk by (job) 10","children":[6],"parents":[],"queries":[1],"roots_of":[1],"candidate_count":4,"candidate_count_by_origin":{"pass1":3,"shared_build":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[7],"children":[6],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"exact accumulator","group_of_node":{"4":6},"node":5},{"index":1,"implements":[7],"children":[6],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"CMS+heap","group_of_node":{"4":6},"node":5},{"index":2,"implements":[7],"children":[6],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"CountSketch+heap","group_of_node":{"4":6},"node":5},{"index":3,"implements":[7],"children":[6],"origin":"shared_build","accuracy_budget_parts":0.5,"added":true,"label":"CMS+heap shared build","group_of_node":{"4":6},"node":5}],"node":5}]}],"selected_choice":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":1},"enumeration":{"step":"pass1","per_step":{"stage0":{"count":1,"complete":true},"pass1":{"count":4,"complete":true}},"limit":1000,"choices":[{"id":"E1","choice":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0},"accuracy_budget_parts_1":true,"selected":false,"valid":true,"rejection":null,"cost_per_second":3.0,"cheaper_than_selected":false,"roots":[11,14]},{"id":"E2","choice":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":1},"accuracy_budget_parts_1":true,"selected":true,"valid":true,"rejection":null,"cost_per_second":2.0,"cheaper_than_selected":false,"roots":[11,17]},{"id":"E3","choice":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":2},"accuracy_budget_parts_1":true,"selected":false,"valid":true,"rejection":null,"cost_per_second":1.5,"cheaper_than_selected":true,"roots":[11,20]},{"id":"E4","choice":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":3},"accuracy_budget_parts_1":false,"selected":false,"valid":false,"rejection":"accuracy_target_missed","cost_per_second":null,"cheaper_than_selected":false,"roots":[11,17]}],"priced":{"count":4,"cheaper_than_selected":1,"selected_cost_per_second":2.0}}}} diff --git a/tools/dag-viewer/test-fixtures/memo-small.json b/tools/dag-viewer/test-fixtures/memo-small.json index 2b8af0eb1..56a0dc7b5 100644 --- a/tools/dag-viewer/test-fixtures/memo-small.json +++ b/tools/dag-viewer/test-fixtures/memo-small.json @@ -1 +1 @@ -{"memo":{"nodes":[{"guarantee":null,"operator":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"source":{"TimeSeries":{"metric":"http_requests_total"}}}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":null,"operator":{"NonASAP":{"TimeRange":{"child":0,"kind":"range","range":{"nanos":0,"secs":60}}}},"result_kind":"range_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":null,"operator":{"NonASAP":{"Aggregate":{"child":1,"filters":[],"having":null,"measures":[{"kind":"rate"}],"output_names":[""],"reduction":"PerEntity"}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":null,"operator":{"NonASAP":{"Aggregate":{"child":2,"filters":[],"having":null,"measures":[{"col":null,"kind":"sum"}],"output_names":[""],"reduction":{"Reduce":[2]}}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"sum","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]}},{"guarantee":null,"operator":{"NonASAP":{"Aggregate":{"child":1,"filters":[],"having":null,"measures":[{"col":null,"kind":"sum"}],"output_names":[""],"reduction":"PerEntity"}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":null,"operator":{"NonASAP":{"Aggregate":{"child":4,"filters":[],"having":null,"measures":[{"accuracy":{"accuracy_scope":"whole_result","failure_probability":0.001,"max_error":0.01},"k":10,"kind":"top_k"}],"output_names":[],"reduction":{"Reduce":[2]}}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"topk_10","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]}},{"guarantee":null,"operator":{"ASAP":{"SummaryAgg":{"child":1,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":"PerEntity"}}},"result_kind":"state","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"operator":{"ASAP":{"FinalizeExactAccumulator":{"child":6}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":null,"operator":{"ASAP":{"SummaryAgg":{"child":2,"family":{"ExactAggregate":["Sum","Sum"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"reduction":{"Reduce":[2]}}}},"result_kind":"state","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"ExactAggregate":["Sum","Sum"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"operator":{"ASAP":{"FinalizeExactAccumulator":{"child":8}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"sum","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]}},{"guarantee":null,"operator":{"ASAP":{"SummaryAgg":{"child":1,"family":{"Sketch":[{"algorithm":"CmsWithHeap","category":"TopK","params":{"CmsWithHeap":{"depth":7,"heap_size":100,"width":272}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":{"Column":{"Named":"$promql_series_identity"}},"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"samples_of_metric","metric":"http_requests_total"}},"reduction":{"Reduce":[2]}}}},"result_kind":"state","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Sketch":[{"algorithm":"CmsWithHeap","category":"TopK","params":{"CmsWithHeap":{"depth":7,"heap_size":100,"width":272}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]}},{"guarantee":null,"operator":{"ASAP":{"SummaryEstimate":{"query":{"TopK":{"k":10}},"summary_input":10}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"topk","nullable":false,"table":null}],"time_index":null,"unique_keys":[]}},{"guarantee":null,"operator":{"NonASAP":{"Project":{"child":11,"cols":[{"alias":"job","expr":{"Column":0}},{"alias":"topk_10","expr":{"Column":2}},{"alias":"$promql_series_identity","expr":{"Column":1}}],"qualifier":null}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"topk_10","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":null,"unique_keys":[]}},{"guarantee":null,"operator":{"ASAP":{"SummaryAgg":{"child":1,"family":{"Sketch":[{"algorithm":"CountSketchWithHeap","category":"TopK","params":{"CountSketchWithHeap":{"depth":81,"heap_size":100,"width":30000}}},"PerSubpopulationInstance"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":{"Column":{"Named":"$promql_series_identity"}},"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"samples_of_metric","metric":"http_requests_total"}},"reduction":{"Reduce":[2]}}}},"result_kind":"state","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Sketch":[{"algorithm":"CountSketchWithHeap","category":"TopK","params":{"CountSketchWithHeap":{"depth":81,"heap_size":100,"width":30000}}},"PerSubpopulationInstance"]},"name":"state","nullable":false,"table":null}],"time_index":null,"unique_keys":[[0]]}},{"guarantee":null,"operator":{"ASAP":{"SummaryEstimate":{"query":{"TopK":{"k":10}},"summary_input":13}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"topk","nullable":false,"table":null}],"time_index":null,"unique_keys":[]}},{"guarantee":null,"operator":{"NonASAP":{"Project":{"child":14,"cols":[{"alias":"job","expr":{"Column":0}},{"alias":"topk_10","expr":{"Column":2}},{"alias":"$promql_series_identity","expr":{"Column":1}}],"qualifier":null}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"float64"},"name":"topk_10","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":null,"unique_keys":[]}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact over exact inputs"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"operator":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"source":{"TimeSeries":{"metric":"http_requests_total"}}}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":null,"operator":{"ASAP":{"SummaryTumblingWindowChain":{"child":16,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"tumbling_window_count":6,"tumbling_window_width_ms":10000,"reduction":"PerEntity"}}},"result_kind":"state","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":null,"operator":{"ASAP":{"SummaryMerge":{"children":[17]}}},"result_kind":"state","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":{"provenance":[{"kind":"exact","reason":"exact accumulator over exact input"}],"spec":{"accuracy_metric":"absolute","accuracy_scope":"per_value","error":{"op":"zero"},"failure_probability":{"op":"zero"}}},"operator":{"ASAP":{"FinalizeExactAccumulator":{"child":18}}},"result_kind":"instant_vector","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}},{"guarantee":null,"operator":{"ASAP":{"SummaryTumblingWindowChain":{"child":0,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"tumbling_window_count":6,"tumbling_window_width_ms":10000,"reduction":"PerEntity"}}},"result_kind":"state","schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"ExactAggregate":["Rate","Rate"]},"name":"state","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]}}],"steps":[{"step":"stage0","title":"Stage 0","groups":[{"id":0,"label":"Scan http_requests_total","children":[],"parents":[1],"queries":[0,1],"roots_of":[],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[],"node":0},{"id":1,"label":"TimeRange 1m","children":[0],"parents":[2,4],"queries":[0,1],"roots_of":[],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[],"node":1},{"id":2,"label":"rate per series","children":[1],"parents":[3],"queries":[0],"roots_of":[],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[],"node":2},{"id":3,"label":"sum by (job)","children":[2],"parents":[],"queries":[0],"roots_of":[0],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[],"node":3},{"id":4,"label":"sum_over_time per series","children":[1],"parents":[5],"queries":[1],"roots_of":[],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[],"node":4},{"id":5,"label":"topk 10 by (job)","children":[4],"parents":[],"queries":[1],"roots_of":[1],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[],"node":5}]},{"step":"pass1","title":"Stage 1, Pass 1","groups":[{"id":0,"label":"Scan http_requests_total","children":[],"parents":[1],"queries":[0,1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[],"children":[],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"Scan","group_of_node":{},"node":0}],"node":0},{"id":1,"label":"TimeRange 1m","children":[0],"parents":[2,4],"queries":[0,1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[],"children":[0],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"TimeRange 1m","group_of_node":{"0":0},"node":1}],"node":1},{"id":2,"label":"rate per series","children":[1],"parents":[3],"queries":[0],"roots_of":[],"candidate_count":2,"candidate_count_by_origin":{"pass1":2},"candidates_capped":false,"candidates":[{"index":0,"implements":[],"children":[1],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"exact rate accumulator","group_of_node":{"1":1},"node":7},{"index":1,"implements":[],"children":[1],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"exact Aggregate rate","group_of_node":{"1":1},"node":2}],"node":2},{"id":3,"label":"sum by (job)","children":[2],"parents":[],"queries":[0],"roots_of":[0],"candidate_count":2,"candidate_count_by_origin":{"pass1":2},"candidates_capped":false,"candidates":[{"index":0,"implements":[],"children":[2],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"exact Aggregate sum","group_of_node":{"2":2},"node":3},{"index":1,"implements":[],"children":[2],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"exact sum accumulator","group_of_node":{"2":2},"node":9}],"node":3},{"id":4,"label":"sum_over_time per series","children":[1],"parents":[5],"queries":[1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[],"children":[1],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"exact Aggregate sum_over_time","group_of_node":{"1":1},"node":4}],"node":4},{"id":5,"label":"topk 10 by (job)","children":[4],"parents":[],"queries":[1],"roots_of":[1],"candidate_count":3,"candidate_count_by_origin":{"pass1":3},"candidates_capped":false,"candidates":[{"index":0,"implements":[],"children":[4],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"exact Aggregate topk","group_of_node":{"4":4},"node":5},{"index":1,"implements":[],"children":[1],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"CMS+heap depth 7 width 272","group_of_node":{"1":1},"node":12},{"index":2,"implements":[],"children":[1],"origin":"pass1","accuracy_budget_parts":1,"added":true,"label":"CountSketch+heap","group_of_node":{"1":1},"node":15}],"node":5}]},{"step":"pass2","title":"Stage 1, Pass 2","groups":[{"id":0,"label":"Scan http_requests_total","children":[],"parents":[1,6],"queries":[0,1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[],"children":[],"origin":"pass1","accuracy_budget_parts":1,"added":false,"label":"Scan","group_of_node":{},"node":0}],"node":0},{"id":1,"label":"TimeRange 1m","children":[0],"parents":[2,4],"queries":[0,1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[],"children":[0],"origin":"pass1","accuracy_budget_parts":1,"added":false,"label":"TimeRange 1m","group_of_node":{"0":0},"node":1}],"node":1},{"id":2,"label":"rate per series","children":[1],"parents":[3],"queries":[0],"roots_of":[],"candidate_count":20,"candidate_count_by_origin":{"pass1":2,"tumbling_windows":9,"shared_build":9},"candidates_capped":true,"candidates":[{"index":0,"implements":[],"children":[1],"origin":"pass1","accuracy_budget_parts":1,"added":false,"label":"exact rate accumulator","group_of_node":{"1":1},"node":7},{"index":1,"implements":[],"children":[1],"origin":"pass1","accuracy_budget_parts":1,"added":false,"label":"exact Aggregate rate","group_of_node":{"1":1},"node":2},{"index":2,"implements":[],"children":[6],"origin":"tumbling_windows","accuracy_budget_parts":1,"added":true,"label":"rate accumulator over G6's panes, variant 1","group_of_node":{"17":6},"node":19},{"index":3,"implements":[],"children":[6],"origin":"tumbling_windows","accuracy_budget_parts":1,"added":true,"label":"rate accumulator over G6's panes, variant 2","group_of_node":{"17":6},"node":19},{"index":4,"implements":[],"children":[6],"origin":"tumbling_windows","accuracy_budget_parts":1,"added":true,"label":"rate accumulator over G6's panes, variant 3","group_of_node":{"17":6},"node":19},{"index":5,"implements":[],"children":[6],"origin":"tumbling_windows","accuracy_budget_parts":1,"added":true,"label":"rate accumulator over G6's panes, variant 4","group_of_node":{"17":6},"node":19},{"index":6,"implements":[],"children":[6],"origin":"tumbling_windows","accuracy_budget_parts":1,"added":true,"label":"rate accumulator over G6's panes, variant 5","group_of_node":{"17":6},"node":19},{"index":7,"implements":[],"children":[6],"origin":"tumbling_windows","accuracy_budget_parts":1,"added":true,"label":"rate accumulator over G6's panes, variant 6","group_of_node":{"17":6},"node":19},{"index":8,"implements":[],"children":[6],"origin":"shared_build","accuracy_budget_parts":1,"added":true,"label":"rate accumulator read from shared build, variant 1","group_of_node":{"17":6},"node":19},{"index":9,"implements":[],"children":[6],"origin":"shared_build","accuracy_budget_parts":1,"added":true,"label":"rate accumulator read from shared build, variant 2","group_of_node":{"17":6},"node":19},{"index":10,"implements":[],"children":[6],"origin":"shared_build","accuracy_budget_parts":1,"added":true,"label":"rate accumulator read from shared build, variant 3","group_of_node":{"17":6},"node":19},{"index":11,"implements":[],"children":[6],"origin":"shared_build","accuracy_budget_parts":1,"added":true,"label":"rate accumulator read from shared build, variant 4","group_of_node":{"17":6},"node":19},{"index":12,"implements":[],"children":[6],"origin":"shared_build","accuracy_budget_parts":1,"added":true,"label":"rate accumulator read from shared build, variant 5","group_of_node":{"17":6},"node":19}],"node":2},{"id":3,"label":"sum by (job)","children":[2],"parents":[],"queries":[0],"roots_of":[0],"candidate_count":3,"candidate_count_by_origin":{"pass1":2,"rollup":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[],"children":[2],"origin":"pass1","accuracy_budget_parts":1,"added":false,"label":"exact Aggregate sum","group_of_node":{"2":2},"node":3},{"index":1,"implements":[],"children":[2],"origin":"pass1","accuracy_budget_parts":1,"added":false,"label":"exact sum accumulator","group_of_node":{"2":2},"node":9},{"index":2,"implements":[],"children":[2],"origin":"rollup","accuracy_budget_parts":1,"added":true,"label":"sum by (job) rolled up from G2's accumulator","group_of_node":{"2":2},"node":9}],"node":3},{"id":4,"label":"sum_over_time per series","children":[1],"parents":[5],"queries":[1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[],"children":[1],"origin":"pass1","accuracy_budget_parts":1,"added":false,"label":"exact Aggregate sum_over_time","group_of_node":{"1":1},"node":4}],"node":4},{"id":5,"label":"topk 10 by (job)","children":[4],"parents":[],"queries":[1],"roots_of":[1],"candidate_count":3,"candidate_count_by_origin":{"pass1":3},"candidates_capped":false,"candidates":[{"index":0,"implements":[],"children":[4],"origin":"pass1","accuracy_budget_parts":1,"added":false,"label":"exact Aggregate topk","group_of_node":{"4":4},"node":5},{"index":1,"implements":[],"children":[1],"origin":"pass1","accuracy_budget_parts":1,"added":false,"label":"CMS+heap depth 7 width 272","group_of_node":{"1":1},"node":12},{"index":2,"implements":[],"children":[1],"origin":"pass1","accuracy_budget_parts":1,"added":false,"label":"CountSketch+heap","group_of_node":{"1":1},"node":15}],"node":5},{"id":6,"label":"SummaryTumblingWindowChain 6 × 10 s","children":[0],"parents":[],"queries":[0],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"shared_build":1},"candidates_capped":false,"candidates":[{"index":0,"implements":[],"children":[0],"origin":"shared_build","accuracy_budget_parts":1,"added":true,"label":"SummaryTumblingWindowChain 6 × 10 s, rate accumulator","group_of_node":{"0":0},"node":20}],"node":17}]}],"selected_choice":{"5":1,"3":0,"2":2,"6":0,"1":0,"0":0,"4":0}}} +{"memo":{"steps":[{"step":"stage0","title":"Stage 0","groups":[{"id":0,"label":"Scan http_requests_total","operator":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"source":{"TimeSeries":{"metric":"http_requests_total"}}}}},"children":[],"parents":[1],"queries":[0,1],"roots_of":[],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[]},{"id":1,"label":"TimeRange 1m","operator":{"NonASAP":{"TimeRange":{"child":0,"kind":"range","range":{"nanos":0,"secs":60}}}},"children":[0],"parents":[2,4],"queries":[0,1],"roots_of":[],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[]},{"id":2,"label":"rate per series","operator":{"NonASAP":{"Aggregate":{"child":1,"filters":[],"having":null,"measures":[{"kind":"rate"}],"output_names":[""],"reduction":"PerEntity"}}},"children":[1],"parents":[3],"queries":[0],"roots_of":[],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[]},{"id":3,"label":"sum by (job)","operator":{"NonASAP":{"Aggregate":{"child":2,"filters":[],"having":null,"measures":[{"col":null,"kind":"sum"}],"output_names":[""],"reduction":{"Reduce":[2]}}}},"children":[2],"parents":[],"queries":[0],"roots_of":[0],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[]},{"id":4,"label":"sum_over_time per series","operator":{"NonASAP":{"Aggregate":{"child":1,"filters":[],"having":null,"measures":[{"col":null,"kind":"sum"}],"output_names":[""],"reduction":"PerEntity"}}},"children":[1],"parents":[5],"queries":[1],"roots_of":[],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[]},{"id":5,"label":"topk 10 by (job)","operator":{"NonASAP":{"Aggregate":{"child":4,"filters":[],"having":null,"measures":[{"accuracy":{"accuracy_scope":"whole_result","failure_probability":0.001,"max_error":0.01},"k":10,"kind":"top_k"}],"output_names":[],"reduction":{"Reduce":[2]}}}},"children":[4],"parents":[],"queries":[1],"roots_of":[1],"candidate_count":0,"candidate_count_by_origin":{},"candidates_capped":false,"candidates":[]}]},{"step":"pass1","title":"Stage 1, Pass 1","groups":[{"id":0,"label":"Scan http_requests_total","operator":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"source":{"TimeSeries":{"metric":"http_requests_total"}}}}},"children":[],"parents":[1],"queries":[0,1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"origin":"pass1","added":true,"label":"Scan","operator":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"source":{"TimeSeries":{"metric":"http_requests_total"}}}}},"children":[],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[]}]},{"id":1,"label":"TimeRange 1m","operator":{"NonASAP":{"TimeRange":{"child":0,"kind":"range","range":{"nanos":0,"secs":60}}}},"children":[0],"parents":[2,4],"queries":[0,1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"origin":"pass1","added":true,"label":"TimeRange 1m","operator":{"NonASAP":{"TimeRange":{"child":0,"kind":"range","range":{"nanos":0,"secs":60}}}},"children":[0],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]}]},{"id":2,"label":"rate per series","operator":{"NonASAP":{"Aggregate":{"child":1,"filters":[],"having":null,"measures":[{"kind":"rate"}],"output_names":[""],"reduction":"PerEntity"}}},"children":[1],"parents":[3],"queries":[0],"roots_of":[],"candidate_count":2,"candidate_count_by_origin":{"pass1":2},"candidates_capped":false,"candidates":[{"index":0,"origin":"pass1","added":true,"label":"exact rate accumulator","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":1}}},"children":[1],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":1,"origin":"pass1","added":true,"label":"exact Aggregate rate","operator":{"NonASAP":{"Aggregate":{"child":1,"filters":[],"having":null,"measures":[{"kind":"rate"}],"output_names":[""],"reduction":"PerEntity"}}},"children":[1],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]}]},{"id":3,"label":"sum by (job)","operator":{"NonASAP":{"Aggregate":{"child":2,"filters":[],"having":null,"measures":[{"col":null,"kind":"sum"}],"output_names":[""],"reduction":{"Reduce":[2]}}}},"children":[2],"parents":[],"queries":[0],"roots_of":[0],"candidate_count":2,"candidate_count_by_origin":{"pass1":2},"candidates_capped":false,"candidates":[{"index":0,"origin":"pass1","added":true,"label":"exact Aggregate sum","operator":{"NonASAP":{"Aggregate":{"child":2,"filters":[],"having":null,"measures":[{"col":null,"kind":"sum"}],"output_names":[""],"reduction":{"Reduce":[2]}}}},"children":[2],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":1,"origin":"pass1","added":true,"label":"exact sum accumulator","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":2}}},"children":[2],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]}]},{"id":4,"label":"sum_over_time per series","operator":{"NonASAP":{"Aggregate":{"child":1,"filters":[],"having":null,"measures":[{"col":null,"kind":"sum"}],"output_names":[""],"reduction":"PerEntity"}}},"children":[1],"parents":[5],"queries":[1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"origin":"pass1","added":true,"label":"exact Aggregate sum_over_time","operator":{"NonASAP":{"Aggregate":{"child":1,"filters":[],"having":null,"measures":[{"col":null,"kind":"sum"}],"output_names":[""],"reduction":"PerEntity"}}},"children":[1],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]}]},{"id":5,"label":"topk 10 by (job)","operator":{"NonASAP":{"Aggregate":{"child":4,"filters":[],"having":null,"measures":[{"accuracy":{"accuracy_scope":"whole_result","failure_probability":0.001,"max_error":0.01},"k":10,"kind":"top_k"}],"output_names":[],"reduction":{"Reduce":[2]}}}},"children":[4],"parents":[],"queries":[1],"roots_of":[1],"candidate_count":3,"candidate_count_by_origin":{"pass1":3},"candidates_capped":false,"candidates":[{"index":0,"origin":"pass1","added":true,"label":"exact Aggregate topk","operator":{"NonASAP":{"Aggregate":{"child":4,"filters":[],"having":null,"measures":[{"accuracy":{"accuracy_scope":"whole_result","failure_probability":0.001,"max_error":0.01},"k":10,"kind":"top_k"}],"output_names":[],"reduction":{"Reduce":[2]}}}},"children":[4],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":1,"origin":"pass1","added":true,"label":"CMS+heap depth 7 width 272","operator":{"NonASAP":{"Project":{"child":1,"cols":[{"alias":"job","expr":{"Column":0}},{"alias":"topk_10","expr":{"Column":2}},{"alias":"$promql_series_identity","expr":{"Column":1}}],"qualifier":null}}},"children":[1],"fused_groups":[4],"logical_properties":{"parameters":{"CmsWithHeap":{"depth":7,"heap_size":10,"width":272}},"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":2,"origin":"pass1","added":true,"label":"CountSketch+heap","operator":{"NonASAP":{"Project":{"child":1,"cols":[{"alias":"job","expr":{"Column":0}},{"alias":"topk_10","expr":{"Column":2}},{"alias":"$promql_series_identity","expr":{"Column":1}}],"qualifier":null}}},"children":[1],"fused_groups":[4],"logical_properties":{"parameters":{"CountSketchWithHeap":{"depth":5,"heap_size":10,"width":1024}},"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]}]}]},{"step":"pass2","title":"Stage 1, Pass 2","groups":[{"id":0,"label":"Scan http_requests_total","operator":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"source":{"TimeSeries":{"metric":"http_requests_total"}}}}},"children":[],"parents":[1,6],"queries":[0,1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"origin":"pass1","added":false,"label":"Scan","operator":{"NonASAP":{"Scan":{"predicates":[],"schema":{"closed":true,"fields":[{"dtype":{"Plain":"timestamp"},"name":"ts","nullable":false,"table":null},{"dtype":{"Plain":"float64"},"name":"value","nullable":false,"table":null},{"dtype":{"Plain":"utf8"},"name":"job","nullable":true,"table":null},{"dtype":{"Plain":"utf8"},"name":"$promql_series_identity","nullable":false,"table":null}],"time_index":0,"unique_keys":[[3,0]]},"source":{"TimeSeries":{"metric":"http_requests_total"}}}}},"children":[],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[]}]},{"id":1,"label":"TimeRange 1m","operator":{"NonASAP":{"TimeRange":{"child":0,"kind":"range","range":{"nanos":0,"secs":60}}}},"children":[0],"parents":[2,4],"queries":[0,1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"origin":"pass1","added":false,"label":"TimeRange 1m","operator":{"NonASAP":{"TimeRange":{"child":0,"kind":"range","range":{"nanos":0,"secs":60}}}},"children":[0],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]}]},{"id":2,"label":"rate per series","operator":{"NonASAP":{"Aggregate":{"child":1,"filters":[],"having":null,"measures":[{"kind":"rate"}],"output_names":[""],"reduction":"PerEntity"}}},"children":[1],"parents":[3],"queries":[0],"roots_of":[],"candidate_count":20,"candidate_count_by_origin":{"pass1":2,"tumbling_windows":9,"summary_input":9},"candidates_capped":true,"candidates":[{"index":0,"origin":"pass1","added":false,"label":"exact rate accumulator","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":1}}},"children":[1],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":1,"origin":"pass1","added":false,"label":"exact Aggregate rate","operator":{"NonASAP":{"Aggregate":{"child":1,"filters":[],"having":null,"measures":[{"kind":"rate"}],"output_names":[""],"reduction":"PerEntity"}}},"children":[1],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":2,"origin":"tumbling_windows","added":true,"label":"rate accumulator over G6's panes, variant 1","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":6}}},"children":[6],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":{"tumbling":{"width_ms":10000}}},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":3,"origin":"tumbling_windows","added":true,"label":"rate accumulator over G6's panes, variant 2","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":6}}},"children":[6],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":{"tumbling":{"width_ms":10000}}},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":4,"origin":"tumbling_windows","added":true,"label":"rate accumulator over G6's panes, variant 3","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":6}}},"children":[6],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":{"tumbling":{"width_ms":10000}}},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":5,"origin":"tumbling_windows","added":true,"label":"rate accumulator over G6's panes, variant 4","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":6}}},"children":[6],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":{"tumbling":{"width_ms":10000}}},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":6,"origin":"tumbling_windows","added":true,"label":"rate accumulator over G6's panes, variant 5","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":6}}},"children":[6],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":{"tumbling":{"width_ms":10000}}},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":7,"origin":"tumbling_windows","added":true,"label":"rate accumulator over G6's panes, variant 6","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":6}}},"children":[6],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":{"tumbling":{"width_ms":10000}}},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":8,"origin":"summary_input","added":true,"label":"rate accumulator over a summary input, variant 1","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":6}}},"children":[6],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":{"tumbling":{"width_ms":10000}}},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":9,"origin":"summary_input","added":true,"label":"rate accumulator over a summary input, variant 2","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":6}}},"children":[6],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":{"tumbling":{"width_ms":10000}}},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":10,"origin":"summary_input","added":true,"label":"rate accumulator over a summary input, variant 3","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":6}}},"children":[6],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":{"tumbling":{"width_ms":10000}}},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":11,"origin":"summary_input","added":true,"label":"rate accumulator over a summary input, variant 4","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":6}}},"children":[6],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":{"tumbling":{"width_ms":10000}}},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":12,"origin":"summary_input","added":true,"label":"rate accumulator over a summary input, variant 5","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":6}}},"children":[6],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":{"tumbling":{"width_ms":10000}}},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]}]},{"id":3,"label":"sum by (job)","operator":{"NonASAP":{"Aggregate":{"child":2,"filters":[],"having":null,"measures":[{"col":null,"kind":"sum"}],"output_names":[""],"reduction":{"Reduce":[2]}}}},"children":[2],"parents":[],"queries":[0],"roots_of":[0],"candidate_count":3,"candidate_count_by_origin":{"pass1":2,"rollup":1},"candidates_capped":false,"candidates":[{"index":0,"origin":"pass1","added":false,"label":"exact Aggregate sum","operator":{"NonASAP":{"Aggregate":{"child":2,"filters":[],"having":null,"measures":[{"col":null,"kind":"sum"}],"output_names":[""],"reduction":{"Reduce":[2]}}}},"children":[2],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":1,"origin":"pass1","added":false,"label":"exact sum accumulator","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":2}}},"children":[2],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":2,"origin":"rollup","added":true,"label":"sum by (job) rolled up from G2's accumulator","operator":{"ASAP":{"FinalizeExactAccumulator":{"child":2}}},"children":[2],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]}]},{"id":4,"label":"sum_over_time per series","operator":{"NonASAP":{"Aggregate":{"child":1,"filters":[],"having":null,"measures":[{"col":null,"kind":"sum"}],"output_names":[""],"reduction":"PerEntity"}}},"children":[1],"parents":[5],"queries":[1],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"pass1":1},"candidates_capped":false,"candidates":[{"index":0,"origin":"pass1","added":false,"label":"exact Aggregate sum_over_time","operator":{"NonASAP":{"Aggregate":{"child":1,"filters":[],"having":null,"measures":[{"col":null,"kind":"sum"}],"output_names":[""],"reduction":"PerEntity"}}},"children":[1],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]}]},{"id":5,"label":"topk 10 by (job)","operator":{"NonASAP":{"Aggregate":{"child":4,"filters":[],"having":null,"measures":[{"accuracy":{"accuracy_scope":"whole_result","failure_probability":0.001,"max_error":0.01},"k":10,"kind":"top_k"}],"output_names":[],"reduction":{"Reduce":[2]}}}},"children":[4],"parents":[],"queries":[1],"roots_of":[1],"candidate_count":3,"candidate_count_by_origin":{"pass1":3},"candidates_capped":false,"candidates":[{"index":0,"origin":"pass1","added":false,"label":"exact Aggregate topk","operator":{"NonASAP":{"Aggregate":{"child":4,"filters":[],"having":null,"measures":[{"accuracy":{"accuracy_scope":"whole_result","failure_probability":0.001,"max_error":0.01},"k":10,"kind":"top_k"}],"output_names":[],"reduction":{"Reduce":[2]}}}},"children":[4],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":1,"origin":"pass1","added":false,"label":"CMS+heap depth 7 width 272","operator":{"NonASAP":{"Project":{"child":1,"cols":[{"alias":"job","expr":{"Column":0}},{"alias":"topk_10","expr":{"Column":2}},{"alias":"$promql_series_identity","expr":{"Column":1}}],"qualifier":null}}},"children":[1],"fused_groups":[4],"logical_properties":{"parameters":{"CmsWithHeap":{"depth":7,"heap_size":10,"width":272}},"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]},{"index":2,"origin":"pass1","added":false,"label":"CountSketch+heap","operator":{"NonASAP":{"Project":{"child":1,"cols":[{"alias":"job","expr":{"Column":0}},{"alias":"topk_10","expr":{"Column":2}},{"alias":"$promql_series_identity","expr":{"Column":1}}],"qualifier":null}}},"children":[1],"fused_groups":[4],"logical_properties":{"parameters":{"CountSketchWithHeap":{"depth":5,"heap_size":10,"width":1024}},"window_layout":null},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]}]},{"id":6,"label":"SummaryTumblingWindowChain 6 × 10 s","operator":{"ASAP":{"SummaryTumblingWindowChain":{"child":0,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"tumbling_window_count":6,"tumbling_window_width_ms":10000,"reduction":"PerEntity"}}},"children":[0],"parents":[],"queries":[0],"roots_of":[],"candidate_count":1,"candidate_count_by_origin":{"tumbling_windows":1},"candidates_capped":false,"candidates":[{"index":0,"origin":"tumbling_windows","added":true,"label":"SummaryTumblingWindowChain 6 × 10 s, rate accumulator","operator":{"ASAP":{"SummaryTumblingWindowChain":{"child":0,"family":{"ExactAggregate":["Rate","Rate"]},"filter":null,"grouping":"PerSubpopulationInstance","input":{"item":null,"weight":{"Column":"SampleValue"},"weight_domain":{"kind":"unknown_or_signed"}},"tumbling_window_count":6,"tumbling_window_width_ms":10000,"reduction":"PerEntity"}}},"children":[0],"fused_groups":[],"logical_properties":{"parameters":null,"window_layout":{"tumbling":{"width_ms":10000}}},"input_requirements":[{"parameter_floor_for_required_accuracy":null}]}]}]}],"selected_candidates":{"0":[0],"1":[0],"2":[2,8],"3":[0],"4":[0],"5":[1],"6":[0]}},"stage2_physical_asap_optimization":{"physical_candidates":[{"id":0,"group":0,"index_in_group":0,"properties":{"timing":"ingestion_time","lifetime":"None"},"inputs":[]},{"id":1,"group":1,"index_in_group":0,"properties":{"timing":"ingestion_time","lifetime":"None"},"inputs":[{"group":0,"requirement":{"parameter_floor_for_required_accuracy":null},"edges":[{"producer":0,"satisfies_logical_requirement":true,"satisfies_physical_requirement":true,"rejection":null,"selected":true}]}]},{"id":2,"group":5,"index_in_group":1,"properties":{"timing":"query_time","lifetime":{"OneEvaluation":"Memory"}},"inputs":[{"group":1,"requirement":{"parameter_floor_for_required_accuracy":null},"edges":[{"producer":1,"satisfies_logical_requirement":true,"satisfies_physical_requirement":false,"rejection":"α^phys = 0: consumer (QueryTime, OneEvaluation(Memory)) cannot read producer (IngestionTime, None)","selected":false}]}]},{"id":3,"group":5,"index_in_group":1,"properties":{"timing":"ingestion_time","lifetime":{"AcrossEvaluations":"Memory"}},"inputs":[{"group":1,"requirement":{"parameter_floor_for_required_accuracy":null},"edges":[{"producer":1,"satisfies_logical_requirement":true,"satisfies_physical_requirement":true,"rejection":null,"selected":true}]}]},{"id":4,"group":1,"index_in_group":0,"properties":{"timing":"query_time","lifetime":"None"},"inputs":[{"group":0,"requirement":{"parameter_floor_for_required_accuracy":null},"edges":[{"producer":0,"satisfies_logical_requirement":true,"satisfies_physical_requirement":true,"rejection":null,"selected":false}]}]}],"pruned_candidates":[{"group":5,"index_in_group":2,"properties":{"timing":"ingestion_time","lifetime":"None"},"reason":"no_ingestion_pipeline"}]},"stage3_plan_selection":{"pruned_candidates":[{"group":5,"candidate":2,"reason":"dominated_by","dominated_by":3},{"group":1,"candidate":4,"reason":"usage_not_costable","dominated_by":null}]}} \ No newline at end of file diff --git a/tools/dag-viewer/test_viewer.py b/tools/dag-viewer/test_viewer.py index 8924d2323..d5de452c4 100644 --- a/tools/dag-viewer/test_viewer.py +++ b/tools/dag-viewer/test_viewer.py @@ -25,10 +25,9 @@ WORKLOADS = HERE / "workloads" # #509 Example 1: two PromQL panels over one metric, accuracy guarantees enforced. EXAMPLE1 = WORKLOADS / "planner-layering" / "example1.json" -# A hand-written priced `memo` section for Example 1: four enumerated -# Pass 1 DAGs, E2 selected, E3 cheaper than it, E4 invalid. -MEMO_ENUMERATION = HERE / "test-fixtures" / "memo-enumeration-small.json" -# A hand-written `memo` section over example1's two queries (memo.js tests). +# A hand-written `memo` section over example1's two queries, with Stage 2's +# physical and pruned candidates and Stage 3's pruned candidates (memo.js +# tests). MEMO_SMALL = HERE / "test-fixtures" / "memo-small.json" # #1005's ratio-of-quantiles query. RATIO_OF_QUANTILES = HERE / "memo-examples" / "promql" / "ratio-of-quantiles-5m.json" @@ -207,7 +206,7 @@ def test_data_workload_and_materialized_view_violations_are_reported(self): def test_pass1_failure_is_valid(self): """A run whose Pass 1 failed has Stage 0, the error and no plan.""" self.doc["stage1_logical_asap_optimization"] = {"combinations": 0, "capped": False, "candidates": [], "error": "Pass 1: bad"} - self.doc["stage2_physical_asap_optimization"] = {"candidates": [], "pruned": []} + self.doc["stage2_physical_asap_optimization"] = {"candidates": [], "physical_candidates": [], "pruned_candidates": []} self.doc["stage3_plan_selection"] = {"error": "Pass 1: bad"} self.assertEqual(self.validate(self.doc), []) @@ -236,9 +235,12 @@ def test_contract_violations_are_reported(self): "physical root shape": lambda d: physical(d)[0]["dag"]["roots"].__setitem__(0, {"Operator": 3}), "physical roots per query": lambda d: physical(d)[0]["dag"]["roots"].pop(), "edge endpoint": lambda d: physical(d)[0]["dag"]["edges"][0].update(producer=42), - "pruned from_logical": lambda d: d["stage2_physical_asap_optimization"]["pruned"].append({"from_logical": "L99", "display_name": "x", "reason": "r"}), + "edge producer names no physical candidate": lambda d: next( + c for c in d["stage2_physical_asap_optimization"]["physical_candidates"] if c["inputs"])["inputs"][0]["edges"][0].update(producer=99999), + "stage 2 pruned without reason": lambda d: d["stage2_physical_asap_optimization"]["pruned_candidates"][0].pop("reason"), + "stage 3 pruned dominated by no physical candidate": lambda d: selection(d)["pruned_candidates"].append( + {"group": 0, "candidate": 0, "reason": "dominated_by", "dominated_by": 99999}), "selected plan missing": lambda d: physical(d)[0].update(id="P9"), - "unaccounted candidate": lambda d: physical(d).append(dict(physical(d)[0], id="P2")), "per_node": lambda d: selection(d)["cost"]["per_node"].update({"99": {"cost_per_second": 1, "multiplier": 1}}), "cost per second": lambda d: selection(d)["cost"].pop("cost_per_second"), "missing stage": lambda d: d.pop("stage2_physical_asap_optimization"), @@ -279,18 +281,15 @@ def setUp(self): self.js = stages_js() self.doc = example1() - def test_pruned_and_composition_errors_come_last_with_their_reasons(self): - """A Stage 2 pruned candidate and a Stage 1 candidate that did not - compose are rows too, after the Stage 3 ones.""" - self.doc["stage2_physical_asap_optimization"]["pruned"].append({"from_logical": "L2", "display_name": "Q1 exact", "reason": "no implementation"}) + def test_composition_errors_come_last_with_their_reasons(self): + """A Stage 1 candidate that did not compose is a row too, after the + selected one.""" self.doc["stage1_logical_asap_optimization"]["candidates"].append({"id": "L99", "display_name": "Q1 exact", "error": "cannot substitute"}) rows = self.js.call("stageCandidateRows", self.doc) + self.assertEqual(rows[0]["status"], "selected") self.assertEqual( - rows[-2:], - [ - {"id": "L2", "logical": "L2", "display_name": "Q1 exact", "total": None, "rank": None, "status": "pruned", "reason": "no implementation"}, - {"id": "L99", "logical": "L99", "display_name": "Q1 exact", "total": None, "rank": None, "status": "composition error", "reason": "cannot substitute"}, - ], + rows[-1], + {"id": "L99", "logical": "L99", "display_name": "Q1 exact", "total": None, "status": "composition error", "reason": "cannot substitute"}, ) def test_failed_selection_leaves_candidates_not_judged(self): @@ -306,7 +305,7 @@ def test_valid_rows_show_the_accepted_metric(self): accepted and whether the target set one; invalid rows say nothing.""" rows = self.js.call("stageCandidateRows", self.doc) for row in rows: - if row["status"] in ("selected", "costlier"): + if row["status"] == "selected": self.assertEqual(row["accepted"], "q1: metric not set; accepted exact; q2: metric not set; accepted exact") else: self.assertIsNone(row["accepted"]) @@ -497,7 +496,7 @@ def test_guarantees_are_enforced_by_default_and_the_header_says_which(self): def test_header_names_the_search_and_its_report(self): """The header names the candidate-connection search and its MILP - report; an archived document's search still renders.""" + report.""" text = self.js.call("searchText", self.doc) self.assertTrue(text.startswith("candidate-connection search · "), text) report = self.doc["stage3_plan_selection"]["search_report"] @@ -506,21 +505,6 @@ def test_header_names_the_search_and_its_report(self): self.assertNotIn("round", text) outputs = self.doc["stage3_plan_selection"]["selected_dag"]["node_of_output_reference"] self.assertEqual(len(outputs), 2) - # Archived documents (before Stage 3's `Selection`) still render - # their search's checked candidates and component list. - archived = json.loads(json.dumps(self.doc)) - search = {"candidates_checked": 3, "candidate_connections": {"independent_components": 2}} - archived["stage3_plan_selection"]["search"] = search - self.assertIn("3 physical candidates checked", self.js.call("searchText", archived)) - self.assertIn("2 independent components searched separately", - self.js.call("searchText", archived)) - search["candidate_connections"]["independent_components"] = 1 - search["components"] = [{}, {}] - self.assertNotIn("components searched separately", - self.js.call("searchText", archived)) - del search["candidate_connections"] - self.assertIn("2 independent components searched separately", - self.js.call("searchText", archived)) @unittest.skipIf(py_mini_racer is None, "viewer tests require py_mini_racer") @needs_planner @@ -796,7 +780,7 @@ def test_every_element_the_scripts_use_is_on_the_page(self): """Every element id the scripts look up is on the page.""" page = (HERE / "index.html").read_text() ids = set(re.findall(r'id="([^"]+)"', page)) - for script in ("app.js", "workload-sets.js", "enumeration.js", "memo.js"): + for script in ("app.js", "workload-sets.js", "memo.js"): used = set(re.findall(r"\$\('([^']+)'\)", (HERE / script).read_text())) with self.subTest(script): self.assertLessEqual(used, ids) @@ -878,7 +862,7 @@ class AppTests(unittest.TestCase): def page(self, search="", files=None, hash_=""): js = py_mini_racer.MiniRacer() js.eval(STUB_DOM) - for name in ("node-style.js", "stages.js", "enumeration.js", "memo.js"): + for name in ("node-style.js", "stages.js", "memo.js"): js.eval((HERE / name).read_text()) for url, text in (files or {}).items(): js.eval(f"__files[{json.dumps(url)}] = {json.dumps(text)};") @@ -924,7 +908,7 @@ def test_failed_selection_shows_stage0_and_the_error(self): """A Stage 1 failure still draws Stage 0 and shows the error.""" doc = example1() doc["stage1_logical_asap_optimization"] = {"combinations": 0, "capped": False, "candidates": [], "error": "Pass 1: bad accuracy"} - doc["stage2_physical_asap_optimization"] = {"candidates": [], "pruned": []} + doc["stage2_physical_asap_optimization"] = {"candidates": [], "physical_candidates": [], "pruned_candidates": []} doc["stage3_plan_selection"] = {"error": "Pass 1: bad"} js = self.page("?doc=d.json", {"d.json": json.dumps(doc)}) self.assertIn("Stage 1 failed: Pass 1: bad accuracy", js.eval("__els['rank-meta'].textContent")) @@ -1025,8 +1009,6 @@ def test_an_expanded_chain_stays_expanded_after_switching_plans_and_back(self): copy = json.loads(json.dumps(physical["candidates"][0])) selected, copy["id"] = copy["id"], "P-copy" physical["candidates"].append(copy) - # Only the reference pricer's table (`--exhaustive`) lists pruned Stage 2 candidates. - doc["reference_pricing"] = {"pruned_candidates": [{"candidate": "P-copy", "cause": "costlier", "reason": "a copy of the selected plan"}]} js = self.page("?doc=s.json", {"s.json": json.dumps(doc)}) chain = next(e for e in self.ev(js, "__rendered.cy2") if e["data"].get("kind") == "SummaryTumblingWindowChain")["data"]["id"] tap = lambda id_: js.eval(f"__taps['cy2 node']({{ target: {{ data() {{ return __rendered.cy2.find((e) => e.data.id === {json.dumps(id_)}).data; }}, id() {{ return {json.dumps(id_)}; }} }} }})") @@ -1051,101 +1033,19 @@ def test_tapping_a_node_highlights_its_neighborhood_and_lists_its_queries(self): js.eval("__taps['cy2 background']({ target: { isNode: false } })") self.assertEqual(js.eval("__dimmed.cy2.length"), 0) - def test_a_document_without_memo_hides_the_enumerated_dags(self): - """A memo without an enumeration hides the Enumerated DAGs panel.""" - js = self.page("?doc=e1.json", {"e1.json": json.dumps(example1())}) - self.assertTrue(js.eval("__els.enumPanel.hidden")) - self.assertEqual(js.eval("__els.enumRows.innerHTML"), "") - - def test_clicking_an_enumerated_dag_draws_it_in_the_stage1_lane(self): - """The panel lists the enumerated choices; a click draws the - choice's composed DAG in lane 1 and clears lane 2.""" - doc = {**example1(), **json.loads(MEMO_ENUMERATION.read_text())} - js = self.page("?doc=d.json", {"d.json": json.dumps(doc)}) - self.assertFalse(js.eval("__els.enumPanel.hidden")) - meta = js.eval("__els['enum-meta'].textContent") - self.assertIn("Pass 1: 4", meta) - self.assertIn("1 cheaper than the selected plan", meta) - rows = js.eval("__els.enumRows.innerHTML") - self.assertEqual(rows.count("
  • "), 4) - self.assertIn('data-id="E3" aria-pressed="false" class="cheaper"', rows) - e3 = doc["memo"]["enumeration"]["choices"][2] - js.eval("__els.enumRows.__on.click({ target: { closest() { return { dataset: { id: 'E3' } }; } } })") - drawn = [e for e in self.ev(js, "__rendered.cy1") if "source" not in e["data"]] - self.assertEqual(len(drawn), len(self.memo_node_dag(js, doc, e3["roots"])["nodes"])) - self.assertIn("enumerated DAG E3", self.text(js, "lane1-meta")) - self.assertIn("no physical plan for an enumerated DAG", js.eval("__els['lane2-meta'].textContent")) - self.assertIn('data-id="E3" aria-pressed="true"', js.eval("__els.enumRows.innerHTML")) - # Choosing a Stage 1 candidate again releases the row. - js.eval("__els.pick1.__on.change({ target: { value: 'L1' } })") - self.assertNotIn('aria-pressed="true"', js.eval("__els.enumRows.innerHTML")) - - def memo_node_dag(self, js, doc, roots): - """The page's `memoNodeDag` over the document's node table.""" - return json.loads(js.eval(f"JSON.stringify(memoNodeDag({json.dumps(doc['memo']['nodes'])}, {json.dumps(roots)}))")) - - def enumerated_roots(self, doc, choice_id): - js = self.page("?doc=d.json", {"d.json": json.dumps(doc)}) - js.eval(f"__els.enumRows.__on.click({{ target: {{ closest() {{ return {{ dataset: {{ id: {json.dumps(choice_id)} }} }}; }} }} }})") - roots = {e["data"]["nodeId"]: e["data"]["rootFor"] for e in self.ev(js, "__rendered.cy1") if e["data"].get("rootFor")} - return roots, self.text(js, "lane1-meta") - - def test_enumerated_roots_are_named_by_their_root_groups_queries(self): - """Roots come in increasing root-group id, not query order: with G3 - the root of q2 and G7 the root of q1, the first root is q2's.""" - doc = {**example1(), **json.loads(MEMO_ENUMERATION.read_text())} - groups = {g["id"]: g for g in doc["memo"]["steps"][1]["groups"]} - groups[3]["roots_of"], groups[7]["roots_of"] = [1], [0] - roots, _ = self.enumerated_roots(doc, "E1") - js = self.page("?doc=d.json", {"d.json": json.dumps(doc)}) - dag = self.memo_node_dag(js, doc, doc["memo"]["enumeration"]["choices"][0]["roots"]) - first, second = (r["Operator"] for r in dag["roots"]) - self.assertEqual(roots, {first: ["q2"], second: ["q1"]}) - - def test_a_root_group_shared_by_two_queries_is_both_queries_root(self): - """One root group answering q1 and q2: its root is the root of both, - and highlighting q2 keeps it bright.""" - doc = {**example1(), **json.loads(MEMO_ENUMERATION.read_text())} - groups = {g["id"]: g for g in doc["memo"]["steps"][1]["groups"]} - groups[3]["roots_of"], groups[7]["roots_of"] = [0, 1], [] - choice = doc["memo"]["enumeration"]["choices"][0] - choice["roots"] = choice["roots"][:1] - js = self.page("?doc=d.json", {"d.json": json.dumps(doc)}) - root = self.memo_node_dag(js, doc, choice["roots"])["roots"][0]["Operator"] - js.eval("__els.enumRows.__on.click({ target: { closest() { return { dataset: { id: 'E1' } }; } } })") - roots = {e["data"]["nodeId"]: e["data"]["rootFor"] for e in self.ev(js, "__rendered.cy1") if e["data"].get("rootFor")} - self.assertEqual(roots, {root: ["q1", "q2"]}) - js.eval("__els.queryPick.__on.change({ target: { value: 'q2' } })") - self.assertNotIn(f"n{root}", self.ev(js, "__dimmed.cy1")) - self.assertNotIn("not matched", self.text(js, "lane1-meta")) - - def test_enumerated_roots_without_the_steps_memo_name_no_query(self): - """Without the steps' memo, enumerated roots name no query.""" - doc = {**example1(), **json.loads(MEMO_ENUMERATION.read_text())} - doc["memo"]["steps"] = doc["memo"]["steps"][:1] - # The selected choice names groups of the dropped steps, which the - # Memo view's checks reject. - doc["memo"]["selected_choice"] = None - doc["memo"]["selected_choice_unavailable"] = "steps dropped by the test" - roots, meta = self.enumerated_roots(doc, "E1") - self.assertEqual(sorted(roots.values()), [["root group #1"], ["root group #2"]]) - self.assertIn("roots not matched to queries", meta) - - def test_a_broken_enumeration_refuses_the_document(self): - """A malformed enumeration refuses the document.""" - doc = {**example1(), **json.loads(MEMO_ENUMERATION.read_text())} - doc["memo"]["enumeration"]["limit"] = 0 - js = self.page("?doc=d.json", {"d.json": json.dumps(doc)}) - self.assertIn("limit must be a positive integer", js.eval("__els.queries.innerHTML")) - def test_an_invalid_document_shows_an_error(self): """An invalid document shows an error.""" js = self.page("?doc=bad.json", {"bad.json": json.dumps({"format": "nope"})}) self.assertIn("Could not load", js.eval("__els.queries.innerHTML")) def memo_page(self): + """Example 1 with the fixture's memo, Stage 2 physical and pruned + candidates and Stage 3 pruned candidates.""" doc = example1() - doc.update(json.loads(MEMO_SMALL.read_text())) + fixture = json.loads(MEMO_SMALL.read_text()) + doc["memo"] = fixture["memo"] + doc["stage2_physical_asap_optimization"].update(fixture["stage2_physical_asap_optimization"]) + doc["stage3_plan_selection"].update(fixture["stage3_plan_selection"]) return self.page("?doc=m.json", {"m.json": json.dumps(doc)}) def tap_memo(self, js, element_id): @@ -1174,7 +1074,7 @@ def test_the_memo_view_has_a_tab_per_step_and_opens_on_the_last(self): self.assertIn("7 groups (+1) · 30 candidates (+20)", meta) self.assertIn("selected plan's candidates highlighted (7 groups)", meta) # G2 is collapsed to its origin counts; the rest list their candidates. - self.assertEqual(self.memo_ids(js, "g2"), ["g2opass1", "g2otumbling_windows", "g2oshared_build"]) + self.assertEqual(self.memo_ids(js, "g2"), ["g2opass1", "g2otumbling_windows", "g2osummary_input"]) js.eval("window.MemoView.selectStep(0)") self.assertEqual(len(self.memo_ids(js)), 6) self.assertIn("6 groups · 0 candidates", self.text(js, "memoView-meta")) @@ -1186,26 +1086,41 @@ def test_tapping_a_count_expands_its_group_and_the_group_collapses_it(self): self.tap_memo(js, "g2otumbling_windows") self.assertEqual(len(self.memo_ids(js, "g2")), 13) self.assertIn("Memo group G2", self.text(js, "details")) - self.assertIn("20 (13 listed): 2 Pass1, 9 TumblingWindows, 9 SharedBuild", self.text(js, "details")) - self.assertIn("selected plan#2 rate accumulator over G6's panes, variant 1 (TumblingWindows)", self.text(js, "details")) + self.assertIn("20 (13 listed): 2 Pass1, 9 TumblingWindows, 9 SummaryInput", self.text(js, "details")) + # Two candidates of G2 are used, one per execution context. + self.assertIn("selected plan#2 rate accumulator over G6's panes, variant 1 (TumblingWindows); " + "#8 rate accumulator over a summary input, variant 1 (SummaryInput)", self.text(js, "details")) self.tap_memo(js, "g2") self.assertEqual(len(self.memo_ids(js, "g2")), 3) - def test_tapping_a_candidate_lists_its_own_nodes(self): - """Tapping a memo candidate lists its own nodes and the groups it reads.""" + def test_tapping_a_candidate_lists_its_properties_and_physical_candidates(self): + """Tapping a memo candidate shows its θ, ω and input floors and its + physical candidates, each input's producer edges admissible (✓) or + rejected (✗ with the reason), the selected edge marked.""" js = self.memo_page() self.tap_memo(js, "g5c1") details = self.text(js, "details") self.assertIn("Candidate #1 of G5", details) - self.assertIn("chosen for this group", details) - self.assertIn("Project", details) - self.assertIn("SummaryEstimate", details) - memo = json.loads(MEMO_SMALL.read_text())["memo"] - g5 = next(g for g in memo["steps"][-1]["groups"] if g["id"] == 5) - boundary = next(c for c in g5["candidates"] if c["index"] == 1)["group_of_node"] - self.assertEqual(list(boundary.values()), [1]) - self.assertIn(f"Reads G1 (node {next(iter(boundary))}).", details) - self.assertNotIn("node 0", js.eval("__els.details.innerHTML")) + self.assertIn("used by the selected plan", details) + self.assertIn("θ CmsWithHeap(depth=7, heap_size=10, width=272)", details) + self.assertIn("window layout ωnone", details) + self.assertIn("input parameter floorsG1: none", details) + self.assertIn("fusesG4", details) + self.assertIn("C2 (query_time, OneEvaluation(Memory)) · pruned by Stage 3: dominated_by (dominated by C3)", details) + self.assertIn("✗ C1: α^phys = 0", details) + self.assertIn("C3 (ingestion_time, AcrossEvaluations(Memory))", details) + self.assertIn("✓ C1 · selected", details) + + def test_tapping_a_group_lists_its_candidates_and_pruned_candidates(self): + """A group's panel lists each candidate's θ and ω, and the + candidates Stage 2 and Stage 3 pruned there; Pass 1 records none.""" + js = self.memo_page() + self.tap_memo(js, "g5") + details = self.text(js, "details") + self.assertIn("#1 CMS+heap depth 7 width 272 · θ CmsWithHeap(depth=7, heap_size=10, width=272) · floors G1: none", details) + self.assertIn("Pass 1 records no pruned candidates", details) + self.assertIn("G5[2] (ingestion_time, None): no_ingestion_pipeline", details) + self.assertIn("C2: dominated_by (dominated by C3)", details) def test_highlighting_a_query_dims_the_memo_groups_it_does_not_reach(self): """Highlighting a query dims the memo groups it does not reach.""" From 75369cf41ed45fb094e160d44088171ab9385857 Mon Sep 17 00:00:00 2001 From: zzylol <50204836+zzylol@users.noreply.github.com> Date: Sat, 7 Nov 2026 04:01:21 +0000 Subject: [PATCH 09/11] refactor: consumer, materialized and cost wording across crates and docs (#1207 PR 9) --- crates/cost/src/analytical.rs | 8 +- crates/cost/src/execution_demand.rs | 2 +- crates/cost/src/lib.rs | 78 +++++++++--------- crates/cost/src/measured.rs | 28 +++---- crates/cost/src/operator_statistics.rs | 2 +- crates/cost/src/ranking.rs | 2 +- crates/cost/src/state_bytes.rs | 54 ++++++------ crates/cost/src/usage.rs | 70 ++++++++-------- crates/devtools/src/planner_fuzz/README.md | 2 +- crates/devtools/src/planner_fuzz/mod.rs | 2 +- crates/devtools/src/planner_fuzz/relations.rs | 12 +-- crates/devtools/src/planner_fuzz/report.rs | 4 +- crates/devtools/src/planning_stages_text.rs | 35 ++++---- crates/devtools/src/rqe_atomic_costs.rs | 8 +- crates/devtools/tests/asap_planner.rs | 16 ++-- crates/executor/README.md | 2 +- crates/executor/src/expressions/mod.rs | 2 +- crates/executor/src/expressions/planner.rs | 4 +- .../src/operators/aggregate/temporal.rs | 6 +- crates/executor/src/operators/common.rs | 2 +- crates/executor/src/operators/filter.rs | 2 +- crates/executor/src/operators/group_table.rs | 2 +- crates/executor/src/operators/joins/mod.rs | 12 +-- crates/executor/src/operators/limit.rs | 8 +- crates/executor/src/operators/mod.rs | 6 +- .../executor/src/operators/series_labels.rs | 9 +- crates/executor/src/operators/summary/mod.rs | 24 +++--- crates/executor/src/operators/time_range.rs | 10 +-- .../executor/src/operators/vector_window.rs | 7 +- .../executor/src/physical_planner/compiled.rs | 10 +-- crates/executor/src/physical_planner/mod.rs | 6 +- crates/executor/src/runtime/mod.rs | 42 +++++----- crates/executor/src/runtime/tests.rs | 8 +- crates/executor/src/sources/data_store.rs | 4 +- crates/executor/src/sources/mod.rs | 4 +- crates/executor/src/summary_kernels/exact.rs | 2 +- .../executor/src/summary_kernels/factory.rs | 2 +- .../summary_kernels/state_column_updater.rs | 2 +- .../src/summary_kernels/weighted_frequency.rs | 2 +- crates/executor/src/values/batch.rs | 52 ++++++------ crates/executor/tests/physical_semantics.rs | 10 +-- crates/executor/tests/plan_properties.rs | 4 +- .../tests/planspace_series_identity_heap.rs | 2 +- crates/executor/tests/raw_scan.rs | 8 +- .../stored_tumbling_window_memory_limit.rs | 10 ++- crates/frontend-common/src/canonicalize.rs | 17 ++-- crates/frontend-promql/src/promql.rs | 10 +-- .../awesome_prometheus_alerts.rs | 2 +- .../tests/promql_conformance.rs | 14 ++-- crates/frontend-promql/tests/scalar_design.rs | 2 +- crates/frontend-sql/src/sql/mod.rs | 4 +- .../data/tpch_deequ_queries.sql | 2 +- crates/frontend-sql/tests/sql_lowering.rs | 6 +- .../tests/filtered_aggregates.rs | 2 +- .../tests/planner_layering_common/mod.rs | 4 +- .../tests/production_rollup_workloads.rs | 2 +- .../tests/promql_to_post_asap.rs | 6 +- .../tests/sql_to_post_asap.rs | 4 +- .../src/functions/rollup.rs | 2 +- .../src/optimizer/push_down_filters.rs | 2 +- crates/planner/src/installable.rs | 12 +-- crates/planner/src/pass.rs | 2 +- crates/planner/tests/runtime_install.rs | 4 +- .../src/per_computation_candidates.rs | 4 +- crates/stage3-plan-selection/Cargo.toml | 2 +- crates/stage3-plan-selection/src/report.rs | 4 +- .../tests/cost_inputs_json.rs | 2 +- crates/types/src/ir/flat.rs | 2 +- crates/types/src/ir/materialized_view.rs | 6 +- crates/types/src/ir/operator/asap.rs | 2 +- crates/types/src/ir/operator/non_asap.rs | 17 ++-- .../src/ir/operator/operator_properties.rs | 10 +-- .../src/ir/operator/tumbling_window_chain.rs | 4 +- crates/types/src/ir/properties/accuracy.rs | 4 +- crates/types/src/ir/properties/guarantee.rs | 4 +- .../src/ir/properties/summary_coverage.rs | 20 ++--- .../types/src/ir/schema/aggregate_schema.rs | 14 ++-- crates/types/src/ir/schema/sketch.rs | 6 +- crates/types/src/stages/candidates.rs | 8 +- crates/types/src/stages/memo.rs | 4 +- .../src/stages/physical/memo_candidates.rs | 2 +- crates/types/src/test_support.rs | 2 +- crates/types/src/workload/bounds.rs | 12 +-- crates/types/src/workload/mod.rs | 22 ++--- .../architecture/asap-aware-mapping.md | 2 +- .../architecture/asap-aware-plan-search.md | 2 +- .../evidence-dependent-candidates.md | 4 +- .../architecture/input-output-workflow.md | 14 ++-- .../architecture/physical-plan-integration.md | 8 +- ...d_interface_with_pluggable_optimization.md | 4 +- docs/design_docs/concepts/accuracy-models.md | 12 +-- docs/design_docs/concepts/planner-pipeline.md | 2 +- docs/design_docs/concepts/post-asap-ir.md | 2 +- docs/design_docs/decisions/cse-cost-model.md | 4 +- .../physical-planning-and-deployment.md | 36 ++++---- .../analytical-resource-cost.md | 12 +-- .../ddsketch-quantile-ratios.md | 2 +- .../maintained-populations.md | 2 +- .../asap-aware-mapping/summary-properties.md | 2 +- .../proposals/asap-primitive-schema.md | 18 ++-- .../proposals/asapquery-rule-coverage.md | 2 +- .../joint-planning-implementation-plan.md | 6 +- .../proposals/joint-planning-search.md | 42 +++++----- .../planner-layering-example1-acceptance.md | 2 +- .../planner-layering-example2-acceptance.md | 4 +- .../planner-layering-example3-acceptance.md | 2 +- .../planner-layering-example4-acceptance.md | 32 ++++---- .../design_docs/proposals/planner-layering.md | 82 +++++++++---------- .../asap-aware-mapping-architecture.md | 2 +- .../asap-aware-mapping-contracts.md | 10 +-- .../end-to-end-accuracy-guarantees.md | 2 +- .../develop_docs/extend-asap-aware-mapping.md | 4 +- .../joint-candidate-workload-evaluation.md | 12 +-- docs/develop_docs/library-api.md | 20 ++--- .../develop_docs/physical-compile-coverage.md | 4 +- .../planner-vocabulary-migration.md | 2 +- docs/develop_docs/pre-asap-ir.md | 2 +- .../target-candidate-api-migration.md | 4 +- ...ng-window-search-compression-evaluation.md | 14 ++-- docs/user_guide_docs/run-a-query.md | 2 +- 120 files changed, 616 insertions(+), 595 deletions(-) diff --git a/crates/cost/src/analytical.rs b/crates/cost/src/analytical.rs index 6c6640a18..f45c491ea 100644 --- a/crates/cost/src/analytical.rs +++ b/crates/cost/src/analytical.rs @@ -132,7 +132,7 @@ pub(crate) enum PhysicalOperator { /// Moves when its input is evaluated (PromQL `offset`): the rows pass /// unchanged and nothing is computed. TimeShift, - /// Keeps the rows of its input inside a time window: priced by the + /// Keeps the rows of its input inside a time window: costed by the /// rows it keeps. TimeRange, PromqlRange { @@ -1517,9 +1517,9 @@ pub enum AnalyticalCostError { #[error("an ingestion-time grouping has no window below it, so no fact bounds its groups")] IngestionGroupingWithoutWindow, /// Bad input: no declared fact bounds what a node reads from `source` - /// (`missing` names the facts that would), so pricing refuses rather + /// (`missing` names the facts that would), so costing refuses rather /// than assume one. - #[error("pricing source {source_name} needs {missing}, and none is declared")] + #[error("costing source {source_name} needs {missing}, and none is declared")] MissingSourceFact { source_name: String, missing: &'static str, @@ -1578,7 +1578,7 @@ mod tests { } /// A time shift only moves when its input is evaluated: it costs - /// nothing. A time range is priced by the rows it keeps, and keeps no + /// nothing. A time range is costed by the rows it keeps, and keeps no /// more than it reads. #[test] fn time_shift_is_free_and_time_range_is_priced_by_the_rows_it_keeps() { diff --git a/crates/cost/src/execution_demand.rs b/crates/cost/src/execution_demand.rs index d966d03bd..4d99b8177 100644 --- a/crates/cost/src/execution_demand.rs +++ b/crates/cost/src/execution_demand.rs @@ -5,7 +5,7 @@ //! estimated rates add, and one-off/scheduled demand uses a batch maximum. //! Call `schedule_groups` or `evaluation_rate` on the chosen query subset //! only; neither enumerates subsets. For retained query-time state pass `None` for each range evaluation -//! to price once per request, as `computations` does. +//! to cost once per request, as `computations` does. use super::analytical::AnalyticalCostError; use asap_types::ir::physical_export::{PhysicalASAPDAG, PhysicalASAPNodeId}; diff --git a/crates/cost/src/lib.rs b/crates/cost/src/lib.rs index 9b5cca54b..c6cc75150 100644 --- a/crates/cost/src/lib.rs +++ b/crates/cost/src/lib.rs @@ -1,6 +1,6 @@ //! `asap-cost` — the cost model the planning stages share: how much of each //! resource a plan uses and what that usage costs. It depends only on -//! `asap-types`, so any stage can price with it. +//! `asap-types`, so any stage can cost with it. //! //! - Resource-usage estimation: [`analytical`] and `operator_statistics` //! (the analytical per-operator resource model), `measured` (measured @@ -16,7 +16,7 @@ //! [`NodeUsage`]; [`plan_cost`] the whole plan's [`PlanCost`]. Stage 3 //! computes no cost of its own. //! -//! Plan selection (Stage 3, `asap-stage3-plan-selection`) documents how it prices +//! Plan selection (Stage 3, `asap-stage3-plan-selection`) documents how it costs //! a candidate with these. use std::collections::BTreeMap; @@ -50,12 +50,12 @@ pub use usage::{ /// Cost per second of wall time; one unit is one CPU-millisecond under /// [`ResourceUnitCost::illustrative`]. pub const COST_UNIT: &str = "cost_per_second"; -/// [`PlanCost::source`] when every node is priced from the formulas. +/// [`PlanCost::source`] when every node is costed from the formulas. pub const COST_SOURCE: &str = "analytical-cost-v2 (illustrative statistics)"; -/// [`PlanCost::source`] when every node is priced from the measured +/// [`PlanCost::source`] when every node is costed from the measured /// table. pub const MEASURED_COST_SOURCE: &str = "measured operation costs (illustrative statistics)"; -/// [`PlanCost::source`] when some nodes are priced from the measured +/// [`PlanCost::source`] when some nodes are costed from the measured /// table and the others from the formulas. pub const MIXED_COST_SOURCE: &str = "measured operation costs and analytical-cost-v2 (illustrative statistics)"; @@ -65,7 +65,7 @@ pub const MIXED_COST_SOURCE: &str = pub(crate) const DEFAULT_NON_REPEATING_QUERY_HORIZON_SECONDS: f64 = 3_600.0; /// What one candidate uses, per second of wall time unless the name says -/// otherwise, without prices: its nodes' CPU, scans, retained memory and disk +/// otherwise, without costs: its nodes' CPU, scans, retained memory and disk /// added up, with the candidate's peak cores and per-query latency. Every [`CostModel`] reads /// it. #[derive(Debug, Clone, Default, PartialEq)] @@ -93,9 +93,9 @@ pub struct ResourceUsage { pub latency_per_query: Vec, } -/// The price of one unit of each resource, per second of wall time. Cost -/// model 1 reads the usage prices (CPU, scan, memory byte-seconds, disk); -/// cost model 2 the provisioned prices (memory, CPU cores) and disk. +/// The cost of one unit of each resource, per second of wall time. Cost +/// model 1 reads the usage costs (CPU, scan, memory byte-seconds, disk); +/// cost model 2 the provisioned costs (memory, CPU cores) and disk. #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[serde(deny_unknown_fields)] pub struct ResourceUnitCost { @@ -114,10 +114,10 @@ pub struct ResourceUnitCost { } impl ResourceUnitCost { - /// The prices plan selection uses until a deployment is calibrated: + /// The costs plan selection uses until a deployment is calibrated: /// 1 ns of CPU per operation, 0.1 ns per scanned byte, 1 GB retained for a /// second costs 1/8 vCPU (125 CPU-ms), held or provisioned alike; one - /// provisioned core-second is 1,000 CPU-ms. Disk is not priced (0). + /// provisioned core-second is 1,000 CPU-ms. Disk is not costed (0). pub fn illustrative() -> Self { Self { cost_per_cpu_op: 1e-6, @@ -129,7 +129,7 @@ impl ResourceUnitCost { } } - /// AWS Fargate on-demand prices, US East (N. Virginia), Linux/x86, for + /// AWS Fargate on-demand costs, US East (N. Virginia), Linux/x86, for /// cost model 1 ([`CostModel::UsageOverTime`]); one cost unit is one /// US dollar. Source: , checked /// 2026-10-18 (Pricing Example 1 there: $0.000011244 per vCPU-second, @@ -138,7 +138,7 @@ impl ResourceUnitCost { /// the page before relying on them. /// /// `speed` is the deployment's [`CostInputs::resource_speed`], - /// the speed Stage 3 uses for latency, so the CPU prices charge the core + /// the speed Stage 3 uses for latency, so the CPU costs charge the core /// time latency counts. At `ResourceSpeed::illustrative` (1e-6 ms per /// CPU operation, i.e. 1e9 operations per core-second; 1e-7 ms per /// scanned byte): @@ -147,23 +147,23 @@ impl ResourceUnitCost { /// `ms_per_cpu_op` / 1,000 (1e-9 s per operation) = $1.1244e-14. /// * `cost_per_scanned_byte` = $0.000011244 per vCPU-second × /// `ms_per_scanned_byte` / 1,000 (1e-10 s per byte) = $1.1244e-15: - /// Fargate has no scan price, but a scan occupies the vCPU-seconds it + /// Fargate has no scan cost, but a scan occupies the vCPU-seconds it /// bills, for the time latency charges. /// * `cost_per_memory_byte_second` = $0.000001235 per GB-second ÷ 2^30 /// bytes per GB ≈ $1.1502e-15: the page says "on this page GB = /// 1024^3 bytes". /// * `cost_per_disk_byte_second` = 0: Fargate bills only ephemeral /// storage configured beyond the 20 GB every task gets, which a - /// per-byte price cannot express, and the disk bytes plan selection + /// per-byte cost cannot express, and the disk bytes plan selection /// counts (the raw data query-time scans read) are held by the data /// source, not by the task. /// * `cost_per_provisioned_memory_byte_second` and /// `cost_per_provisioned_cpu_core_second` = 0: they belong to cost /// model 2, and Fargate's per-task billing is cost model 1. Under - /// [`CostModel::ProvisionedCapacity`] every price this preset gives + /// [`CostModel::ProvisionedCapacity`] every cost this preset gives /// is 0, which [`CostInputs::validate`] refuses. /// - /// Not expressed by these per-second prices: the 1-minute billing + /// Not expressed by these per-second costs: the 1-minute billing /// minimum per task ("Pricing is calculated per second with a 1-minute /// minimum"), and the fixed task sizes a task is billed for (from 0.25 /// vCPU with 0.5 GB up), which round usage up to the next size. @@ -196,7 +196,7 @@ pub struct ResourceSpeed { impl ResourceSpeed { /// 1 ns per operation and 0.1 ns per scanned byte, the times - /// [`ResourceUnitCost::illustrative`] prices: one cost unit is one + /// [`ResourceUnitCost::illustrative`] costs: one cost unit is one /// millisecond of one core. pub(crate) fn illustrative() -> Self { Self { @@ -220,7 +220,7 @@ pub enum CostModel { /// Cost model 2, provisioned: unit cost × peak memory, peak CPU cores /// and disk, per second; the cheapest valid candidate wins. ProvisionedCapacity(ResourceUnitCost), - /// Cost model 3, the deployment's own cluster: no prices; memory, disk + /// Cost model 3, the deployment's own cluster: no costs; memory, disk /// and (when set) CPU cores are hard limits, and the objective chooses /// among the candidates that fit. ClusterCapacity(ClusterLimits), @@ -267,14 +267,14 @@ pub struct CostInputs { /// (`invocations / horizon` per second); default 3,600. pub non_repeating_query_horizon_seconds: f64, /// The deployment's measured CPU time per unit of each operator; a node - /// with an entry is priced from it, every other node from the formulas + /// with an entry is costed from it, every other node from the formulas /// scaled by the calibration factor (module doc, "Measured operation /// costs"). Also loads the earlier array of [`MeasuredOperationCost`]. - /// Default empty: every node is priced from the formulas. + /// Default empty: every node is costed from the formulas. pub measured_operation_costs: MeasuredOperationCosts, /// Externally established formula-to-measurement scale, held constant across /// candidates. Must be finite and positive. None fits the complete generated - /// candidate catalog before pricing, preserving the default calibration policy. + /// candidate catalog before costing, preserving the default calibration policy. #[serde(default, skip_serializing_if = "Option::is_none")] pub frozen_calibration_factor: Option, } @@ -295,8 +295,8 @@ impl CostInputs { /// Bad input: a negative or non-finite speed, a horizon that is not /// positive, a bad measured table ([`MeasuredOperationCosts`]: a /// negative or non-finite time or size, an entry naming two families, - /// a duplicate entry, or `ms_per_cpu_op` 0), or a price the chosen cost model reads that is negative or - /// not finite, or every such price 0 (cost model 3 reads none). + /// a duplicate entry, or `ms_per_cpu_op` 0), or a cost the chosen cost model reads that is negative or + /// not finite, or every such cost 0 (cost model 3 reads none). pub fn validate(&self) -> Result<(), AnalyticalCostError> { if let Some(factor) = self.frozen_calibration_factor { CalibrationFit::from_factor(factor)?; @@ -355,7 +355,7 @@ impl CostInputs { } } -/// One node's price per second of wall time, with how it was measured. A +/// One node's cost per second of wall time, with how it was measured. A /// node is one operator node of the candidate's physical plan DAG /// (`PhysicalASAPDAG`), keyed by its [`PhysicalASAPNodeId`] in /// [`PlanCost::per_node`]; not a machine. @@ -365,8 +365,8 @@ pub struct NodeCost { pub operator: OperatorKind, /// When it runs: ingestion or query time. pub timing: ExecutionTiming, - /// Its price per second under cost model 1; `None` under cost models 2 - /// and 3, which price (or limit) the whole candidate's peaks. + /// Its cost per second under cost model 1; `None` under cost models 2 + /// and 3, which cost (or limit) the whole candidate's peaks. pub cost_per_second: Option, /// Core-seconds of CPU it takes per second of wall time: its CPU /// operations and scanned bytes timed by [`ResourceSpeed`], what a @@ -382,29 +382,29 @@ pub struct NodeCost { /// ... bytes": one computation's work, the times it is computed per /// second and what it keeps. pub detail: String, - /// Whether its CPU operations were priced from the measured table or + /// Whether its CPU operations were costed from the measured table or /// from the formulas. pub price_source: NodePriceSource, } -/// One candidate's usage and price over the whole workload: `usage` is -/// the whole candidate's, `per_node` one price per operator node of its +/// One candidate's usage and cost over the whole workload: `usage` is +/// the whole candidate's, `per_node` one cost per operator node of its /// physical plan DAG. #[derive(Debug, Clone, PartialEq)] pub struct PlanCost { pub usage: ResourceUsage, - /// Its price per second under cost model 1 or 2 (under cost model 1, the + /// Its cost per second under cost model 1 or 2 (under cost model 1, the /// sum of its nodes' charges plus request overhead for queries without /// operator nodes); `None` under cost model 3. pub cost_per_second: Option, /// The unit of `cost_per_second`: always [`COST_UNIT`]. pub cost_unit: &'static str, - /// Where its prices came from, from its nodes' [`NodeCost::price_source`]: + /// Where its costs came from, from its nodes' [`NodeCost::price_source`]: /// [`COST_SOURCE`] (all formulas), [`MEASURED_COST_SOURCE`] (all /// measured) or [`MIXED_COST_SOURCE`]. pub source: &'static str, /// Each operator node of the candidate's physical plan DAG, by its id - /// in that DAG, with its price. + /// in that DAG, with its cost. pub per_node: BTreeMap, } @@ -430,8 +430,8 @@ impl QueryLatency { } } -/// The CPU time of the nodes priced from the measured table, per second of -/// wall time: as measured, and as the formulas would price them. Their +/// The CPU time of the nodes costed from the measured table, per second of +/// wall time: as measured, and as the formulas would cost them. Their /// ratio is the calibration factor for the nodes without an entry. #[derive(Debug, Clone, Copy, Default, PartialEq)] pub struct CalibrationFit { @@ -468,7 +468,7 @@ impl CalibrationFit { } /// Measured ÷ formula time, 1 without measured nodes (or with only - /// nodes the formulas price free). + /// nodes the formulas cost free). pub fn factor(self) -> f64 { match self.formula_ms_per_second > 0.0 && self.measured_ms_per_second > 0.0 { true => self.measured_ms_per_second / self.formula_ms_per_second, @@ -481,12 +481,12 @@ impl CalibrationFit { mod tests { use super::*; - /// The AWS Fargate preset holds the page's prices converted as its doc + /// The AWS Fargate preset holds the page's costs converted as its doc /// says at the given speed: per vCPU-second × seconds per operation or /// per scanned byte (1e-9 and 1e-10 at the illustrative speed; twice /// that at half the speed), per GB-second ÷ 2^30; disk and the - /// provisioned prices 0. It validates under cost model 1 and is - /// refused under cost model 2, where every price it gives is 0. + /// provisioned costs 0. It validates under cost model 1 and is + /// refused under cost model 2, where every cost it gives is 0. #[test] fn aws_fargate_us_east_1_converts_the_page_prices() { let preset = ResourceUnitCost::aws_fargate_us_east_1(ResourceSpeed::illustrative()); diff --git a/crates/cost/src/measured.rs b/crates/cost/src/measured.rs index 1fabd322c..d3e0ed147 100644 --- a/crates/cost/src/measured.rs +++ b/crates/cost/src/measured.rs @@ -1,5 +1,5 @@ //! The deployment's measured operation costs: the CPU time its runtime pays -//! per unit of work of each physical operator, which plan selection prices +//! per unit of work of each physical operator, which plan selection costs //! from instead of its formulas. //! //! The Planner defines the table's structure; the deployment's runtime @@ -9,15 +9,15 @@ //! [`CostInputs::measured_operation_costs`]. The planner reads //! only this table, never a benchmark file. //! -//! Each [`OperatorCost`] prices one operator kind at one phase (ingestion +//! Each [`OperatorCost`] costs one operator kind at one phase (ingestion //! or query time), for one summary family or aggregate measure: a node's //! CPU per computation is `units × ns_per_unit + ns_per_invocation`, its //! units being what the operator processes ([`OperatorKind`]). A sketch //! entry also applies to the same sketch with other parameters, //! interpolated between the two nearest measured sizes ([`lookup`]). A -//! node without an entry is priced from the formulas, scaled by one +//! node without an entry is costed from the formulas, scaled by one //! calibration factor fitted from the nodes that have one, so measured and -//! formula-priced nodes stay on one scale. The factor is a global +//! formula-costed nodes stay on one scale. The factor is a global //! heuristic: a partial table can still mis-rank plans, and only a table //! covering every operator kind the plans use makes the choice the //! measured one (plan selection's module doc, "Measured operation costs"). @@ -25,7 +25,7 @@ //! A measured time enters [`ResourceUsage`] as CPU operations: `t` ns is //! `t · 10⁻⁶ / ms_per_cpu_op` operations of [`ResourceSpeed`], so latency //! (operations × `ms_per_cpu_op`) is the measured time, and every cost model -//! prices it as it prices any operation. +//! costs it as it costs any operation. //! //! The table of earlier versions, a JSON array of [`MeasuredOperationCost`] //! (one sketch operation each), still loads: each entry becomes the @@ -49,7 +49,7 @@ use crate::analytical::AnalyticalCostError; /// The deployment's measured cost table /// ([`CostInputs::measured_operation_costs`]). In JSON, an object /// with these fields, or (the format of earlier versions) an array of -/// [`MeasuredOperationCost`]. Default: empty, every node priced from the +/// [`MeasuredOperationCost`]. Default: empty, every node costed from the /// formulas. /// /// [`CostInputs::measured_operation_costs`]: crate::CostInputs::measured_operation_costs @@ -87,7 +87,7 @@ pub struct OperatorCost { pub phase: Option, /// For a summary operator over a sketch: the sketch and its parameters, /// e.g. `{"Kll": {"k": 200}}`. Other parameters of the same sketch are - /// priced by interpolation ([`lookup`]). + /// costed by interpolation ([`lookup`]). #[serde(default, skip_serializing_if = "Option::is_none")] pub sketch: Option, /// For a summary operator over an exact accumulator: its kind, e.g. @@ -95,7 +95,7 @@ pub struct OperatorCost { #[serde(default, skip_serializing_if = "Option::is_none")] pub exact: Option, /// For an `Aggregate`: the measure's `kind`, e.g. `"quantile"` (an - /// `AggIntent` in JSON). An aggregate is priced from the table only + /// `AggIntent` in JSON). An aggregate is costed from the table only /// when each of its measures has an entry. #[serde(default, skip_serializing_if = "Option::is_none")] pub measure: Option, @@ -115,7 +115,7 @@ pub struct OperatorCost { } /// Every physical operator a physical plan DAG can contain, by the name it -/// has there. The unit each is priced per is the row it reads unless said +/// has there. The unit each is costed per is the row it reads unless said /// otherwise. #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)] pub enum OperatorKind { @@ -215,7 +215,7 @@ pub enum StateFamily<'a> { Exact(&'a ExactKind), } -/// A node's unit price, from its entry or interpolated between two. +/// A node's unit cost, from its entry or interpolated between two. #[derive(Debug, Clone, Copy, PartialEq)] pub struct UnitPrice { pub ns_per_unit: f64, @@ -223,13 +223,13 @@ pub struct UnitPrice { pub memory_bytes_per_state: Option, } -/// The price of `operator` at `phase` on `family`, if the table has an +/// The cost of `operator` at `phase` on `family`, if the table has an /// entry for them. Entries for the node's own phase win over entries for /// both phases. A sketch with exactly an entry's parameters takes that /// entry; otherwise, among the entries for the same sketch algorithm, the /// two whose sizes (`size_of`: the bytes one state allocates) are nearest /// below and above the node's are interpolated linearly in log size, and a -/// size outside the measured ones takes the nearest entry's price. +/// size outside the measured ones takes the nearest entry's cost. pub fn lookup( table: &MeasuredOperationCosts, operator: OperatorKind, @@ -300,7 +300,7 @@ pub fn lookup( } } -/// The price of an `Aggregate` at `phase` per input row: the sum over its +/// The cost of an `Aggregate` at `phase` per input row: the sum over its /// measures, when each has an entry (one for its own phase winning over /// one for both). pub(crate) fn aggregate_lookup( @@ -503,7 +503,7 @@ struct TableFields { provenance: Option, } -/// Which prices one node's CPU operations came from. A node is one operator +/// Which costs one node's CPU operations came from. A node is one operator /// node of the candidate's physical plan DAG (`PhysicalASAPDAG`), keyed by /// its `PhysicalASAPNodeId` in [`PlanCost::per_node`]; not a machine. /// diff --git a/crates/cost/src/operator_statistics.rs b/crates/cost/src/operator_statistics.rs index 796073573..dc657795e 100644 --- a/crates/cost/src/operator_statistics.rs +++ b/crates/cost/src/operator_statistics.rs @@ -1,7 +1,7 @@ //! Physical-operator statistics contracts. //! //! This module does not lower logical query nodes. It defines the per-operator -//! statistics the analytical resource model prices an operator from. +//! statistics the analytical resource model costs an operator from. use serde::{Deserialize, Serialize}; diff --git a/crates/cost/src/ranking.rs b/crates/cost/src/ranking.rs index 2c1308b6c..6ae91c6d5 100644 --- a/crates/cost/src/ranking.rs +++ b/crates/cost/src/ranking.rs @@ -71,7 +71,7 @@ pub fn worst_latency_ms(usage: &ResourceUsage) -> f64 { mod tests { use super::*; - /// Totals that differ only by rounding tie, so the earlier plan is kept; + /// Totals that differ only by rounding tie, so the earlier plan is retained; /// a real difference is cheaper. #[test] fn totals_differing_by_rounding_tie() { diff --git a/crates/cost/src/state_bytes.rs b/crates/cost/src/state_bytes.rs index a4f4f8742..16902be91 100644 --- a/crates/cost/src/state_bytes.rs +++ b/crates/cost/src/state_bytes.rs @@ -47,7 +47,7 @@ pub fn keeps_every_value(measure: &AggIntent) -> bool { /// `DDSKETCH_ASSUMED_VALUE_RANGE` and fill its negative store too /// unless proven non-negative. /// -/// KLL is priced without the library's estimate: its fixed bytes +/// KLL is costed without the library's estimate: its fixed bytes /// (`kll_fixed_bytes`: the struct and its level array) plus the 8-byte /// item array as `asap_sketchlib` grows it for the rows the state folds, at /// most its full capacity (`kll_buffer_items`). @@ -157,7 +157,7 @@ pub fn sketch_shape(params: &SketchParams, input_rows: StateInputRows) -> (f64, kll_fixed_bytes() + 8 * kll_buffer_items(*k, input_rows), ), // The executor builds no DDSketch outside α in (0, 1), where - // sketchlib's estimate panics: priced as an empty one. + // sketchlib's estimate panics: costed as an empty one. SketchParams::DDSketch { alpha } if !(*alpha > 0.0 && *alpha < 1.0) => { (1.0, std::mem::size_of::() as u64) } @@ -272,7 +272,7 @@ fn univmon_expected_layers(layers: u8) -> f64 { } /// Ratio of the largest to the smallest value magnitude a DDSketch is -/// assumed to see: nine decades, e.g. latencies from 1 ns to 1 s, priced as +/// assumed to see: nine decades, e.g. latencies from 1 ns to 1 s, costed as /// magnitudes in `[1, 1e9]` (its bins depend on the ratio alone). An /// assumption, not workload evidence: the data workload declares no value /// range. @@ -283,7 +283,7 @@ mod tests { use super::*; use asap_types::ir::schema::{GroupingStrategy, SketchAlgorithm}; - /// An exact accumulator's state is priced at the executor's per-group + /// An exact accumulator's state is costed at the executor's per-group /// state, 56 bytes for every kind (a counter's state alone is 48), so a /// tumbling-window chain of exact sums keeps 56 bytes per tumbling window and group. #[test] @@ -315,14 +315,14 @@ mod tests { sketch.memory_bytes() as u64 } - /// A DDSketch is priced for what `asap_sketchlib` can hold after its + /// A DDSketch is costed for what `asap_sketchlib` can hold after its /// rows: at least what it holds for a few samples, for samples of either /// sign, and for many samples over nine decades; a store less for values - /// declared non-negative. Many rows are priced as unknown ones. + /// declared non-negative. Many rows are costed as unknown ones. #[test] fn ddsketch_state_bytes_bound_the_library() { let alpha = 0.05; - let priced = |rows_per_state, non_negative| { + let costed = |rows_per_state, non_negative| { sketch_shape( &SketchParams::DDSketch { alpha }, StateInputRows { @@ -356,13 +356,13 @@ mod tests { ] { let rows = Some(values.len() as u64); assert!( - library_ddsketch_bytes(alpha, values) <= priced(rows, non_negative), + library_ddsketch_bytes(alpha, values) <= costed(rows, non_negative), "{} values, non-negative: {non_negative}", values.len() ); } - assert!(priced(Some(10_000), true) < priced(Some(10_000), false)); - assert_eq!(priced(Some(10_000), false), priced(None, false)); + assert!(costed(Some(10_000), true) < costed(Some(10_000), false)); + assert_eq!(costed(Some(10_000), false), costed(None, false)); } /// The state shape of a sketch of `algorithm` with θ `params`, its @@ -558,24 +558,24 @@ mod tests { assert_eq!(model_bytes(None), 744 + 8 * 1_206); } - /// Plan selection prices each state the executor builds per group at + /// Plan selection costs each state the executor builds per group at /// what the executor charges for it (#947). Each family is built /// through the executor's factory and fed `n` rows shaped as the - /// pricing assumes: signed values over [`DDSKETCH_ASSUMED_VALUE_RANGE`], + /// costing assumes: signed values over [`DDSKETCH_ASSUMED_VALUE_RANGE`], /// label values of [`ASSUMED_VALUE_KEY_BYTES`] keys for UnivMon, or /// keyed rows whose tuple keys are [`ASSUMED_HEAP_KEY_BYTES`] long. The /// heap families' shapes are dominated by their heaps. The charge is /// the sketch's bytes plus the accumulator's own fields, named per - /// family. It equals the priced bytes where `asap_sketchlib`'s estimate + /// family. It equals the costed bytes where `asap_sketchlib`'s estimate /// is exact (Count-Min, Count Sketch, HLL, KMV at `n` distinct items) and /// for KLL up to `k` rows. For DDSketch, the heap sketches and UnivMon - /// the price bounds it, by at most 1.5 times once the state is full; - /// UnivMon's price also bounds the bytes its sketch holds. + /// the cost bounds it, by at most 1.5 times once the state is full; + /// UnivMon's cost also bounds the bytes its sketch holds. /// KLL past `k` rows is checked only loosely: the planner's formula /// leaves out the compaction scratch space, a known gap until a - /// sketchlib estimate without the CDF cache can price KLL. + /// sketchlib estimate without the CDF cache can cost KLL. /// - /// HydraCms is left out: plan selection prices an independent Count-Min + /// HydraCms is left out: plan selection costs an independent Count-Min /// per group, the executor one shared grid, so the two agree only at /// about 79 groups for a 5 × 32 grid of 64 × 3 cells (a follow-up). #[test] @@ -591,7 +591,7 @@ mod tests { }; use std::mem::{align_of, size_of}; use SketchAlgorithm as A; - /// How the priced bytes relate to the sketch's. + /// How the costed bytes relate to the sketch's. enum Priced { Exact, /// Exact up to `k` rows; past them at most the formula's @@ -611,7 +611,7 @@ mod tests { /// A label set and a weight a row. Keyed, } - // (family, parameters, rows fed, how it is priced, the + // (family, parameters, rows fed, how it is costed, the // accumulator's own fields, rows at which the state is full: four // times the heap for the heap sketches, so each heap churns). // @@ -796,7 +796,7 @@ mod tests { } let state = updater.into_accumulator(); let charged = state.approx_memory_bytes(); - let priced = fields + let costed = fields + sketch_shape( params, StateInputRows { @@ -805,21 +805,21 @@ mod tests { }, ) .1 as usize; - let context = format!("{algorithm:?} after {n} rows: {priced} priced"); + let context = format!("{algorithm:?} after {n} rows: {costed} costed"); match priced_as { - Priced::Exact => assert_eq!(charged, priced, "{context}"), - Priced::Kll { k } if n <= *k => assert_eq!(charged, priced, "{context}"), + Priced::Exact => assert_eq!(charged, costed, "{context}"), + Priced::Kll { k } if n <= *k => assert_eq!(charged, costed, "{context}"), // sketchlib bounds KLL's compaction scratch space at // 2 (k - 1) items. Priced::Kll { k } => assert!( - charged <= priced + 8 * 2 * (*k as usize - 1), + charged <= costed + 8 * 2 * (*k as usize - 1), "{context}, {charged} charged" ), Priced::Bound => { - assert!(charged <= priced, "{context}, {charged} charged"); + assert!(charged <= costed, "{context}, {charged} charged"); if n == *full { assert!( - priced as f64 <= 1.5 * charged as f64, + costed as f64 <= 1.5 * charged as f64, "{context}, {charged} charged" ); } @@ -835,7 +835,7 @@ mod tests { let held = fields + univmon.sketch().memory_bytes(); assert!(held <= charged, "{context}, {held} held"); if n == *full { - assert!(priced as f64 <= 1.6 * held as f64, "{context}, {held} held"); + assert!(costed as f64 <= 1.6 * held as f64, "{context}, {held} held"); } } } diff --git a/crates/cost/src/usage.rs b/crates/cost/src/usage.rs index 97efdc1bc..ceb437717 100644 --- a/crates/cost/src/usage.rs +++ b/crates/cost/src/usage.rs @@ -39,7 +39,7 @@ use asap_types::workload::bounds::{ }; /// Measure every node of `dag` per second of wall time (module doc, "Cost -/// model") and price it under `settings.cost_model`. Nodes are exported +/// model") and cost it under `settings.cost_model`. Nodes are exported /// children first, so each node's input statistics are known when it is /// reached. A query-time node is measured per computation over the rows its /// time ranges keep, times how often it is computed per second @@ -65,13 +65,13 @@ pub fn plan_cost( let table = &settings.measured_operation_costs; let mut fit = CalibrationFit::default(); let speed = settings.resource_speed; - // Cost model 1 prices each node as it is measured. + // Cost model 1 costs each node as it is measured. let usage_prices = match &settings.cost_model { - CostModel::UsageOverTime(prices) => Some(prices), + CostModel::UsageOverTime(costs) => Some(costs), _ => None, }; let EachNodeUsage { - priced, + costed, multipliers, reach, } = each_node_usage( @@ -114,7 +114,7 @@ pub fn plan_cost( let sketch_size = |params: &SketchParams| sketch_shape(params, StateInputRows::UNKNOWN).1 as f64; for node in &dag.nodes { - let node_priced = &priced[&node.id]; + let node_priced = &costed[&node.id]; usage.cpu_ops_per_second += node_priced.cpu_ops_per_second; usage.scanned_bytes_per_second += node_priced.scanned_bytes_per_second; usage.average_memory_bytes += node_priced.average_memory_bytes; @@ -171,8 +171,8 @@ pub fn plan_cost( evaluation_ms_per_query[query] = evaluation_ms; let Some(&first_read) = start.first() else { has_unattached_request_overhead = true; - if let Some(prices) = usage_prices { - unattached_request_cost += prices.cost_per_cpu_op * ops_per_second; + if let Some(costs) = usage_prices { + unattached_request_cost += costs.cost_per_cpu_op * ops_per_second; if !unattached_request_cost.is_finite() { return Err((diagnostic_node, AnalyticalCostError::Overflow)); } @@ -191,8 +191,8 @@ pub fn plan_cost( query + 1, table.ns_per_evaluation ); - if let (Some(cost), Some(prices)) = (&mut node.cost_per_second, usage_prices) { - *cost += prices.cost_per_cpu_op * ops_per_second; + if let (Some(cost), Some(costs)) = (&mut node.cost_per_second, usage_prices) { + *cost += costs.cost_per_cpu_op * ops_per_second; if !cost.is_finite() { return Err((first_read, AnalyticalCostError::Overflow)); } @@ -202,8 +202,8 @@ pub fn plan_cost( let node = per_node.get_mut(&id).expect("every node is measured"); usage.disk_bytes = usage.disk_bytes.saturating_add(bytes); node.detail += &format!("; keeps {bytes} bytes of raw data on disk"); - if let (Some(cost), Some(prices)) = (&mut node.cost_per_second, usage_prices) { - *cost += prices.cost_per_disk_byte_second * bytes as f64; + if let (Some(cost), Some(costs)) = (&mut node.cost_per_second, usage_prices) { + *cost += costs.cost_per_disk_byte_second * bytes as f64; } } // With k ingest workers, each of the k − 1 beyond the first builds its @@ -298,8 +298,8 @@ pub fn plan_cost( let node = per_node.get_mut(&id).expect("every node is measured"); usage.average_memory_bytes += byte_seconds; node.detail += &format!("; holds {state} bytes for {evaluation_ms:.1} ms"); - if let (Some(cost), Some(prices)) = (&mut node.cost_per_second, usage_prices) { - *cost += prices.cost_per_memory_byte_second * byte_seconds; + if let (Some(cost), Some(costs)) = (&mut node.cost_per_second, usage_prices) { + *cost += costs.cost_per_memory_byte_second * byte_seconds; if !cost.is_finite() { return Err((id, AnalyticalCostError::Overflow)); } @@ -323,11 +323,11 @@ pub fn plan_cost( } total } - CostModel::ProvisionedCapacity(prices) => { - let cost = prices.cost_per_provisioned_memory_byte_second + CostModel::ProvisionedCapacity(costs) => { + let cost = costs.cost_per_provisioned_memory_byte_second * usage.peak_memory_bytes as f64 - + prices.cost_per_provisioned_cpu_core_second * f64::from(usage.peak_cpu_cores) - + prices.cost_per_disk_byte_second * usage.disk_bytes as f64; + + costs.cost_per_provisioned_cpu_core_second * f64::from(usage.peak_cpu_cores) + + costs.cost_per_disk_byte_second * usage.disk_bytes as f64; if !cost.is_finite() { return Err((first, AnalyticalCostError::Overflow)); } @@ -358,11 +358,11 @@ pub fn plan_cost( )) } -/// Every node of a physical DAG priced ([`each_node_usage`]), with each +/// Every node of a physical DAG costed ([`each_node_usage`]), with each /// node's `(multiplier, per_second)` ([`computations`]) and the nodes each /// query reaches at query time ([`query_reach`]). struct EachNodeUsage<'a> { - priced: HashMap>, + costed: HashMap>, multipliers: HashMap, reach: Vec>, } @@ -370,7 +370,7 @@ struct EachNodeUsage<'a> { /// [`node_usage`] over every node of `dag`, children first, with the /// arguments of [`plan_cost`]. `root_scan_lookback_ms` is the /// look-back of a query-time scan no window above it in `dag` bounds (a -/// scan priced without its consumers); `None` when the scan has no +/// scan costed without its consumers); `None` when the scan has no /// window, so it reads the source's `rows_held` or fails with /// `MissingSourceFact`, as Stage 3 does. `root_rates`, when given, are /// the computations per second of each root's consumer in place of its @@ -403,14 +403,14 @@ fn each_node_usage<'a>( for e in &dag.edges { producers_of.entry(e.consumer).or_default().push(e.producer); } - let mut priced: HashMap> = HashMap::new(); + let mut costed: HashMap> = HashMap::new(); for node in &dag.nodes { let views: Vec> = producers_of .get(&node.id) .map_or(&[][..], Vec::as_slice) .iter() .map(|p| { - let produced: &NodeUsage<'a> = &priced[p]; + let produced: &NodeUsage<'a> = &costed[p]; ProducerOutput { payload: &nodes[p].payload, output_schema: &nodes[p].output_schema, @@ -449,10 +449,10 @@ fn each_node_usage<'a>( formula_scale, ) .map_err(|error| (node.id, error))?; - priced.insert(node.id, node_priced); + costed.insert(node.id, node_priced); } Ok(EachNodeUsage { - priced, + costed, multipliers, reach, }) @@ -494,7 +494,7 @@ fn state_family<'a>( } } -/// One producer of a node being priced ([`node_usage`]): its payload and +/// One producer of a node being costed ([`node_usage`]): its payload and /// schema, its output statistics, the sources it reads and its state /// family. #[derive(Debug, Clone)] @@ -542,7 +542,7 @@ pub struct NodeUsage<'a> { pub cost: NodeCost, } -/// Measure and price one node of a physical DAG (one step of +/// Measure and cost one node of a physical DAG (one step of /// [`plan_cost`]): `producers` are its producers in edge order, /// `rate` its `(multiplier, per_second)` ([`computations`]), `scan_window` /// the raw rows a query-time scan reads ([`PhysicalASAPDAG::scan_window`]; @@ -565,7 +565,7 @@ pub fn node_usage<'a>( let table = &settings.measured_operation_costs; let speed = settings.resource_speed; let usage_prices = match &settings.cost_model { - CostModel::UsageOverTime(prices) => Some(prices), + CostModel::UsageOverTime(costs) => Some(costs), _ => None, }; let sketch_size = @@ -1068,7 +1068,7 @@ pub fn node_usage<'a>( let (multiplier, per_second) = rate; let formula_ms = estimate.cpu_ops() * speed.ms_per_cpu_op + estimate.scan_bytes() as f64 * speed.ms_per_scanned_byte; - // What one computation processes, the unit its entry is priced per + // What one computation processes, the unit its entry is costed per // ([`OperatorKind`]): the samples a scan reads, the states a merge // reads, otherwise the rows of its (first) input. let units = match &node.payload { @@ -1230,14 +1230,14 @@ pub fn node_usage<'a>( raw_scan = Some((source, retained)); } } - // One computation's CPU and scan price times its rate, then the + // One computation's CPU and scan cost times its rate, then the // materialized state's. - let cost = usage_prices.map(|prices| { - (estimate.cpu_ops() * prices.cost_per_cpu_op - + estimate.scan_bytes() as f64 * prices.cost_per_scanned_byte) + let cost = usage_prices.map(|costs| { + (estimate.cpu_ops() * costs.cost_per_cpu_op + + estimate.scan_bytes() as f64 * costs.cost_per_scanned_byte) * per_second - + prices.cost_per_memory_byte_second * average_memory_bytes - + prices.cost_per_disk_byte_second * disk_bytes as f64 + + costs.cost_per_memory_byte_second * average_memory_bytes + + costs.cost_per_disk_byte_second * disk_bytes as f64 }); if cost.is_some_and(|cost| !cost.is_finite()) { return Err(AnalyticalCostError::Overflow); @@ -1269,7 +1269,7 @@ pub fn node_usage<'a>( }) } -/// [`PlanCost::source`] for nodes priced as `per_node` says. +/// [`PlanCost::source`] for nodes costed as `per_node` says. fn cost_source(per_node: &BTreeMap) -> &'static str { let measured = |node: &NodeCost| node.price_source == NodePriceSource::Measured; if !per_node.values().any(measured) { diff --git a/crates/devtools/src/planner_fuzz/README.md b/crates/devtools/src/planner_fuzz/README.md index 4b3e90f33..42e645029 100644 --- a/crates/devtools/src/planner_fuzz/README.md +++ b/crates/devtools/src/planner_fuzz/README.md @@ -209,7 +209,7 @@ status column, "conclusive" means the check either held or was violated. | gcd tumbling-window grid across repeat intervals | planner-layering.md L791–809 | `i-other-repeat-interval` | VIOLATED (49 of 2,717): new draft; compare #731 | | Exact top-k reuse (smaller k) | planner-layering.md rule table L589; joint-planning-search.md L325 | `j-smaller-topk` | holds (62 conclusive checks) | | Merge of disjoint selections | asap-primitive-schema.md §4.2 L194–232, §5.6 Example B L721–752 | `k-union-of-selections` | never conclusive: Stage 1 composes no guarantee for the merged estimate | -| Tumbling windows kept across evaluations when query-time results are retained | planner-layering.md Materialization L889–893 | `results-retained` | holds (1,442 conclusive checks) | +| Tumbling windows materialized across evaluations when query-time results are retained | planner-layering.md Materialization L889–893 | `results-retained` | holds (1,442 conclusive checks) | | Window = interval: the whole window as a one-tumbling-window chain | planner-layering.md Materialization L895–905 | — | not checked: a Stage 2 choice within one query | | Rollup over newest tumbling windows (windowed rollup) | planner-layering.md L809–823 | — | not checked: a composition of c and d | | avg as sum/count: shared exact accumulators | planner-layering.md L372–383, L502–503; ASAPWorkloads #8 | `l-binary-over-result` | holds (15 conclusive checks, with the ratio row below); checks that the sum is shared, not one accumulator for both | diff --git a/crates/devtools/src/planner_fuzz/mod.rs b/crates/devtools/src/planner_fuzz/mod.rs index 7f2368aa0..c8baa2854 100644 --- a/crates/devtools/src/planner_fuzz/mod.rs +++ b/crates/devtools/src/planner_fuzz/mod.rs @@ -384,7 +384,7 @@ fn shared_with_last_root(roots: &[QueryRoot]) -> BTreeSet<*const OperatorNode> { let reached = |root: &QueryRoot| -> BTreeSet<*const OperatorNode> { root.operator_refs() .into_iter() - .flat_map(|node| OperatorNode::reachable(node)) + .flat_map(OperatorNode::reachable) .map(|node| Rc::as_ptr(&node)) .collect() }; diff --git a/crates/devtools/src/planner_fuzz/relations.rs b/crates/devtools/src/planner_fuzz/relations.rs index 285909330..21810174b 100644 --- a/crates/devtools/src/planner_fuzz/relations.rs +++ b/crates/devtools/src/planner_fuzz/relations.rs @@ -257,7 +257,7 @@ pub enum Witness { /// `q`'s root estimate over a `SummaryMerge` of its state and the state /// of `W`'s last query (the other selection, added to `W`). UnionWithLast, - /// `q`'s tumbling-window chain lengthened to cover `window_ms`: every reader of + /// `q`'s tumbling-window chain lengthened to cover `window_ms`: every consumer of /// the chain in `W`'s plan merges its old newest tumbling windows of the longer /// chain, and `q'` merges all of them, then applies `rollup` when set. LongerWindow { @@ -329,7 +329,7 @@ pub struct WitnessReport { /// operators alone) and their operators. pub derived_node_cost_per_second: Option, pub derived_operators: Vec, - /// Whether the witness's `Filter` on a group key kept its input's + /// Whether the witness's `Filter` on a group key retained its input's /// guarantee, which Stage 1's guarantee composition does not give it /// (so the witness passes Stage 3 only under that rule). pub key_filter_keeps_input_guarantee: bool, @@ -852,7 +852,7 @@ fn alternate_value(value: &str) -> String { /// a node `replace` maps is replaced (its inputs are not visited), and /// every node above a replaced one is rebuilt over its new inputs with its /// schema derived again. Unchanged sub-DAGs keep their `Rc`, so sharing is -/// kept. +/// retained. pub fn rewrite( node: &Rc, replace: &mut dyn FnMut(&Rc) -> Option>, @@ -957,14 +957,14 @@ fn with_root_estimate( let Some(NonASAPOp::Project { cols, child }) = root.non_asap() else { return Ok(estimate); }; - let mut kept = Vec::new(); + let mut remaining = Vec::new(); for item in cols { let ScalarExpr::Column(index) = item.expr else { return Err("q's root projection is not of plain columns".into()); }; let name = &child.schema.fields[index].name; match estimate.schema.fields.iter().position(|f| f.name == *name) { - Some(new) => kept.push(ProjectItem { + Some(new) => remaining.push(ProjectItem { alias: item.alias.clone(), expr: ScalarExpr::Column(new), }), @@ -972,7 +972,7 @@ fn with_root_estimate( None => return Err(format!("the new estimate has no column {name}")), } } - let cols = kept; + let cols = remaining; OperatorNode::new_shared(Operator::NonASAP(NonASAPOp::Project { cols, child: estimate, diff --git a/crates/devtools/src/planner_fuzz/report.rs b/crates/devtools/src/planner_fuzz/report.rs index 0cbbde4c3..4601ee484 100644 --- a/crates/devtools/src/planner_fuzz/report.rs +++ b/crates/devtools/src/planner_fuzz/report.rs @@ -105,7 +105,7 @@ pub fn documented_patterns() -> Vec { note: "the merge operator is implemented; the docs name no Pass 2 rule that creates it", }, DocumentedPattern { - pattern: "Tumbling windows kept across evaluations when the deployment retains query-time results", + pattern: "Tumbling windows materialized across evaluations when the deployment retains query-time results", doc_reference: "planner-layering.md Materialization L889–893", relation: Some(Relation::ResultsRetained), note: "a capability never raises cost", @@ -192,7 +192,7 @@ pub struct Finding { pub shrink_attempts: Option, pub check: Check, pub measurement: Measurement, - /// The open issue a reader should compare it with, when the relation + /// The open issue to compare it with, when the relation /// matches one (a guess from the relation, not a proof). pub possibly_known_issue: Option<&'static str>, pub draft: PathBuf, diff --git a/crates/devtools/src/planning_stages_text.rs b/crates/devtools/src/planning_stages_text.rs index a7aeca2f0..0036514f4 100644 --- a/crates/devtools/src/planning_stages_text.rs +++ b/crates/devtools/src/planning_stages_text.rs @@ -1,23 +1,30 @@ //! The planner stages' output as plain text: `asap_planner --format text`. //! It prints, up to the run's last stage, the frontends' roots and their -//! memo groups (Stage 0), Pass 1's `Memo`, -//! the memo after Pass 2's local window composition and Pass 2's -//! `LogicalASAPMemoCandidates` (Stage 2's input), Stage 2's -//! `PhysicalASAPMemoCandidates` (Stage 3's input), and Stage 3's -//! `Selection` with the selected memo choice, each node's cost and each -//! query's accepted accuracy. Planning never reads it. +//! memo groups (Stage 0), Pass 1's `Memo`, the memo after Pass 2's local +//! window composition and Pass 2's `LogicalASAPMemoCandidates` (Stage 2's +//! input), Stage 2's `PhysicalASAPMemoCandidates` (Stage 3's input: each +//! physical candidate with every edge into each of its inputs and +//! $\alpha$, then the candidates Stage 2 pruned), and Stage 3's `Selection` +//! (the selected DAG, each node's cost, each query's accepted accuracy and +//! the candidates Stage 3 pruned). Planning never reads it. //! //! Notation: `G` is memo group `n` and `G[]` its candidate `i`; -//! `O` is Stage 2's operator node `n` and `C` physical candidate `n`; -//! `<- ...` lists what a line reads; `new` marks a candidate the step -//! added. A candidate's chain lists its own nodes root first, down to its -//! input groups: +//! `C` is physical candidate `n`; `<- ...` lists what a line reads; +//! `new` marks a candidate the step added; `θ` and `ω` are a candidate's +//! parameters and window layout, `floors` its parameter floor per input; +//! an edge is `✓` when admissible, else `✗` with why: //! //! ```text -//! G1: TimeRange 60s <- G0 -//! G2: Aggregate rate() <- G1 -//! [0] Pass1 FinalizeExactAccumulator ← SummaryAgg inputs=[G1] -//! [1] TumblingWindows new FinalizeExactAccumulator ← SummaryMerge ← SummaryTumblingWindowChain tumbling_window_count=6 tumbling_window_width_ms=10000 inputs=[G0] +//! G4: SummaryEstimate Quantile(q=0.99) <- G3 +//! [0] Pass1 SummaryEstimate Quantile(q=0.99) <- G3 exact floors=[Kll(k=269)] +//! +//! C32 = G4[0] (QueryTime, None) SummaryEstimate Quantile(q=0.99) +//! input 0 <- G3, requires θ ⪰ Kll(k=269): +//! C14 = G3[4] (QueryTime, None) ✓ +//! C6 = G2[0] (QueryTime, None) Aggregate quantile(q=0.99) +//! input 0 <- G1: +//! C3 = G1[0] (QueryTime, None) ✓ +//! C5 = G1[0] (IngestionTime, None) ✗ α^phys = 0: consumer (QueryTime, None) cannot read producer (IngestionTime, None) //! ``` use std::fmt::Write; diff --git a/crates/devtools/src/rqe_atomic_costs.rs b/crates/devtools/src/rqe_atomic_costs.rs index 05681f699..39bf589b5 100644 --- a/crates/devtools/src/rqe_atomic_costs.rs +++ b/crates/devtools/src/rqe_atomic_costs.rs @@ -18,7 +18,7 @@ //! ``` //! //! Only this converter reads the sketch-bench format; the planner reads the -//! table. Rows plan selection cannot price from the table are skipped with +//! table. Rows plan selection cannot cost from the table are skipped with //! the reason: exact accumulators, Hydra structures (shared across groups, //! measured at one label width) and sketch names with no planner sketch. //! @@ -33,7 +33,7 @@ use serde_json::Value; pub struct SkippedRow { /// The row's `sketch` name, e.g. `exact-sum`. pub sketch_name: String, - /// Why plan selection cannot price from it. + /// Why plan selection cannot cost from it. pub reason: String, } @@ -110,9 +110,9 @@ pub fn convert_rqe_atomic_costs(rows: &Value) -> Result /// Why a row whose name has no planner sketch is skipped. fn skip_reason(sketch_name: &str) -> &'static str { if sketch_name.starts_with("exact-") { - "an exact accumulator: the table prices sketches only" + "an exact accumulator: the table costs sketches only" } else if sketch_name.starts_with("hydra-") { - "a Hydra structure shared across groups: the table prices one sketch per group" + "a Hydra structure shared across groups: the table costs one sketch per group" } else { "no planner sketch has this name" } diff --git a/crates/devtools/tests/asap_planner.rs b/crates/devtools/tests/asap_planner.rs index f96038517..c10013b3c 100644 --- a/crates/devtools/tests/asap_planner.rs +++ b/crates/devtools/tests/asap_planner.rs @@ -168,7 +168,7 @@ fn cost_inputs(inputs: &asap_cost::CostInputs) -> TempFile { TempFile::new(&serde_json::to_string(inputs).unwrap()) } -/// Cost model 1 at AWS Fargate's us-east-1 prices. +/// Cost model 1 at AWS Fargate's us-east-1 costs. fn aws_fargate() -> asap_cost::CostInputs { let defaults = asap_cost::CostInputs::default(); asap_cost::CostInputs { @@ -464,7 +464,7 @@ const NINE_QUERY_WORKLOAD: &str = "../../tools/dag-viewer/workloads/random-mixed-seed-862/workload-01.json"; /// The nine-query workload's document up to `run_until`, planned as a -/// deployment that keeps no raw data at AWS Fargate prices. +/// deployment that keeps no raw data at AWS Fargate costs. fn nine_query_document(run_until: &str) -> Value { let path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join(NINE_QUERY_WORKLOAD); let capabilities = TempFile::new(NO_RAW); @@ -482,7 +482,7 @@ fn nine_query_document(run_until: &str) -> Value { } /// The nine-query workload, planned as a deployment that keeps no raw data -/// at AWS Fargate prices with guarantees enforced: `asap_planner` lowers it +/// at AWS Fargate costs with guarantees enforced: `asap_planner` lowers it /// to one root per query, and installation returns a validated plan that /// accepts no query without its guarantee. #[test] @@ -520,7 +520,7 @@ fn the_nine_query_workload_lowers_and_installs() { } /// `asap_planner` selects a validated plan for the nine-query workload -/// (no raw data, AWS Fargate prices, guarantees enforced), with an +/// (no raw data, AWS Fargate costs, guarantees enforced), with an /// accepted accuracy per query and a MILP search report. #[test] fn the_nine_query_workload_selects_a_valid_plan() { @@ -831,7 +831,7 @@ fn the_cost_model_chooses_how_candidates_are_compared() { } } -/// AWS Fargate's us-east-1 prices Example 4 under cost model 1 in US +/// AWS Fargate's us-east-1 costs Example 4 under cost model 1 in US /// dollars per second: the selected plan costs no more than the /// whole-window KLL, $2.60278e-8/s (its 2.1 CPU-ms/s at $1.1244e-8 per /// CPU-ms, and its states held while the query runs). @@ -1585,7 +1585,7 @@ fn several_workload_files_in_different_languages_are_planned_together() { /// source they both declare: a run is refused rather than picking one. /// While data arrives, each source must also declare its own rate: plan /// selection shares a workload's `rows_per_second` out over all its -/// sources, so `flows` (10 groups, no sample interval) would be priced at +/// sources, so `flows` (10 groups, no sample interval) would be costed at /// 1500 × 10 / 15010 ≈ 1 row/s instead of its file's 500. #[test] fn workload_files_that_disagree_on_the_data_are_refused() { @@ -1820,7 +1820,7 @@ fn memo_example(path: &str) -> String { } /// The arguments for raw data retained, query-time results not retained, -/// AWS Fargate prices and enforced guarantees, with `capabilities` the +/// AWS Fargate costs and enforced guarantees, with `capabilities` the /// temporary deployment capabilities file they name. fn milp_args(capabilities: &TempFile) -> Vec { let aws = PathBuf::from(env!("CARGO_MANIFEST_DIR")) @@ -1938,7 +1938,7 @@ fn milp_search_selects_a_checked_ddsketch_plan_for_a_ratio_and_its_operands() { } } -/// The viewer's cost-input files carry the prices of the presets they are +/// The viewer's cost-input files carry the costs of the presets they are /// named after, so a change to `crates/cost`'s constants fails here instead /// of leaving the viewer and the snapshots on the old numbers. #[test] diff --git a/crates/executor/README.md b/crates/executor/README.md index de199a07f..32ff001fc 100644 --- a/crates/executor/README.md +++ b/crates/executor/README.md @@ -112,7 +112,7 @@ materialized views the computation reads (`PhysicalASAPDAG::materialized_views`) and output roots. Every `Scan` leaf is a raw data slot and every given view a materialized view slot; each has its node's `output_schema`. It returns a reusable `CompiledPhysicalDAG` containing selected native operators and no -live readers. Compilation validates schemas, input ordering, sharing and +live source cursors. Compilation validates schemas, input ordering, sharing and boundedness before deployment source access. A deployment calls `CompiledPhysicalDAG::instantiate` with one `DataStore` diff --git a/crates/executor/src/expressions/mod.rs b/crates/executor/src/expressions/mod.rs index 5473015d0..732998269 100644 --- a/crates/executor/src/expressions/mod.rs +++ b/crates/executor/src/expressions/mod.rs @@ -22,7 +22,7 @@ pub(crate) fn promql_anchored_regex(pattern: &str) -> Result String { let mut escaped = String::with_capacity(pattern.len() + 1); let mut chars = pattern.chars(); diff --git a/crates/executor/src/expressions/planner.rs b/crates/executor/src/expressions/planner.rs index dc49634a6..b0ec8da56 100644 --- a/crates/executor/src/expressions/planner.rs +++ b/crates/executor/src/expressions/planner.rs @@ -1106,11 +1106,11 @@ mod tests { .unwrap(); let restored: CompiledExpression = serde_json::from_str(&serde_json::to_string(&compiled).unwrap()).unwrap(); - for (job, kept) in [("api", false), ("db", false), ("web", true), ("api2", true)] { + for (job, remaining) in [("api", false), ("db", false), ("web", true), ("api2", true)] { let row = [Value::Utf8(job.into())]; for expression in [&compiled, &restored] { assert!( - matches!(expression.evaluate(&row), Ok(Value::Bool(b)) if b == kept), + matches!(expression.evaluate(&row), Ok(Value::Bool(b)) if b == remaining), "{job}" ); } diff --git a/crates/executor/src/operators/aggregate/temporal.rs b/crates/executor/src/operators/aggregate/temporal.rs index 55e2b628e..d3474b0da 100644 --- a/crates/executor/src/operators/aggregate/temporal.rs +++ b/crates/executor/src/operators/aggregate/temporal.rs @@ -62,7 +62,7 @@ pub(in crate::operators) async fn reduce_batch( } work.checkpoint_rows(batch.num_rows()).await?; workspace.set_bytes(table.memory_bytes() + 16 * batch.num_rows())?; - let mut kept = Vec::new(); + let mut remaining = Vec::new(); let mut results = Vec::new(); for group in table.groups_in_key_order() { work.checkpoint().await?; @@ -95,11 +95,11 @@ pub(in crate::operators) async fn reduce_batch( )? }; if let Some(result) = result { - kept.push(group); + remaining.push(group); results.push(result); } } - let labels = table.label_arrays(batch.schema(), &kept)?; + let labels = table.label_arrays(batch.schema(), &remaining)?; Ok((labels, results)) } diff --git a/crates/executor/src/operators/common.rs b/crates/executor/src/operators/common.rs index 0a9732dc5..90a2467da 100644 --- a/crates/executor/src/operators/common.rs +++ b/crates/executor/src/operators/common.rs @@ -72,7 +72,7 @@ pub(crate) fn row_chunks(batch: &Batch) -> impl Iterator + '_ { pub(super) struct CollectedInput { /// All the input's rows. pub(super) batch: Batch, - /// The producer's batch, kept with its reservation. + /// The producer's batch, retained with its reservation. _held: Option>, /// The reservation of a joined copy. _reservation: Option, diff --git a/crates/executor/src/operators/filter.rs b/crates/executor/src/operators/filter.rs index 5d1f92f42..7e05dc3e6 100644 --- a/crates/executor/src/operators/filter.rs +++ b/crates/executor/src/operators/filter.rs @@ -19,7 +19,7 @@ pub(super) fn execute<'a>( let input = inputs.pop().ok_or_else(|| invalid("input missing"))?; match &operator.kind { // The predicate is one column per batch; Arrow's filter kernel then - // copies the kept cells of each plain column. State columns are + // copies the retained cells of each plain column. State columns are // shared, not copied. Kind::Filter(predicate) => { let predicate = predicate.at_evaluation_time(&context); diff --git a/crates/executor/src/operators/group_table.rs b/crates/executor/src/operators/group_table.rs index 53e6a702d..82823cb7b 100644 --- a/crates/executor/src/operators/group_table.rs +++ b/crates/executor/src/operators/group_table.rs @@ -538,7 +538,7 @@ mod tests { } // A group's labels are its own first row's values, as the row operators - // kept them: with two group columns, the group (0.0, "a") seen after + // retained them: with two group columns, the group (0.0, "a") seen after // (-0.0, "b") is labelled 0.0, not the -0.0 its float part was first // seen with. #[test] diff --git a/crates/executor/src/operators/joins/mod.rs b/crates/executor/src/operators/joins/mod.rs index e67767cfd..ffa32ba10 100644 --- a/crates/executor/src/operators/joins/mod.rs +++ b/crates/executor/src/operators/joins/mod.rs @@ -160,21 +160,21 @@ pub(super) fn execute<'a>( .into_iter() .zip(matchable_rows(&left_keys)) .map(|(id, matchable)| { - let kept = matchable && members.contains(&id); - if kept && *require_complete_right { + let remaining = matchable && members.contains(&id); + if remaining && *require_complete_right { covered.insert(id); } - Some(kept) + Some(remaining) }) .collect::(); work.checkpoint_rows(left.num_rows()).await?; if *require_complete_right && members != covered { return Err(invalid("certified pruning key has no authoritative value")); } - let kept = left.filter(&keep)?; - workspace.grow(kept.memory_bytes())?; + let remaining = left.filter(&keep)?; + workspace.grow(remaining.memory_bytes())?; let _ = output; - Ok(kept) + Ok(remaining) }) .boxed_local()); } diff --git a/crates/executor/src/operators/limit.rs b/crates/executor/src/operators/limit.rs index 817d028f2..d6584b270 100644 --- a/crates/executor/src/operators/limit.rs +++ b/crates/executor/src/operators/limit.rs @@ -51,17 +51,17 @@ pub(super) fn execute<'a>( .iter() .map(|&group| { let count = &mut seen[group as usize]; - let kept = *count >= offset && count.saturating_sub(offset) < n; + let remaining = *count >= offset && count.saturating_sub(offset) < n; *count = count.saturating_add(1); - Some(kept) + Some(remaining) }) .collect::(); let done = groups.is_empty() && seen .first() .is_some_and(|count| count.saturating_sub(offset) >= n); - let kept = batch.filter(&keep)?; - Ok(Some((kept, (input, table, seen, workspace, done)))) + let remaining = batch.filter(&keep)?; + Ok(Some((remaining, (input, table, seen, workspace, done)))) } }, ) diff --git a/crates/executor/src/operators/mod.rs b/crates/executor/src/operators/mod.rs index 79f7dfcfe..d84efa137 100644 --- a/crates/executor/src/operators/mod.rs +++ b/crates/executor/src/operators/mod.rs @@ -164,7 +164,7 @@ enum Kind { value: usize, time: Option, groups: Vec, - /// Rows for which this is not true update no state; their group is kept. + /// Rows for which this is not true update no state; their group is retained. #[serde(default, skip_serializing_if = "Option::is_none")] filter: Option>, }, @@ -180,7 +180,7 @@ enum Kind { /// What each row adds to its item's count. row_weight: RowWeight, groups: Vec, - /// Rows for which this is not true update no state; their group is kept. + /// Rows for which this is not true update no state; their group is retained. #[serde(default, skip_serializing_if = "Option::is_none")] filter: Option>, }, @@ -196,7 +196,7 @@ enum Kind { /// What each row adds to its item's count. row_weight: RowWeight, groups: Vec, - /// Rows for which this is not true update no state; their group is kept. + /// Rows for which this is not true update no state; their group is retained. #[serde(default, skip_serializing_if = "Option::is_none")] filter: Option>, }, diff --git a/crates/executor/src/operators/series_labels.rs b/crates/executor/src/operators/series_labels.rs index fdf8b8b73..eb943e9db 100644 --- a/crates/executor/src/operators/series_labels.rs +++ b/crates/executor/src/operators/series_labels.rs @@ -712,7 +712,8 @@ async fn series_binary( let rows = series_rows(vector, schema)?; let mut seen = std::collections::BTreeSet::new(); // Kept rows and their values; with the name dropped, their sets. - let (mut kept, mut computed_values, mut rendered) = (Vec::new(), Vec::new(), Vec::new()); + let (mut remaining, mut computed_values, mut rendered) = + (Vec::new(), Vec::new(), Vec::new()); for row in 0..rows.len() { let value = rows.value(row); let (l, r) = if scalars[0] { @@ -738,16 +739,16 @@ async fn series_binary( "vector cannot contain metrics with the same labelset", )); } - kept.push(row as u32); + remaining.push(row as u32); computed_values.push(computed); } work.checkpoint_rows(rows.len()).await?; if drops_name { return render(output, &rendered); } - // The kept rows as they were, with their computed values. + // The retained rows as they were, with their computed values. let layout = layout(schema)?; - let taken = vector.take(&arrow::array::UInt32Array::from(kept))?; + let taken = vector.take(&arrow::array::UInt32Array::from(remaining))?; let mut arrays = taken.record_batch().columns().to_vec(); arrays[layout.value] = Arc::new(arrow::array::Float64Array::from(computed_values)); return Batch::from_parts( diff --git a/crates/executor/src/operators/summary/mod.rs b/crates/executor/src/operators/summary/mod.rs index 0fcad8de6..11c971d47 100644 --- a/crates/executor/src/operators/summary/mod.rs +++ b/crates/executor/src/operators/summary/mod.rs @@ -589,7 +589,7 @@ fn filter_mask(filter: Option<&Expression>, batch: &Batch) -> Result, row: usize) -> bool { +fn row_selected(mask: &Option, row: usize) -> bool { mask.as_ref() .is_none_or(|mask| mask.is_valid(row) && mask.value(row)) } @@ -669,7 +669,7 @@ async fn build_per_group_summary( if let Some(values) = values.as_any().downcast_ref::() { for (row, &group) in groups.iter().enumerate() { // SQL aggregates ignore NULL samples while retaining the group. - if !kept(&mask, row) || values.is_null(row) { + if !row_selected(&mask, row) || values.is_null(row) { continue; } updater.update(group, values.value(row), time_at(row))?; @@ -678,7 +678,7 @@ async fn build_per_group_summary( { // Int64 ids or numbers, without decoding the column. for (row, &group) in groups.iter().enumerate() { - if !kept(&mask, row) || values.is_null(row) { + if !row_selected(&mask, row) || values.is_null(row) { continue; } updater.update_value(group, &Value::Int64(values.value(row)), time_at(row))?; @@ -696,7 +696,7 @@ async fn build_per_group_summary( ColumnDepth::BatchColumn, ); for (row, &group) in groups.iter().enumerate() { - if !kept(&mask, row) || matches!(values[row], Value::Null) { + if !row_selected(&mask, row) || matches!(values[row], Value::Null) { continue; } updater.update_value(group, &values[row], time_at(row))?; @@ -763,7 +763,7 @@ fn decoded_columns(batch: &Batch, columns: &[usize]) -> Vec> { .collect() } -/// One keyed state per group: each kept row adds its weight to the tuple of +/// One keyed state per group: each retained row adds its weight to the tuple of /// its item values in its group's state. async fn build_per_group_keyed_summary( mut input: Input<'_, Batch>, @@ -791,7 +791,7 @@ async fn build_per_group_keyed_summary( let weights = RowWeights::of(&batch, build.row_weight); let columns = decoded_columns(&batch, build.items); for (row, &group) in groups.iter().enumerate() { - if !kept(&mask, row) { + if !row_selected(&mask, row) { continue; } let weight = match &weights { @@ -869,7 +869,7 @@ async fn build_all_groups_summary( let weights = RowWeights::of(&batch, build.row_weight); let items = decoded_columns(&batch, &[build.item]).remove(0); for (row, &group) in groups.iter().enumerate() { - if !kept(&mask, row) { + if !row_selected(&mask, row) { continue; } let weight = match &weights { @@ -1057,7 +1057,7 @@ async fn merge_objects<'b>( let mut retained = table_memory_bytes; // States shared by several groups (Hydra grids) are reserved once each. let mut shared = BTreeMap::::new(); - // The inputs are kept so their addresses stay unique while they key the memo. + // The inputs are retained so their addresses stay unique while they key the memo. type GridPair = (Arc, Arc, Arc); let mut grids = BTreeMap::<(usize, usize), GridPair>::new(); for &entry in entries { @@ -1286,14 +1286,14 @@ fn evaluate_states( } }); } - let kept = if keep.iter().all(|&k| k) { + let remaining = if keep.iter().all(|&k| k) { batch.clone() } else { batch.filter(&BooleanArray::from(keep))? }; - let mut arrays = kept.record_batch().columns().to_vec(); + let mut arrays = remaining.record_batch().columns().to_vec(); let mut columns = (0..arrays.len()) - .map(|column| kept.state_column(column).cloned()) + .map(|column| remaining.state_column(column).cloned()) .collect::>(); let SummaryFamilyType::Plain(dtype) = &field.dtype else { unreachable!("an evaluation outputs a plain value") @@ -1304,7 +1304,7 @@ fn evaluate_states( .collect::>(); arrays[state] = crate::values::arrow_columns::encode(dtype, ColumnDepth::BatchColumn, &cells)?; columns[state] = None; - Batch::from_parts(output.clone(), arrays, columns, kept.num_rows()) + Batch::from_parts(output.clone(), arrays, columns, remaining.num_rows()) } /// `SummaryEstimate` of a top-k: each input row's `k` heaviest items, one diff --git a/crates/executor/src/operators/time_range.rs b/crates/executor/src/operators/time_range.rs index 9e0540b62..12fec3001 100644 --- a/crates/executor/src/operators/time_range.rs +++ b/crates/executor/src/operators/time_range.rs @@ -11,7 +11,7 @@ impl Operator { /// `(window_end_ms - width_ms, window_end_ms]` in an ingestion run. /// With `sample_value`, a time series' value column, a stale marker is /// not a row. With `latest_per_series` (an instant window), only each - /// series' latest row in the window is kept (of rows at one time, the + /// series' latest row in the window is retained (of rows at one time, the /// last), and none when that row is a stale marker; a series is the /// values of those columns (its labels). pub fn time_range( @@ -95,7 +95,7 @@ pub(super) fn execute<'a>( let (start, end) = window(end_offset_ms, width_ms, &context)?; // Whether each row is in the window and, for a range window, not a // stale marker. - let kept = + let selected_rows = move |batch: &Batch, drop_stale: bool| -> Result { let times = batch .column(time) @@ -132,7 +132,7 @@ pub(super) fn execute<'a>( return Err(Error::Cancelled); } let batch = batch?; - let keep = kept(&batch, true)?; + let keep = selected_rows(&batch, true)?; if keep.true_count() == batch.num_rows() { return Ok((*batch).clone()); } @@ -145,7 +145,7 @@ pub(super) fn execute<'a>( let input = collect_batch(input, &operator.inputs[0], &context).await?; // The rows in the window, stale markers included: a series whose // latest sample is one has ended. - let in_window = input.batch.filter(&kept(&input.batch, false)?)?; + let in_window = input.batch.filter(&selected_rows(&input.batch, false)?)?; let times = in_window .column(time) .as_any() @@ -174,7 +174,7 @@ pub(super) fn execute<'a>( .collect::>(), ))?; // Then a series whose latest sample is a stale marker has no row. - let keep = kept(&latest, true)?; + let keep = selected_rows(&latest, true)?; latest.filter(&keep) }) .boxed_local()) diff --git a/crates/executor/src/operators/vector_window.rs b/crates/executor/src/operators/vector_window.rs index 42dd548f3..4cbc3429f 100644 --- a/crates/executor/src/operators/vector_window.rs +++ b/crates/executor/src/operators/vector_window.rs @@ -119,7 +119,7 @@ pub(super) fn execute<'a>( return Err(invalid("histogram buckets require labels")); }; let mut bound = None; - let mut kept = BTreeMap::new(); + let mut remaining = BTreeMap::new(); let mut seen = std::collections::BTreeSet::new(); for (key, value) in entries.iter() { let (Value::Utf8(key), Value::Utf8(value)) = (key, value) else { @@ -131,12 +131,13 @@ pub(super) fn execute<'a>( if key.as_ref() == "le" { bound = value.parse::().ok(); } else if key.as_ref() != "__name__" && !value.is_empty() { - kept.insert(key.clone(), value.clone()); + remaining.insert(key.clone(), value.clone()); } } if let Some(bound) = bound { labels_out.push(Value::Map( - kept.into_iter() + remaining + .into_iter() .map(|(k, v)| (Value::Utf8(k), Value::Utf8(v))) .collect::>() .into(), diff --git a/crates/executor/src/physical_planner/compiled.rs b/crates/executor/src/physical_planner/compiled.rs index 6e884928b..a90606968 100644 --- a/crates/executor/src/physical_planner/compiled.rs +++ b/crates/executor/src/physical_planner/compiled.rs @@ -37,7 +37,7 @@ pub(super) struct RawDataSlot { pub(super) schema: SchemaRef, /// The `Scan`'s predicates, compiled over `schema`. pub(super) predicates: Vec, - /// The rows its readers read ([`PhysicalASAPDAG::scan_window`]). + /// The rows its consumers read ([`PhysicalASAPDAG::scan_window`]). pub(super) window: ScanWindow, } @@ -134,7 +134,7 @@ impl CompiledPhysicalDAG { Node::Operator { .. } => None, }) } - /// The schema of a node's output, without opening deployment readers. + /// The schema of a node's output, without opening deployment source cursors. pub fn output_schema(&self, id: NodeId) -> Result { match self .nodes @@ -146,11 +146,11 @@ impl CompiledPhysicalDAG { Node::Operator { operator, .. } => Ok(operator.output_schema()), } } - /// Validate using schema-only sources. No deployment reader is available. + /// Validate using schema-only sources. No deployment source is available. pub fn validate(&self) -> Result<(), Error> { self.unbound().map(|_| ()) } - /// The DAG with a reader-free bounded stand-in for every input slot. + /// The DAG with a source-free bounded stand-in for every input slot. fn unbound(&self) -> Result, Error> { let mut dag = PhysicalDAG::default(); for (&id, node) in &self.nodes { @@ -167,7 +167,7 @@ impl CompiledPhysicalDAG { dag.validate(&self.roots)?; Ok(dag) } - /// Bind every input slot to `store` and validate. Opens no reader: + /// Bind every input slot to `store` and validate. Opens no source cursor: /// each slot becomes a `Scan` that reads `store` when the run starts, a /// raw data slot by its `Source` and a materialized view slot by its /// `MaterializedView`. diff --git a/crates/executor/src/physical_planner/mod.rs b/crates/executor/src/physical_planner/mod.rs index 04e2b0f4e..8536e2b80 100644 --- a/crates/executor/src/physical_planner/mod.rs +++ b/crates/executor/src/physical_planner/mod.rs @@ -1,5 +1,5 @@ //! Compile logical computation to native operators with typed external inputs. -//! Compilation needs no readers; deployment resolves inputs after selection. +//! Compilation needs no source cursors; deployment resolves inputs after selection. //! A node without a native lowering fails compilation; the deployment runtime //! must execute it. use crate::operators::{RowWeight, SummaryEvaluation}; @@ -50,7 +50,7 @@ pub use compiled::CompiledPhysicalDAG; mod row_values; -/// Compile computation without opening or retaining deployment readers. +/// Compile computation without opening or retaining deployment source cursors. /// Every reachable `Scan` leaf is a raw data slot, read by its `Source`; its /// predicates must compile over its schema. Each of `views` /// ([`PhysicalASAPDAG::materialized_views`]) is a materialized view slot, @@ -219,7 +219,7 @@ fn compile_internal( }) .collect::, _>>() .map_err(|error| invalid(format!("scan {id}: {error}")))?; - // The rows its readers read; a compile root reads them all. + // The rows its consumers read; a compile root reads them all. let window = match output.time_index { Some(_) if !compile_roots.contains(&id) => { scan_windows[&(id as PhysicalASAPNodeId)] diff --git a/crates/executor/src/runtime/mod.rs b/crates/executor/src/runtime/mod.rs index 986b95484..400124495 100644 --- a/crates/executor/src/runtime/mod.rs +++ b/crates/executor/src/runtime/mod.rs @@ -90,9 +90,9 @@ pub(crate) fn execute<'r, V: 'r, S: Clone + PartialEq + Debug + 'r>( context: context.clone(), queue: VecDeque::new(), base: 0, - next_reader: 0, + next_consumer: 0, batches_polled: 0, - readers: BTreeMap::new(), + consumers: BTreeMap::new(), waiters: BTreeMap::new(), finished: false, failure: None, @@ -114,9 +114,9 @@ struct Producer<'a, V> { context: RunContext, queue: VecDeque>, base: u64, - next_reader: u64, + next_consumer: u64, batches_polled: usize, - readers: BTreeMap, + consumers: BTreeMap, waiters: BTreeMap, finished: bool, failure: Option, @@ -124,7 +124,7 @@ struct Producer<'a, V> { impl Producer<'_, V> { fn trim(&mut self) { let minimum = self - .readers + .consumers .values() .copied() .min() @@ -136,7 +136,7 @@ impl Producer<'_, V> { for (_, waker) in std::mem::take(&mut self.waiters) { waker.wake(); } - if self.readers.is_empty() { + if self.consumers.is_empty() { self.stream = None; self.queue.clear(); } @@ -144,22 +144,22 @@ impl Producer<'_, V> { } pub struct Input<'a, V> { producer: Rc>>, - reader: u64, + consumer: u64, done: bool, } impl<'a, V> Input<'a, V> { fn subscribe(producer: Rc>>) -> Self { - let reader = { + let consumer = { let mut state = producer.borrow_mut(); - let id = state.next_reader; - state.next_reader += 1; + let id = state.next_consumer; + state.next_consumer += 1; let base = state.base; - state.readers.insert(id, base); + state.consumers.insert(id, base); id }; Self { producer, - reader, + consumer, done: false, } } @@ -167,8 +167,8 @@ impl<'a, V> Input<'a, V> { impl Drop for Input<'_, V> { fn drop(&mut self) { let mut state = self.producer.borrow_mut(); - state.readers.remove(&self.reader); - state.waiters.remove(&self.reader); + state.consumers.remove(&self.consumer); + state.waiters.remove(&self.consumer); state.trim(); } } @@ -187,21 +187,21 @@ impl Stream for Input<'_, V> { state.stream = None; state.queue.clear(); } - let position = state.readers[&this.reader]; + let position = state.consumers[&this.consumer]; let index = (position - state.base) as usize; if let Some(value) = state.queue.get(index).cloned() { - state.readers.insert(this.reader, position + 1); + state.consumers.insert(this.consumer, position + 1); state.trim(); return Poll::Ready(Some(Ok(value))); } if state.finished { this.done = true; - state.readers.remove(&this.reader); + state.consumers.remove(&this.consumer); let failure = state.failure.clone(); state.trim(); return Poll::Ready(failure.map(Err)); } - state.waiters.insert(this.reader, cx.waker().clone()); + state.waiters.insert(this.consumer, cx.waker().clone()); if state.queue.len() >= state.context.control.limits.max_buffered_batches { return Poll::Pending; } @@ -229,7 +229,7 @@ impl Stream for Input<'_, V> { _reservation: Rc::new(reservation), }; state.queue.push_back(value.clone()); - state.readers.insert(this.reader, position + 1); + state.consumers.insert(this.consumer, position + 1); state.trim(); Poll::Ready(Some(Ok(value))) } @@ -238,7 +238,7 @@ impl Stream for Input<'_, V> { state.finished = true; state.stream = None; this.done = true; - state.readers.remove(&this.reader); + state.consumers.remove(&this.consumer); state.trim(); Poll::Ready(Some(Err(error))) } @@ -256,7 +256,7 @@ impl Stream for Input<'_, V> { state.finished = true; state.stream = None; this.done = true; - state.readers.remove(&this.reader); + state.consumers.remove(&this.consumer); state.trim(); Poll::Ready(error.map(Err)) } diff --git a/crates/executor/src/runtime/tests.rs b/crates/executor/src/runtime/tests.rs index 20816e952..982af27fe 100644 --- a/crates/executor/src/runtime/tests.rs +++ b/crates/executor/src/runtime/tests.rs @@ -88,16 +88,16 @@ fn source(fail: bool) -> (Source, Rc>, Rc>) { ) } -// A shared producer runs once, and the slow reader bounds producer progress. +// A shared producer runs once, and the slow consumer bounds producer progress. #[test] fn shared_source_backpressure_and_reader_drop() { let (source, starts, polls) = source(false); let mut dag = PhysicalDAG::default(); dag.add(0, vec![], source).unwrap(); let context = context(); - let mut readers = dag.execute(&[0, 0], context.clone()).unwrap(); - let mut slow = readers.pop().unwrap(); - let mut fast = readers.pop().unwrap(); + let mut consumers = dag.execute(&[0, 0], context.clone()).unwrap(); + let mut slow = consumers.pop().unwrap(); + let mut fast = consumers.pop().unwrap(); assert_eq!(starts.get(), 1); let first = block_on(fast.next()).unwrap().unwrap(); assert_eq!(*first, 0); diff --git a/crates/executor/src/sources/data_store.rs b/crates/executor/src/sources/data_store.rs index 22cc88b50..3464a59ab 100644 --- a/crates/executor/src/sources/data_store.rs +++ b/crates/executor/src/sources/data_store.rs @@ -49,9 +49,9 @@ pub struct RawDataRequest<'a> { /// `(start, end]` in milliseconds, on the slot's time column. /// /// - Query run at evaluation time `T`: the smallest range covering - /// every window the `Scan`'s readers read + /// every window the `Scan`'s consumers read /// ([`PhysicalASAPDAG::scan_window`](planner_types::ir::physical_export::PhysicalASAPDAG::scan_window)); - /// `None` when a reader reads the `Scan` outside a window. + /// `None` when a consumer reads the `Scan` outside a window. /// - Ingestion run: the run's `(window_start_ms, window_end_ms]` when /// the `Scan` is read through windows, else `None`. Each /// `TimeRange(w)` then keeps `(window_end_ms - w, window_end_ms]`, diff --git a/crates/executor/src/sources/mod.rs b/crates/executor/src/sources/mod.rs index d9ff969a9..79689385b 100644 --- a/crates/executor/src/sources/mod.rs +++ b/crates/executor/src/sources/mod.rs @@ -44,7 +44,7 @@ enum ScanInput { predicates: Vec, /// `predicates` as the store receives them. predicate_hints: Vec>, - /// The rows its readers read. + /// The rows its consumers read. window: ScanWindow, }, /// A materialized view slot: exact, never re-filtered; its states are @@ -305,7 +305,7 @@ impl Scan { batch = keep_rows(batch, &keep)?; } // Each predicate is one column over the rows the earlier ones - // kept; over dictionary-encoded labels it is evaluated once + // retained; over dictionary-encoded labels it is evaluated once // per distinct label value, not once per row. for predicate in &predicates { if batch.num_rows() == 0 { diff --git a/crates/executor/src/summary_kernels/exact.rs b/crates/executor/src/summary_kernels/exact.rs index ebfe857aa..eb6a55dd9 100644 --- a/crates/executor/src/summary_kernels/exact.rs +++ b/crates/executor/src/summary_kernels/exact.rs @@ -438,7 +438,7 @@ mod tests { keyed: Option, ScalarState>>, } - /// The planner prices one exact state at the bytes a column of them + /// The planner costs one exact state at the bytes a column of them /// holds per group: one `ScalarState`. #[test] fn the_planner_prices_an_exact_state_at_its_size() { diff --git a/crates/executor/src/summary_kernels/factory.rs b/crates/executor/src/summary_kernels/factory.rs index 1ab53b37e..d9a160151 100644 --- a/crates/executor/src/summary_kernels/factory.rs +++ b/crates/executor/src/summary_kernels/factory.rs @@ -332,7 +332,7 @@ impl AccumulatorUpdater for CmsAccumulatorUpdater { /// the key is one `Utf8` identity, as in the DAG's keyed build. /// /// Each raw Prometheus sample contributes its `value` as a Float64 weight, -/// kept exactly (no rounding). CountSketch accepts signed weights; Count-Min +/// retained exactly (no rounding). CountSketch accepts signed weights; Count-Min /// accepts nonnegative ones and rejects a negative input at validation. pub struct WeightedFrequencyUpdater { acc: WeightedFrequency, diff --git a/crates/executor/src/summary_kernels/state_column_updater.rs b/crates/executor/src/summary_kernels/state_column_updater.rs index de02f50a3..fd499133a 100644 --- a/crates/executor/src/summary_kernels/state_column_updater.rs +++ b/crates/executor/src/summary_kernels/state_column_updater.rs @@ -31,7 +31,7 @@ pub struct StateColumnUpdater { /// For a counter (rate, increase), each group's latest sample time: /// samples must arrive in strictly increasing time within a group. latest_sample_ms: Option>>, - /// Memory the open states hold, kept up to date on every change. + /// Memory the open states hold, updated on every change. memory_bytes: usize, /// The shape of the keys [`Self::add_group_with_key`] has taken, from /// the first: per position, the value type seen (`None` while only NULL diff --git a/crates/executor/src/summary_kernels/weighted_frequency.rs b/crates/executor/src/summary_kernels/weighted_frequency.rs index 1ee76bcb3..aeafc1668 100644 --- a/crates/executor/src/summary_kernels/weighted_frequency.rs +++ b/crates/executor/src/summary_kernels/weighted_frequency.rs @@ -375,7 +375,7 @@ mod tests { use super::*; // Top-k membership equals the old kernel's, which rescored every - // candidate after every update and kept the `capacity` best: on small, + // candidate after every update and retained the `capacity` best: on small, // colliding sketches, an update also moves residents it did not touch, // and after every update the retained keys are the reference model's // (up to exact ties). diff --git a/crates/executor/src/values/batch.rs b/crates/executor/src/values/batch.rs index 1f631ff1f..9a8efbb5f 100644 --- a/crates/executor/src/values/batch.rs +++ b/crates/executor/src/values/batch.rs @@ -79,7 +79,7 @@ fn arrow_schema(schema: &SchemaRef) -> Arc { impl Batch { /// The batch of `rows` in `schema`, encoded into columns (the rows are - /// not kept). For literal rows (`VALUES`, constants, tests); runtimes + /// not retained). For literal rows (`VALUES`, constants, tests); runtimes /// build batches from columns with [`Self::try_from_columns`]. Bad input /// when a row's width or a value's type differs from the schema, or a /// summary state differs from its declared family or parameters. @@ -292,7 +292,7 @@ impl Batch { } /// The rows where `keep` is true (not false or null), in order. Shares - /// the state columns; copies only the kept cells of plain columns. + /// the state columns; copies only the retained cells of plain columns. pub(crate) fn filter(&self, keep: &BooleanArray) -> Result { if keep.true_count() == self.num_rows() && keep.null_count() == 0 { return Ok(self.clone()); @@ -308,7 +308,7 @@ impl Batch { } /// This batch with each state column that its rows use less than half - /// of reduced to the states they use (exact records kept as records), + /// of reduced to the states they use (exact records retained as records), /// so a selective filter does not hold every state of its input. fn compacted(self) -> Result { let mut arrays = self.record_batch.columns().to_vec(); @@ -458,7 +458,7 @@ impl Batch { continue; } // Different state columns: one column of the states the rows - // reference (each once), exact records kept as records. + // reference (each once), exact records retained as records. let all_exact = columns.iter().all(|column| { matches!( column.map(|column| column.storage()), @@ -804,11 +804,11 @@ mod tests { let states = batch.state_column(1).unwrap(); assert_eq!(states.len(), 2); assert!(batch.state_column(0).is_none()); - let kept = batch + let remaining = batch .filter(&BooleanArray::from(vec![true, false, true])) .unwrap(); - assert!(Arc::ptr_eq(kept.state_column(1).unwrap(), states)); - let rows = decoded(&kept); + assert!(Arc::ptr_eq(remaining.state_column(1).unwrap(), states)); + let rows = decoded(&remaining); assert_eq!(rows.len(), 2); assert!(same(&rows[0][1], &state(&shared)) && same(&rows[1][1], &state(&shared))); } @@ -1023,11 +1023,11 @@ mod tests { ) .unwrap(); let keep = BooleanArray::from((0..10).map(|i| i == 3 || i == 7).collect::>()); - let kept = batch.filter(&keep).unwrap(); - assert_eq!(kept.state_column(1).unwrap().len(), 2); - assert!(kept.memory_bytes() < batch.memory_bytes()); + let remaining = batch.filter(&keep).unwrap(); + assert_eq!(remaining.state_column(1).unwrap().len(), 2); + assert!(remaining.memory_bytes() < batch.memory_bytes()); // The rows still read their own states. - let sums = decoded(&kept) + let sums = decoded(&remaining) .iter() .map(|row| { let Value::Summary { state, .. } = &row[1] else { @@ -1179,11 +1179,11 @@ mod tests { // Each derived state: its pointer slot and its "held outside" bit. let pointers = |states: usize| states * (std::mem::size_of::>() + 1); - // Compaction: 10 of 100 rows kept. + // Compaction: 10 of 100 rows retained. let keep = BooleanArray::from((0..100).map(|i| i % 10 == 0).collect::>()); - let kept = stored.filter(&keep).unwrap(); - assert_eq!(kept.state_column(0).unwrap().len(), 10); - assert_eq!(charged_states(&kept), pointers(10)); + let remaining = stored.filter(&keep).unwrap(); + assert_eq!(remaining.state_column(0).unwrap().len(), 10); + assert_eq!(charged_states(&remaining), pointers(10)); // Concat of two different stored columns. let other = state_batch(50, false); other.mark_states_held_outside_run(); @@ -1207,8 +1207,8 @@ mod tests { assert_eq!(charged_states(&stored), 0); let record = std::mem::size_of::(); let keep = BooleanArray::from((0..100).map(|i| i % 10 == 0).collect::>()); - let kept = stored.filter(&keep).unwrap(); - assert_eq!(charged_states(&kept), 10 * record); + let remaining = stored.filter(&keep).unwrap(); + assert_eq!(charged_states(&remaining), 10 * record); let other = state_batch(50, true); other.mark_states_held_outside_run(); let joined = Batch::concat(&stored.schema().clone(), &[stored, other]).unwrap(); @@ -1232,9 +1232,9 @@ mod tests { let (a, b) = (stored(100), stored(100)); let schema = a.schema().clone(); let joined = Batch::concat(&schema, &[a, b]).unwrap(); - let kept = joined.filter(&every_other(200)).unwrap(); - assert_eq!(kept.state_column(0).unwrap().len(), 20); - assert!(charged_states(&kept) <= 20 * (slot + 1)); + let remaining = joined.filter(&every_other(200)).unwrap(); + assert_eq!(remaining.state_column(0).unwrap().len(), 20); + assert!(charged_states(&remaining) <= 20 * (slot + 1)); // Compaction, then concat. let (a, b) = (stored(100), stored(100)); let (a, b) = ( @@ -1250,12 +1250,12 @@ mod tests { let built = state_batch(50, false); let one_built = charged_states(&built) / 50; let mixed = Batch::concat(&schema, &[built, stored(100)]).unwrap(); - let kept = mixed.filter(&every_other(150)).unwrap(); - assert_eq!(kept.state_column(0).unwrap().len(), 15); - let charged = charged_states(&kept); + let remaining = mixed.filter(&every_other(150)).unwrap(); + assert_eq!(remaining.state_column(0).unwrap().len(), 15); + let charged = charged_states(&remaining); assert!(charged >= 5 * one_built && charged <= 5 * one_built + 15 * (slot + 1)); let other = stored(100).filter(&every_other(100)).unwrap(); - let joined = Batch::concat(&schema, &[kept, other]).unwrap(); + let joined = Batch::concat(&schema, &[remaining, other]).unwrap(); assert_eq!(joined.state_column(0).unwrap().len(), 25); let charged = charged_states(&joined); assert!(charged >= 5 * one_built && charged <= 5 * one_built + 25 * (slot + 1)); @@ -1267,10 +1267,10 @@ mod tests { fn an_index_past_a_derived_column_is_not_held_outside_the_run() { let stored = state_batch(4, false); stored.mark_states_held_outside_run(); - let kept = stored + let remaining = stored .filter(&BooleanArray::from(vec![true, false, false, false])) .unwrap(); - let column = kept.state_column(0).unwrap(); + let column = remaining.state_column(0).unwrap(); assert_eq!(column.len(), 1); assert!(column.state_held_outside_run(0)); assert!(!column.state_held_outside_run(1)); diff --git a/crates/executor/tests/physical_semantics.rs b/crates/executor/tests/physical_semantics.rs index 291c5788b..229febe40 100644 --- a/crates/executor/tests/physical_semantics.rs +++ b/crates/executor/tests/physical_semantics.rs @@ -879,7 +879,7 @@ fn empty_exact_summary_extrema_agree_with_ordinary_aggregation() { } } -/// Rows of `g`, `x` and a nullable Boolean `keep`; `b` has no kept row, +/// Rows of `g`, `x` and a nullable Boolean `keep`; `b` has no retained row, /// and a NULL `keep` drops its row as SQL FILTER does. fn filtered_input() -> (SchemaRef, Vec>) { let input = schema(&[ @@ -976,7 +976,7 @@ fn round_trip(operator: Operator) -> Operator { } /// Per-measure filters keep every group: a filtered COUNT reads 0 and a -/// filtered SUM reads NULL for a group with no kept row, and an unfiltered +/// filtered SUM reads NULL for a group with no retained row, and an unfiltered /// measure beside them still sees every row. The filters survive /// serialization. #[test] @@ -1017,7 +1017,7 @@ fn measure_filters_keep_groups_without_matching_rows() { ); } -/// A filtered SUM is NULL for a group without a kept row, so a plan that +/// A filtered SUM is NULL for a group without a retained row, so a plan that /// declares it non-null does not bind. #[test] fn filtered_sum_declared_non_null_is_rejected() { @@ -1041,9 +1041,9 @@ fn filtered_sum_declared_non_null_is_rejected() { assert!(compile_node(&node, &[input]).is_err()); } -/// A filtered `SummaryAgg` updates its state only from kept rows but keeps +/// A filtered `SummaryAgg` updates its state only from retained rows but keeps /// a state for every group: an exact count reads 0 and a KLL quantile, -/// declared nullable, reads NULL for the group with no kept row. The +/// declared nullable, reads NULL for the group with no retained row. The /// filter survives serialization. #[test] fn filtered_summary_build_keeps_empty_groups() { diff --git a/crates/executor/tests/plan_properties.rs b/crates/executor/tests/plan_properties.rs index 967ba3197..d597401ea 100644 --- a/crates/executor/tests/plan_properties.rs +++ b/crates/executor/tests/plan_properties.rs @@ -1,4 +1,4 @@ -//! A blocking parent over a raw data slot is finite, and binding it opens no reader. +//! A blocking parent over a raw data slot is finite, and binding it opens no source cursor. use asap_executor::{ physical_planner::compile, plan::{Boundedness, Emission}, @@ -93,7 +93,7 @@ fn sorted_scan(schema: &Schema, identity: &Source) -> PhysicalASAPDAG { } } // A blocking parent over a raw data slot is Bounded and emits after its -// input: the `Scan` reads a finite request. Instantiation opens no reader; +// input: the `Scan` reads a finite request. Instantiation opens no source cursor; // the run opens it once. #[test] fn blocking_inputs_over_a_raw_data_slot_are_finite() { diff --git a/crates/executor/tests/planspace_series_identity_heap.rs b/crates/executor/tests/planspace_series_identity_heap.rs index 4ae5aff80..c0bbc3c61 100644 --- a/crates/executor/tests/planspace_series_identity_heap.rs +++ b/crates/executor/tests/planspace_series_identity_heap.rs @@ -1,6 +1,6 @@ //! Plan selection never commits a heap that needs the PromQL series identity //! the query's rows do not carry: the planner pipeline plans the logical DAG -//! the frontend lowered, and a deployment prices heaps. +//! the frontend lowered, and a deployment costs heaps. use crate::common; use common::selected_dag; use planner_types::ir::OperatorNode; diff --git a/crates/executor/tests/raw_scan.rs b/crates/executor/tests/raw_scan.rs index f6041e115..06b1df4fe 100644 --- a/crates/executor/tests/raw_scan.rs +++ b/crates/executor/tests/raw_scan.rs @@ -217,7 +217,7 @@ impl DataStore for CountingStore { ) -> Result, Error> { self.opened.fetch_add(1, Ordering::SeqCst); if self.fail { - return Err(Error::Operator("reader failed".into())); + return Err(Error::Operator("cursor failed".into())); } Ok(stream::iter(vec![Batch::try_new( request.schema.clone(), @@ -262,9 +262,9 @@ fn lazy_open_shared_producer_and_cancellation() { assert_eq!(opened.load(Ordering::SeqCst), 2); } // Unsupported predicates fail before opening any cursor; a store without -// the source and a failing reader fail the run, not as an empty result. +// the source and a failing source cursor fail the run, not as an empty result. #[test] -fn binding_errors_and_reader_errors_are_not_empty_results() { +fn binding_errors_and_cursor_errors_are_not_empty_results() { let (mut scan, schema, _) = fixture(); let unbound = bind( &plan(scan.clone(), &schema, ExecutionDataState::QUERY_ROWS), @@ -397,7 +397,7 @@ fn empty_sources_and_three_valued_predicates() { } } -// A physical candidate can be compiled once without readers and rebound per +// A physical candidate can be compiled once without source cursors and rebound per // run; a run over a store without its table fails. #[test] fn compile_without_readers_and_rebind_inputs() { diff --git a/crates/executor/tests/stored_tumbling_window_memory_limit.rs b/crates/executor/tests/stored_tumbling_window_memory_limit.rs index 6cc7686fc..f91a13660 100644 --- a/crates/executor/tests/stored_tumbling_window_memory_limit.rs +++ b/crates/executor/tests/stored_tumbling_window_memory_limit.rs @@ -141,7 +141,7 @@ fn a_merge_that_allocates_past_the_limit_still_fails() { // pointers, not the sketches. Keeping 51% (no compaction) fits too. #[test] fn compacting_a_stored_tumbling_window_does_not_charge_its_shared_sketches() { - for kept in [980, 1_020] { + for remaining in [980, 1_020] { let (schema, tumbling_window) = tumbling_window_of(2_000); let mut dag = PhysicalDAG::default(); dag.add( @@ -153,7 +153,7 @@ fn compacting_a_stored_tumbling_window_does_not_charge_its_shared_sketches() { dag.add( 1, vec![0], - Operator::limit(schema, kept, 0, vec![]).unwrap(), + Operator::limit(schema, remaining, 0, vec![]).unwrap(), ) .unwrap(); let context = RunContext::new( @@ -174,7 +174,11 @@ fn compacting_a_stored_tumbling_window_does_not_charge_its_shared_sketches() { } Ok::<_, Error>(rows) }); - assert_eq!(rows.unwrap(), kept as usize, "keeping {kept} rows"); + assert_eq!( + rows.unwrap(), + remaining as usize, + "keeping {remaining} rows" + ); } } diff --git a/crates/frontend-common/src/canonicalize.rs b/crates/frontend-common/src/canonicalize.rs index f99739f56..11503006e 100644 --- a/crates/frontend-common/src/canonicalize.rs +++ b/crates/frontend-common/src/canonicalize.rs @@ -68,7 +68,7 @@ pub(crate) fn canonicalize( /// itself read so (a branch gives the whole output of a `Concat` that is /// the answer). A rewrite that changes a node's columns, as heavy-hitter /// promotion does, applies only to a node outside this set, whose columns -/// are the query's answer: rewritten under a positional reader, a column +/// are the query's answer: rewritten under a positional lookup, a column /// index would name another column. fn read_by_position(root: &Rc) -> HashSet<*const OperatorNode> { let nodes = OperatorNode::reachable(root); @@ -388,13 +388,13 @@ fn try_rewrite_row_number_top_k( } // Each SELECT item as a column of the window's input, under its output // name; `rn` itself is not one. - let mut kept = Vec::with_capacity(select_list.len()); + let mut remaining = Vec::with_capacity(select_list.len()); for (item, field) in select_list.iter().zip(&node.schema.fields) { let ScalarExpr::Column(column) = item.expr else { return Ok(None); }; match window_column(column) { - Some(underlying) if underlying < row_number => kept.push(ProjectItem { + Some(underlying) if underlying < row_number => remaining.push(ProjectItem { alias: Some(field.name.clone()), expr: ScalarExpr::Column(underlying), }), @@ -417,7 +417,8 @@ fn try_rewrite_row_number_top_k( }; // A column of `X` as a column of `Project{P}{X}`, if `P` keeps it. let position_in_kept = |column: usize| { - kept.iter() + remaining + .iter() .position(|item| item.expr == ScalarExpr::Column(column)) }; let partition_in_kept: Option> = @@ -435,13 +436,13 @@ fn try_rewrite_row_number_top_k( let rewritten = match (partition_in_kept, order_in_kept) { (Some(partition), Some(order)) if !partition_by.is_without() => { let selected = new(NonASAPOp::Project { - cols: kept, + cols: remaining, child: Rc::clone(ranked), })?; limit(GroupKeys::by(partition), order, selected)? } _ => new(NonASAPOp::Project { - cols: kept, + cols: remaining, child: limit(partition_by.clone(), order_by.clone(), Rc::clone(ranked))?, })?, }; @@ -978,7 +979,7 @@ mod tests { filter_cmp(col, CompareOpKind::Le, 5, child) } - /// `Project{ cols }` naming each kept column as SQL does (`c` for the + /// `Project{ cols }` naming each retained column as SQL does (`c` for the /// aggregate output). fn select(cols: &[usize], child: Rc) -> Rc { node(NonASAPOp::Project { @@ -1080,7 +1081,7 @@ mod tests { assert_idempotent(&out); } - /// A tie-breaking second ORDER BY key is kept: the generic + /// A tie-breaking second ORDER BY key is retained: the generic /// per-partition `Limit{Sort}` sorts by both keys. #[test] fn rownumber_with_a_tie_breaking_key_keeps_both_sort_keys() { diff --git a/crates/frontend-promql/src/promql.rs b/crates/frontend-promql/src/promql.rs index 57134ef34..8a1814eb4 100644 --- a/crates/frontend-promql/src/promql.rs +++ b/crates/frontend-promql/src/promql.rs @@ -48,7 +48,7 @@ //! | `OUTER by (dims) (…)` | `Aggregate.reduction = Reduce(by = dims)` (generic `topk by`/`bottomk` grouping → `Sort.partition_by`) | //! | `count by (d) (…)` | `Aggregate{[Count], …}` | //! | `group(v)` / `count_values("l", v)` | `Aggregate{[Group]}` (constant 1) / `Aggregate{[CountValues{l}]}` (group-by-value + count, new label `l`) — issue #49 | -//! | `limitk(k, v)` / `limit_ratio(r, v)` | `PromqlSeriesSample{LimitK(k) \| LimitRatio(r)}` — series-sampling selection, whole series kept unchanged (issue #86) | +//! | `limitk(k, v)` / `limit_ratio(r, v)` | `PromqlSeriesSample{LimitK(k) \| LimitRatio(r)}` — series-sampling selection, whole series left unchanged (issue #86) | //! | `topk(k, count_over_time(…))` / `topk(k, sum_over_time(…))` | `Aggregate{[TopK{k}]}` (heavy-hitter intent) over the explicit inner `Aggregate{[Count/Sum]}` | //! | `topk(k, sum by (G) (count_over_time\|sum_over_time\|rate\|increase\|irate(…)))` | `Aggregate{[TopK{k}]}` over the explicit grouped `Aggregate{[Sum]}` and per-series aggregate | //! | `topk(k, )` / `bottomk(k, …)` | `Sort{value} → Limit{k}` | @@ -262,7 +262,7 @@ impl PromqlLowerer<'_> { child: Rc::new(filtered_source(metric, matchers, shift)), }) } - // Scalar-typed, dispatched above; kept for exhaustiveness. String + // Scalar-typed, dispatched above; retained for exhaustiveness. String // literals only appear as function args (`label_replace`, …), so a // bare one is rejected (issue #35). Expr::NumberLiteral(_) => unreachable!("scalar handled above"), @@ -1525,7 +1525,7 @@ fn absent_labels(v: &Expr) -> BTreeMap { /// Extract the `info` data-label selector's matchers. Unlike an ordinary /// selector these are **info-metric-side** and may carry regex / multiple /// `__name__` matchers (which pick the info metric(s)), so they bypass the -/// single-metric `vs_parts` restriction and are kept symbolic. +/// single-metric `vs_parts` restriction and are left symbolic. fn info_selector(expr: &Expr) -> Result> { match expr { Expr::VectorSelector(vs) => Ok(vs @@ -1693,8 +1693,8 @@ fn str_arg(call: &Call, idx: usize) -> Result { /// Resolve an aggregation's grouping modifier into a `(keys, without)` pair. /// -/// `by(labels)` → the kept labels, `without = false`. `without(labels)` → the -/// **excluded** labels, `without = true`: the kept set (the complement) can't be +/// `by(labels)` → the retained labels, `without = false`. `without(labels)` → the +/// **excluded** labels, `without = true`: the retained set (the complement) can't be /// enumerated under an open usage-derived schema, so it is deferred to the /// runtime and only the excluded positions are carried (issue #39). Both forms /// canonicalise their label set (sort + dedup) so equivalent groupings lower diff --git a/crates/frontend-promql/tests/observability/awesome_prometheus_alerts.rs b/crates/frontend-promql/tests/observability/awesome_prometheus_alerts.rs index 71bc59369..2b1c0968a 100644 --- a/crates/frontend-promql/tests/observability/awesome_prometheus_alerts.rs +++ b/crates/frontend-promql/tests/observability/awesome_prometheus_alerts.rs @@ -301,7 +301,7 @@ fn without_grouping_lowers_to_the_exclusion_form() { // `(min without (cpu) (rate(node_cpu_seconds_total{mode="idle"}[1h]))) > 0.8` // — `without(...)` groups by every label except the listed ones. The // complement isn't enumerated (open usage-derived schema); the excluded - // labels are stored and the kept set is runtime-resolved (issue #39). + // labels are stored and the retained set is runtime-resolved (issue #39). let qe = ok(r#"(min without (cpu) (rate(node_cpu_seconds_total{mode="idle"}[1h]))) > 0.8"#); // Top level is the `> 0.8` comparison; the `min without (cpu)` is its LHS. let NonASAPOp::Filter { child: lhs, .. } = qe.expect_non_asap() else { diff --git a/crates/frontend-promql/tests/promql_conformance.rs b/crates/frontend-promql/tests/promql_conformance.rs index e661ee984..23bdf1451 100644 --- a/crates/frontend-promql/tests/promql_conformance.rs +++ b/crates/frontend-promql/tests/promql_conformance.rs @@ -318,7 +318,7 @@ fn avg_min_max_stddev_stdvar_quantile_aggregators() { fn sum_without_groups_by_the_complement() { // SEMANTICS (issue #39): `without(instance)` = group by all labels EXCEPT // instance. The complement can't be enumerated under the open usage-derived - // schema, so the excluded label is stored and the kept set is deferred to + // schema, so the excluded label is stored and the retained set is deferred to // the runtime: the grouping is the exclusion form and the output schema // stays OPEN (unlike `by`, which freezes to closed). let qe = ok("sum without(instance) (node_filesystem_size_bytes)"); @@ -339,7 +339,7 @@ fn sum_without_groups_by_the_complement() { assert!(matches!(measures.as_slice(), [AggIntent::Sum { .. }])); assert!( !qe.schema.clone().closed, - "a `without` result keeps an open schema (kept label set is runtime-only)" + "a `without` result keeps an open schema (retained label set is runtime-only)" ); } @@ -1543,7 +1543,7 @@ fn absent_keeps_matcher_labels_for_the_synthesized_output() { let cols = qe.schema.clone(); assert!( cols.fields.iter().any(|c| c.name == "job"), - "matcher label `job` kept, got {:?}", + "matcher label `job` retained, got {:?}", cols.fields.iter().map(|c| &c.name).collect::>() ); } @@ -1773,7 +1773,7 @@ fn info_lowers_to_a_label_enrichment_join() { fn info_selector_carries_the_info_side_matchers() { // `info(v, {__name__=~".+_info", data=~".+"})` — the selector picks the info // metric(s) via `__name__` and constrains the data labels. Regex / `__name__` - // matchers are kept symbolically (not run through the single-metric selector + // matchers are left symbolically (not run through the single-metric selector // path). let qe = ok(r#"info(build_info, {__name__=~".+_info", another_data=~".+"})"#); let NonASAPOp::PromqlInfoEnrich { selector, .. } = qe.expect_non_asap() else { @@ -1782,7 +1782,7 @@ fn info_selector_carries_the_info_side_matchers() { assert_eq!( selector.len(), 2, - "both selector matchers kept: {selector:?}" + "both selector matchers retained: {selector:?}" ); assert!(selector .iter() @@ -1894,7 +1894,7 @@ fn count_values_label_colliding_with_a_group_key_is_not_duplicated() { #[test] fn limitk_and_limit_ratio_lower_to_series_sampling() { // `limitk`/`limit_ratio` are series-*sampling* selection — a subset of whole - // series kept unchanged (NOT a ranking), so they lower to the dedicated + // series left unchanged (NOT a ranking), so they lower to the dedicated // `PromqlSeriesSample` node, never `topk`'s `Sort → Limit` (issue #86). assert!(matches!( ok("limitk(2, http_requests)").expect_non_asap(), @@ -1987,7 +1987,7 @@ fn label_replace_is_a_relabel_over_the_vector() { assert_eq!(metric, "up"); // The value expression is a `label_replace` fn reading the `src` label. assert!(is_fn_named(value, "label_replace")); - // Output: the child's columns + the synthesized `host` label; value & ts kept. + // Output: the child's columns + the synthesized `host` label; value & ts retained. let sch = qe.schema.clone(); assert!(sch.fields.iter().any(|c| c.name == "host")); assert!(sch.fields.iter().any(|c| c.name == "value")); diff --git a/crates/frontend-promql/tests/scalar_design.rs b/crates/frontend-promql/tests/scalar_design.rs index 301e46c35..7ab67ed8d 100644 --- a/crates/frontend-promql/tests/scalar_design.rs +++ b/crates/frontend-promql/tests/scalar_design.rs @@ -107,7 +107,7 @@ fn pointwise_functions_are_typed_scalar_projections() { } /// Negation drops the metric name, like Prometheus and like `up * 2` and -/// `abs(up)`; the rest of the series identity and the time are kept. +/// `abs(up)`; the rest of the series identity and the time are retained. #[test] fn unary_minus_drops_the_metric_name() { let QueryRoot::Operator(node) = root("-up") else { diff --git a/crates/frontend-sql/src/sql/mod.rs b/crates/frontend-sql/src/sql/mod.rs index bf76881c0..f92f6e90c 100644 --- a/crates/frontend-sql/src/sql/mod.rs +++ b/crates/frontend-sql/src/sql/mod.rs @@ -1892,7 +1892,7 @@ fn scalar_positive_u64(value: &DfScalarValue) -> Option { /// no second deployment model wanting this shape, so this lowers to /// `AggIntent::Extension` rather than earning a first-class `ArgMax`/`ArgMin` /// core variant (issue #232). Core treats `Extension` opaquely: both columns -/// are kept only as validated bare-column names in `payload` (`reducer_col`'s +/// are retained only as validated bare-column names in `payload` (`reducer_col`'s /// same "no expression arguments" rule, issue #115) — they are **not** run /// through `resolve_agg_intent`'s positional `ColumnRef` -> `ColumnId` /// binding the way a real reducer's `col` is, since `Extension` carries no @@ -2393,7 +2393,7 @@ fn agg_col_name(args: &[Expr]) -> Option { /// variance/quantile/count-distinct). Errors if the argument is not a column: /// the canonical `AggIntent` reduces a column, not an arbitrary expression /// (`SUM(a*b)`), so silently picking a probe column would compute the wrong -/// result. The qualifier is kept so `SUM(b.x)` over a join reads `b.x`. +/// result. The qualifier is retained so `SUM(b.x)` over a join reads `b.x`. fn reducer_col(name: &str, args: &[Expr]) -> Result { fn col_ref(e: &Expr) -> Option { match e { diff --git a/crates/frontend-sql/tests/data_quality_check/data/tpch_deequ_queries.sql b/crates/frontend-sql/tests/data_quality_check/data/tpch_deequ_queries.sql index 8f2932b51..a19063942 100644 --- a/crates/frontend-sql/tests/data_quality_check/data/tpch_deequ_queries.sql +++ b/crates/frontend-sql/tests/data_quality_check/data/tpch_deequ_queries.sql @@ -9,7 +9,7 @@ -- Regenerate with, from the sidra repo: -- uv run python pyscripts/asap-planner_test/emit_sql_set.py workload/tpch_deequ.yaml -- --- ONE QUERY PER LINE, and the reader splits on newlines rather than on `;`: +-- ONE QUERY PER LINE, and the loader splits on newlines rather than on `;`: -- U-P3p's regex literal is '^[a-zA-Z ,.:;!?-]+$', which contains a semicolon, -- so a `;` split would fragment it. `fuse` emits single-line SQL, so the line -- is an exact statement boundary and no escaping is needed. diff --git a/crates/frontend-sql/tests/sql_lowering.rs b/crates/frontend-sql/tests/sql_lowering.rs index 18ae33b86..b3b1cf288 100644 --- a/crates/frontend-sql/tests/sql_lowering.rs +++ b/crates/frontend-sql/tests/sql_lowering.rs @@ -2156,7 +2156,7 @@ async fn arg_min_lowers_to_its_own_extension_kind() { #[tokio::test] async fn arg_max_payload_preserves_both_column_names() { - // Core never resolves an `Extension`'s payload, so both columns are kept + // Core never resolves an `Extension`'s payload, so both columns are retained // as validated column `ColumnRef`s (with their qualifier) in `payload`, // not run through positional `ColumnId` binding -- see // `lower_arg_selector`'s doc. @@ -3273,11 +3273,11 @@ async fn other_time_conditions_stay_scan_predicates() { .unwrap_or_else(|e| panic!("{sql}: {e}")); assert!(trailing_window(&qe).is_none(), "{sql}: {qe:#?}"); let scan = scan_of(&qe); - let NonASAPOp::Scan { predicates: kept, .. } = op(scan) else { + let NonASAPOp::Scan { predicates: remaining, .. } = op(scan) else { unreachable!() }; // The conditions stay together as one predicate on the `Scan`. - assert_eq!(kept.len(), 1, "{sql}: {scan:#?}"); + assert_eq!(remaining.len(), 1, "{sql}: {scan:#?}"); } } diff --git a/crates/integration-tests/tests/filtered_aggregates.rs b/crates/integration-tests/tests/filtered_aggregates.rs index 40c52db98..186cc552d 100644 --- a/crates/integration-tests/tests/filtered_aggregates.rs +++ b/crates/integration-tests/tests/filtered_aggregates.rs @@ -1,6 +1,6 @@ //! Filtered aggregates (`FILTER (WHERE …)`, a per-measure filter, or a //! filtered `SummaryAgg`) execute with SQL semantics: a row that fails the -//! filter contributes nothing, but its group is kept. +//! filter contributes nothing, but its group is retained. use std::rc::Rc; use std::sync::Arc; diff --git a/crates/integration-tests/tests/planner_layering_common/mod.rs b/crates/integration-tests/tests/planner_layering_common/mod.rs index 20681c7ac..207dfb614 100644 --- a/crates/integration-tests/tests/planner_layering_common/mod.rs +++ b/crates/integration-tests/tests/planner_layering_common/mod.rs @@ -41,7 +41,7 @@ pub fn needs_merge(form: WindowForm, query_window_ms: u64) -> bool { } /// `roots` with no node shared between queries: each query reads its own -/// copy of every node it reaches (sharing within one query is kept). Pass 1 +/// copy of every node it reaches (sharing within one query is retained). Pass 1 /// composes a candidate from memo groups, so queries that read an identical /// sub-DAG share its group's node; this is the fixtures' independent /// variant of such a candidate. @@ -441,7 +441,7 @@ pub fn window_form(dag: &impl ExportedDag, build: NodeId) -> WindowForm { } /// How far back from an evaluation a materialized node's materialized output -/// reaches in event time, derived the way plan selection prices what it +/// reaches in event time, derived the way plan selection costs what it /// keeps: a tumbling-window chain keeps its `N` /// tumbling windows of width `w`, plus the one being built when maintained at /// ingestion time; a whole-window build keeps its window, and the next one diff --git a/crates/integration-tests/tests/production_rollup_workloads.rs b/crates/integration-tests/tests/production_rollup_workloads.rs index 5cad992ea..894187ed4 100644 --- a/crates/integration-tests/tests/production_rollup_workloads.rs +++ b/crates/integration-tests/tests/production_rollup_workloads.rs @@ -182,7 +182,7 @@ async fn production_sql_distinct_region_service_rollup() { } // Exercise multi-input operators through the production route under more than -// three heterogeneous query schedules, not just the local pricing kernel. +// three heterogeneous query schedules, not just the local costing kernel. #[test] fn production_binary_queries_use_joint_prices_with_mixed_schedules() { use asap_types::workload::{DemandEstimate, Rate}; diff --git a/crates/integration-tests/tests/promql_to_post_asap.rs b/crates/integration-tests/tests/promql_to_post_asap.rs index 398ee91de..aff738ca9 100644 --- a/crates/integration-tests/tests/promql_to_post_asap.rs +++ b/crates/integration-tests/tests/promql_to_post_asap.rs @@ -269,7 +269,7 @@ fn execute_topk_reference(plan: &OperatorNode) -> Vec<(String, f64)> { panic!("expected summary updates") }; assert_eq!(reduction, &Reduction::by(vec![])); - // The fused raw input is the kept non-ASAP sub-DAG itself. + // The fused raw input is the retained non-ASAP sub-DAG itself. assert!(!child.contains_asap(), "expected fused raw input"); let Some(NonASAPOp::TimeRange { range, child, .. }) = child.non_asap() else { panic!("expected temporal input") @@ -491,10 +491,10 @@ fn promql_quantile_of_rate_binds_kll_over_rate_accumulator() { ); // The leaf: unrewritten pass-through — TimeRange marker over the Scan. - // The kept leaf is the non-ASAP sub-DAG itself. + // The retained leaf is the non-ASAP sub-DAG itself. assert!( !leaf.contains_asap(), - "expected kept leaf, got {:?}", + "expected remaining leaf, got {:?}", leaf.operator ); let Some(NonASAPOp::TimeRange { diff --git a/crates/integration-tests/tests/sql_to_post_asap.rs b/crates/integration-tests/tests/sql_to_post_asap.rs index 6f32bb9d7..3602a8d0d 100644 --- a/crates/integration-tests/tests/sql_to_post_asap.rs +++ b/crates/integration-tests/tests/sql_to_post_asap.rs @@ -106,7 +106,7 @@ fn unary_child(node: &OperatorNode) -> Option<&Rc> { } } -/// A sub-DAG kept as plain (non-ASAP) work: no ASAP operator anywhere below. +/// A sub-DAG retained as plain (non-ASAP) work: no ASAP operator anywhere below. fn is_kept_non_asap(node: &OperatorNode) -> bool { node.non_asap().is_some() && !node.contains_asap() } @@ -605,7 +605,7 @@ async fn sql_quantile_binds_kll_sketch_over_named_column() { assert!( is_kept_non_asap(child), - "expected a kept non-ASAP leaf, got {:?}", + "expected a remaining non-ASAP leaf, got {:?}", child.operator ); assert!(matches!(child.non_asap(), Some(NonASAPOp::Scan { .. }))); diff --git a/crates/metricsql-parser-vendored/src/functions/rollup.rs b/crates/metricsql-parser-vendored/src/functions/rollup.rs index 3b886a358..5ed2e8a91 100644 --- a/crates/metricsql-parser-vendored/src/functions/rollup.rs +++ b/crates/metricsql-parser-vendored/src/functions/rollup.rs @@ -455,7 +455,7 @@ pub const fn get_rollup_arg_idx_for_optimization( func: RollupFunction, arg_count: usize, ) -> Option { - // This must be kept in sync with GetRollupArgIdx() + // This must stay in sync with GetRollupArgIdx() use RollupFunction::*; match func { AbsentOverTime => None, diff --git a/crates/metricsql-parser-vendored/src/optimizer/push_down_filters.rs b/crates/metricsql-parser-vendored/src/optimizer/push_down_filters.rs index d939445e3..eab96fcdf 100644 --- a/crates/metricsql-parser-vendored/src/optimizer/push_down_filters.rs +++ b/crates/metricsql-parser-vendored/src/optimizer/push_down_filters.rs @@ -744,7 +744,7 @@ fn get_rollup_arg_idx_for_optimization( args: &[Expr], ) -> ParseResult> { use RollupFunction::*; - // This must be kept in sync with GetRollupArgIdx() + // This must stay in sync with GetRollupArgIdx() match func { CountValuesOverTime => Err(ParseError::ArgumentError( "BUG: count_values_over_time must be already handled".to_string(), diff --git a/crates/planner/src/installable.rs b/crates/planner/src/installable.rs index 359da15b6..79a77490f 100644 --- a/crates/planner/src/installable.rs +++ b/crates/planner/src/installable.rs @@ -77,7 +77,7 @@ pub struct InstallablePlan { #[serde(deny_unknown_fields)] pub struct SelectedPlanReport { /// Its cost per second; `None` under cost model 3, which has no - /// prices. + /// costs. pub cost_per_second: Option, /// The resources Stage 3 predicts it uses, for a runtime to report /// against what it measures. @@ -111,14 +111,14 @@ pub struct PredictedUsage { pub disk_bytes: u64, /// CPU cores to provision for the peak. pub peak_cpu_cores: u32, - /// One per operator node of the plan Stage 3 priced, in node order. + /// One per operator node of the plan Stage 3 costed, in node order. pub per_node: Vec, /// One per workload query, in workload order. pub per_query: Vec, } /// One operator node's predicted usage. The node is one of the physical -/// DAG Stage 3 priced, where a tumbling-window chain is one node; `dag` has +/// DAG Stage 3 costed, where a tumbling-window chain is one node; `dag` has /// it expanded into its tumbling windows, so `installed_node_ids` says which of /// `dag`'s nodes run it. #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] @@ -137,7 +137,7 @@ pub struct PredictedNodeUsage { pub timing: ExecutionTiming, /// Core-seconds of CPU per second. pub cpu_core_seconds_per_second: f64, - /// Its price per second under cost model 1; `None` under cost models + /// Its cost per second under cost model 1; `None` under cost models /// 2 and 3. pub cost_per_second: Option, /// Whether its CPU came from the measured cost table or the formulas. @@ -222,7 +222,7 @@ impl From for InstallablePlanError { /// Plan `input` for a deployment runtime: the query-language frontends and /// Stages 1-3 as [`e2e_plan`] runs them, returning the single selected DAG /// ready to install, and beside it Stage 3's report of the selection -/// (`None` for a pass that selects without pricing), which is not part of +/// (`None` for a pass that selects without costing), which is not part of /// the plan file. Supported summaries the caller leaves unrestricted /// (`DeploymentCapabilities::supported_summaries` `None`) default to the /// families the Planner's executor runs; raw-data and query-time-result @@ -903,7 +903,7 @@ mod tests { } /// Unrestricted summaries become the executor's families; a caller's - /// own list and its retention flags are kept. + /// own list and its retention flags are retained. #[test] fn unrestricted_summaries_default_to_the_executors_families() { let unrestricted = DeploymentCapabilities { diff --git a/crates/planner/src/pass.rs b/crates/planner/src/pass.rs index 3728308d3..c16402671 100644 --- a/crates/planner/src/pass.rs +++ b/crates/planner/src/pass.rs @@ -213,7 +213,7 @@ pub struct PlanOutput { /// One plan per distinct operator sub-DAG a scalar root reads, keyed by /// that scalar's entry, in `scalar_roots` order. pub scalar_plans: Vec, - /// How plan selection chose the plan, when the pass selects among priced + /// How plan selection chose the plan, when the pass selects among costed /// candidates. pub selection: Option, /// The selected plan as the realizer built it (its physical DAG, each diff --git a/crates/planner/tests/runtime_install.rs b/crates/planner/tests/runtime_install.rs index 69af0c94d..43e62e297 100644 --- a/crates/planner/tests/runtime_install.rs +++ b/crates/planner/tests/runtime_install.rs @@ -206,7 +206,7 @@ async fn plan_with_report_for( workload: PlanningWorkload, capabilities: &DeploymentCapabilities, ) -> (InstallablePlan, Option) { - // The deployment's Stage 3 prices, from its JSON file: cost model 1. + // The deployment's Stage 3 costs, from its JSON file: cost model 1. let settings: CostInputs = serde_json::from_str( r#"{"cost_model": {"usage_over_time": { "cost_per_cpu_op": 1e-6, "cost_per_scanned_byte": 1e-7, @@ -233,7 +233,7 @@ fn query_roots(plan: &InstallablePlan) -> Vec { /// The plan file carries Stage 3's predicted usage of the selected plan, so /// a runtime reports it against what it measures without planning again: -/// for Example 4b's tumbling windows maintained at ingestion time, its nodes' prices +/// for Example 4b's tumbling windows maintained at ingestion time, its nodes' costs /// add up to Stage 3's selection cost and their CPU to the plan's, with /// one latency per query, each node naming the installed nodes that run it. #[tokio::test] diff --git a/crates/stage1-pass1-per-computation-candidates/src/per_computation_candidates.rs b/crates/stage1-pass1-per-computation-candidates/src/per_computation_candidates.rs index 0f8a13c56..443693057 100644 --- a/crates/stage1-pass1-per-computation-candidates/src/per_computation_candidates.rs +++ b/crates/stage1-pass1-per-computation-candidates/src/per_computation_candidates.rs @@ -105,10 +105,10 @@ fn prune_own( candidates: &mut Vec, applies: impl Fn(&HowToComputeAggregateMeasure) -> bool, ) -> Vec { - let (pruned, kept): (Vec<_>, _) = std::mem::take(candidates) + let (pruned, remaining): (Vec<_>, _) = std::mem::take(candidates) .into_iter() .partition(|choice| *choice != HowToComputeAggregateMeasure::Exact && applies(choice)); - *candidates = kept; + *candidates = remaining; if pruned .iter() .any(|choice| matches!(choice, HowToComputeAggregateMeasure::ExactAccumulator(_))) diff --git a/crates/stage3-plan-selection/Cargo.toml b/crates/stage3-plan-selection/Cargo.toml index 22f140ef0..08afe694a 100644 --- a/crates/stage3-plan-selection/Cargo.toml +++ b/crates/stage3-plan-selection/Cargo.toml @@ -3,7 +3,7 @@ name = "asap-stage3-plan-selection" version = "0.1.0" edition = "2021" -# #509 Stage 3, plan selection: the only stage that prices plans, with the +# #509 Stage 3, plan selection: the only stage that costs plans, with the # planning models (accuracy from `asap-accuracy`; cost from `asap-cost`) # Reads only Stage 2's output (`asap_types::stages`) and calls Stage 2 through # the facade's `AssignmentRealizer`: no dependency on Stages 1 or 2, nor on diff --git a/crates/stage3-plan-selection/src/report.rs b/crates/stage3-plan-selection/src/report.rs index 2b7956a49..277a938a8 100644 --- a/crates/stage3-plan-selection/src/report.rs +++ b/crates/stage3-plan-selection/src/report.rs @@ -72,9 +72,9 @@ pub enum RejectionCause { /// Under cost model 3, its usage is over one of the cluster's limits. OverClusterCapacity, /// Its cost overflows the cost model's arithmetic, so it cannot be - /// priced. + /// costed. CostNotRepresentable, - /// Under cost models 1 and 2, its price is higher than the selected + /// Under cost models 1 and 2, its cost is higher than the selected /// candidate's. Costlier, /// Under cost model 3's `lowest-latency`, it is slower than the diff --git a/crates/stage3-plan-selection/tests/cost_inputs_json.rs b/crates/stage3-plan-selection/tests/cost_inputs_json.rs index cb890393d..072858350 100644 --- a/crates/stage3-plan-selection/tests/cost_inputs_json.rs +++ b/crates/stage3-plan-selection/tests/cost_inputs_json.rs @@ -4,7 +4,7 @@ use asap_cost::{ ClusterLimits, ClusterObjective, CostInputs, CostModel, ResourceSpeed, ResourceUnitCost, }; -/// Cost model 2 with the deployment's own prices and speed; the fields left +/// Cost model 2 with the deployment's own costs and speed; the fields left /// out keep their defaults. #[test] fn settings_load_from_json_with_defaults_for_omitted_fields() { diff --git a/crates/types/src/ir/flat.rs b/crates/types/src/ir/flat.rs index 731def21b..c315b936b 100644 --- a/crates/types/src/ir/flat.rs +++ b/crates/types/src/ir/flat.rs @@ -39,7 +39,7 @@ pub struct FlatDag { } /// Flatten the DAG reachable from `roots`. Each distinct `Rc` (by pointer) -/// becomes one node, so sharing is kept. Also returns the original node for +/// becomes one node, so sharing is retained. Also returns the original node for /// each id. pub fn flatten(roots: &[QueryRoot]) -> (FlatDag, Vec>) { let mut ids = HashMap::new(); diff --git a/crates/types/src/ir/materialized_view.rs b/crates/types/src/ir/materialized_view.rs index 80068336b..131b49eab 100644 --- a/crates/types/src/ir/materialized_view.rs +++ b/crates/types/src/ir/materialized_view.rs @@ -54,7 +54,7 @@ //! tumbling-window chain and a DDSketch tumbling-window chain of equal tumbling-window width reads each //! tumbling window's raw data once. Stage 3's cost assumes this grouping; a runtime //! that splits a group computes the same states at a higher cost than -//! priced. +//! costed. //! //! Each view's `coverage` says what its stored state is: a stable id of its //! definition (what it computes) and its selection (which rows went in, @@ -630,7 +630,7 @@ impl PhysicalASAPDAG { /// DAG a chain materialized across evaluations is its expanded tumbling windows, so its /// scan keeps the reach of all of them: reusing a tumbling window refreshed at an /// earlier evaluation is optional, and a restart or an older range step - /// refreshes older tumbling windows from raw data. (Stage 3 prices a materialized chain on + /// refreshes older tumbling windows from raw data. (Stage 3 costs a materialized chain on /// the unexpanded DAG as reading its newest tumbling window.) pub fn set_retention( &mut self, @@ -879,7 +879,7 @@ fn reach_ms_of( /// The nodes of a DAG by id, each node's inputs in edge order, and two /// facts every raw-data window check reads, computed in one pass each over /// the DAG (O(nodes + edges)). `scan_window` counts the windows of a `Scan` -/// for pricing; this walks down from each window to check its shape. +/// for costing; this walks down from each window to check its shape. struct ViewIndex<'a> { dag: &'a PhysicalASAPDAG, nodes: HashMap, diff --git a/crates/types/src/ir/operator/asap.rs b/crates/types/src/ir/operator/asap.rs index c2d6fd930..5448bd6b3 100644 --- a/crates/types/src/ir/operator/asap.rs +++ b/crates/types/src/ir/operator/asap.rs @@ -63,7 +63,7 @@ pub enum ASAPOp> { /// Merge only the newest `n` tumbling windows of the one `SummaryTumblingWindowChain` this /// merge reads, `1 ≤ n <` its `tumbling_window_count`: the state of one build /// over the newest `n · tumbling_window_width_ms` of the chain's window, so a - /// query over a shorter window reads a chain kept for a longer one. + /// query over a shorter window reads a chain retained for a longer one. /// `None` merges every input state. #[serde( default, diff --git a/crates/types/src/ir/operator/non_asap.rs b/crates/types/src/ir/operator/non_asap.rs index f98240fc2..42d48368d 100644 --- a/crates/types/src/ir/operator/non_asap.rs +++ b/crates/types/src/ir/operator/non_asap.rs @@ -484,7 +484,7 @@ impl NonASAPOp { /// Whether two structurally equal copies of this node may be one shared /// node: every execution over the same input rows returns the same /// output rows, so one copy over their one input can be computed (or - /// stored) once and read by both readers. + /// stored) once and read by both consumers. /// /// Ties are the one place the input order decides: a `Sort` keeps tied /// rows in input order (a stable sort), and an exact top-k ranks with that @@ -1637,10 +1637,17 @@ mod tests { }; let s = agg.output_schema().unwrap(); let names: Vec<_> = s.fields.iter().map(|c| c.name.as_str()).collect(); - assert_eq!(names, vec!["job", "sum"], "kept `job`, dropped `instance`"); + assert_eq!( + names, + vec!["job", "sum"], + "retained `job`, dropped `instance`" + ); assert!(!s.closed, "a `without` result stays open"); assert!(s.time_index.is_none()); - assert!(s.unique_keys.is_empty(), "kept set unknown → no unique key"); + assert!( + s.unique_keys.is_empty(), + "retained set unknown → no unique key" + ); } #[test] @@ -1665,7 +1672,7 @@ mod tests { } /// `rate` and `*_over_time` are per-series: every label survives and only - /// the sample value is replaced (kept named `value`). + /// the sample value is replaced (retained named `value`). #[test] fn per_series_reductions_preserve_labels() { for measure in [AggIntent::Rate, AggIntent::Avg { col: None }] { @@ -1867,7 +1874,7 @@ mod tests { } /// ` op ` takes the vector side's schema; the vector - /// match modifier is kept on the operator. + /// match modifier is retained on the operator. #[test] fn binary_op_schema_follows_the_vector_side_over_a_scalar_bridge() { let vector = node(scan( diff --git a/crates/types/src/ir/operator/operator_properties.rs b/crates/types/src/ir/operator/operator_properties.rs index a6c052e62..bb18eb40d 100644 --- a/crates/types/src/ir/operator/operator_properties.rs +++ b/crates/types/src/ir/operator/operator_properties.rs @@ -32,11 +32,11 @@ impl ColState for ColumnRef {} /// /// ## `by` vs `without` (issue #39) /// -/// The stored [`keys`](Self::keys) are **kept** labels for `by(...)` and +/// The stored [`keys`](Self::keys) are **retained** labels for `by(...)` and /// **excluded** labels for `without(...)`. PromQL's `without(labels)` groups by /// every label *except* those listed; the complement can't be enumerated at /// lowering time under an open (usage-derived) schema, so it is deferred to the -/// runtime — the excluded positions are stored, the kept set stays open. Only +/// runtime — the excluded positions are stored, the retained set stays open. Only /// `Aggregate` ever produces the `without` form; `Sort` / `SQLWindowFunc` / /// `PromqlSeriesSample` groupings are always `by`. /// @@ -74,7 +74,7 @@ impl GroupKeys { } } /// `without(keys)` — group by every label *except* these (issue #39). The - /// kept set is runtime-resolved; only the excluded positions are stored. + /// retained set is runtime-resolved; only the excluded positions are stored. pub fn without(keys: Vec) -> Self { Self { keys, @@ -85,7 +85,7 @@ impl GroupKeys { pub fn is_without(&self) -> bool { self.without } - /// The named keys — kept labels for `by`, excluded labels for `without`. + /// The named keys — retained labels for `by`, excluded labels for `without`. pub fn keys(&self) -> &[C] { &self.keys } @@ -481,7 +481,7 @@ impl Reduction { impl Reduction { /// Shorthand for the common case — group by these (possibly empty) - /// keys, kept rather than excluded. + /// keys, retained rather than excluded. pub fn by(keys: Vec) -> Self { Self::Reduce(GroupKeys::by(keys)) } diff --git a/crates/types/src/ir/operator/tumbling_window_chain.rs b/crates/types/src/ir/operator/tumbling_window_chain.rs index cc5451b93..6919417fa 100644 --- a/crates/types/src/ir/operator/tumbling_window_chain.rs +++ b/crates/types/src/ir/operator/tumbling_window_chain.rs @@ -267,8 +267,8 @@ fn named_as_chain( return Err(invalid("expected a summary build")); }; let mut schema = summary_agg_schema(child.schema(), family, reduction)?; - for (field, kept) in schema.fields.iter_mut().zip(&chain.fields) { - field.name = kept.name.clone(); + for (field, remaining) in schema.fields.iter_mut().zip(&chain.fields) { + field.name = remaining.name.clone(); } Ok((build, schema)) } diff --git a/crates/types/src/ir/properties/accuracy.rs b/crates/types/src/ir/properties/accuracy.rs index 1e704bc61..e36a79bd2 100644 --- a/crates/types/src/ir/properties/accuracy.rs +++ b/crates/types/src/ir/properties/accuracy.rs @@ -451,11 +451,11 @@ fn column_metric(node: &OperatorNode, column: usize) -> Option { } /// The measure the aggregate `node`'s output `column` holds, or `None` for -/// a group key, a kept label or `count_values`' synthesized label, as +/// a group key, a retained label or `count_values`' synthesized label, as /// [`aggregate_output_schema`](crate::ir::schema::aggregate_schema::aggregate_output_schema) /// lays the columns out. A per-entity reduction replaces its one measure's /// input column in place and keeps every other column; a cross-series one -/// emits its kept labels first, then one column per measure, with a +/// emits its retained labels first, then one column per measure, with a /// `count_values` label (unless an earlier column has its name) before its /// count. fn aggregate_measure_at<'a>( diff --git a/crates/types/src/ir/properties/guarantee.rs b/crates/types/src/ir/properties/guarantee.rs index ead2871e1..877de62d7 100644 --- a/crates/types/src/ir/properties/guarantee.rs +++ b/crates/types/src/ir/properties/guarantee.rs @@ -16,7 +16,7 @@ //! //! [`AccuracyGuarantee`] is attached to a finalized, caller-visible value — //! [`crate::ir::OperatorNode::guarantee`] on a `SummaryEstimate` evaluation, an -//! exact accumulator, or a kept pre-ASAP sub-DAG — never to raw summary +//! exact accumulator, or a retained pre-ASAP sub-DAG — never to raw summary //! state (a `SummaryAgg` sketch node carries `None`; its evaluation carries the //! guarantee). Its statement is: //! @@ -320,7 +320,7 @@ pub enum CompositionOperator { } /// One entry in a [`AccuracyGuarantee`]'s provenance trail — enough for a -/// reader to reconstruct *why* the bound is what it is without re-running +/// consumer to reconstruct *why* the bound is what it is without re-running /// the planner. `#[non_exhaustive]` so runtime evidence (issue #239) and /// deployment-specific sources can be appended later. #[non_exhaustive] diff --git a/crates/types/src/ir/properties/summary_coverage.rs b/crates/types/src/ir/properties/summary_coverage.rs index 892ca68f4..aa4ffe639 100644 --- a/crates/types/src/ir/properties/summary_coverage.rs +++ b/crates/types/src/ir/properties/summary_coverage.rs @@ -380,7 +380,7 @@ impl SummaryCoverage { } /// For a `Filter` that keeps whole states of a grouped `SummaryAgg` by -/// their key columns, the build that computes exactly the kept states: the +/// their key columns, the build that computes exactly the retained states: the /// same build over its input rows filtered by the same predicate on the /// input columns those keys name. `None` for any other operator. fn selected_build<'m>( @@ -652,13 +652,13 @@ fn of_summary_agg(build: &ASAPOp>) -> Result>>> = chain + let remaining: Vec>>> = chain .iter() .enumerate() .map(|(depth, link)| match link { @@ -678,13 +678,13 @@ fn of_summary_agg(build: &ASAPOp>) -> Result { let lifted_above = lifted.clone(); - let kept = predicates + let remaining = predicates .iter() .filter_map(|pred| residual(pred, &top, &chain, &mut lifted)) .collect(); (lifted != lifted_above).then_some(NonASAPOp::Scan { source, - predicates: kept, + predicates: remaining, schema, }) } @@ -703,7 +703,7 @@ fn of_summary_agg(build: &ASAPOp>) -> Result { - if let Some(rest) = kept[depth].clone() { + if let Some(rest) = remaining[depth].clone() { unlifted_operators.push(Operator::NonASAP(NonASAPOp::Filter { pred: rest, child: None, @@ -816,7 +816,7 @@ fn group_id(input: &GroupInput<'_>) -> Option { } } -/// `link`, a liftable operator kept whole in a definition: its main input +/// `link`, a liftable operator retained whole in a definition: its main input /// `None`, every other input the group it is. fn unlifted(link: &Operator>) -> Operator> { let mut operator = link.map_children(group_id); @@ -1043,13 +1043,13 @@ impl Constraint { (In(a), NotIn(b)) | (NotIn(b), In(a)) => In(filter_values(a, b, false)?), (NotIn(a), NotIn(b)) => NotIn(dedup(a.iter().chain(b).cloned().collect())), (In(a), Interval { lower, upper }) | (Interval { lower, upper }, In(a)) => { - let mut kept = Vec::new(); + let mut remaining = Vec::new(); for v in a { if inside(v, (lower, upper), compare)? { - kept.push(v.clone()); + remaining.push(v.clone()); } } - In(kept) + In(remaining) } ( Interval { diff --git a/crates/types/src/ir/schema/aggregate_schema.rs b/crates/types/src/ir/schema/aggregate_schema.rs index 32b2a98ca..434a1cbb5 100644 --- a/crates/types/src/ir/schema/aggregate_schema.rs +++ b/crates/types/src/ir/schema/aggregate_schema.rs @@ -13,7 +13,7 @@ use crate::ir::SchemaDerivationError; /// Output schema of a *per-series* window/range reduction (`rate`/`increase`, /// or an `*_over_time` reducer under a time `Window`). Such a reduction emits /// one value per series, so every label column of `input` is preserved and only -/// the sample value is replaced — kept named `value` so the PromQL sample-value +/// the sample value is replaced — retained named `value` so the PromQL sample-value /// convention (and any outer `SampleValue` reference) still resolves it by name. fn per_series_reduction_schema( input: &Schema, @@ -83,11 +83,11 @@ pub fn aggregate_output_schema( Reduction::Reduce(by) => by, }; - // `without(excluded)` groups by every label *except* those listed: the kept + // `without(excluded)` groups by every label *except* those listed: the retained // labels are the input's label columns minus the excluded positions (and the // ts / sample-value columns), and the schema stays **open** because the full // runtime label set isn't known. The `by(...)` path instead enumerates its - // kept columns and freezes to closed (issue #39). + // retained columns and freezes to closed (issue #39). if by.is_without() { return without_output_schema(in_schema, by.keys(), measures, output_names); } @@ -190,10 +190,10 @@ pub fn aggregate_output_schema( }) } -/// Output schema of a `without(excluded)` aggregate: the kept labels (every +/// Output schema of a `without(excluded)` aggregate: the retained labels (every /// input label column except the `excluded` positions, the time axis, and the /// sample-value column) followed by the aggregate output column(s). Unlike the -/// `by` path this stays **open** — the excluded set is enumerable but the kept +/// `by` path this stays **open** — the excluded set is enumerable but the retained /// set is not (the runtime carries labels the usage-derived schema never saw), /// so the schema can't freeze to closed and claims no unique key (issue #39). fn without_output_schema( @@ -254,7 +254,7 @@ fn without_output_schema( fields: out_cols, time_index: None, unique_keys: Vec::new(), - // The kept label set is runtime-only, so — unlike `by` — this does not + // The retained label set is runtime-only, so — unlike `by` — this does not // freeze the open schema to closed. closed: false, }) @@ -364,7 +364,7 @@ mod tests { assert_eq!(out.unique_keys, vec![vec![0]]); } - // A nested aggregate's renamed sample value is not a kept label: + // A nested aggregate's renamed sample value is not a retained label: // `sum without (inst) (sum by (inst, job) (m))` over `[inst, job, sum]`. #[test] fn without_aggregate_drops_a_renamed_sample_value() { diff --git a/crates/types/src/ir/schema/sketch.rs b/crates/types/src/ir/schema/sketch.rs index 0288713ec..aa44775c2 100644 --- a/crates/types/src/ir/schema/sketch.rs +++ b/crates/types/src/ir/schema/sketch.rs @@ -7,7 +7,7 @@ use crate::ir::scalar::ColumnRef; /// Bytes the executor holds per group for an exact accumulator of any /// [`ExactKind`]: one element of its column of fixed-size states (the /// executor's `ScalarState`, whose largest variant, a counter's, is 48 -/// bytes). Plan selection prices exact state with it; an executor test +/// bytes). Plan selection costs exact state with it; an executor test /// asserts it equals that state's size. pub const EXACT_ACCUMULATOR_STATE_BYTES: u64 = 56; @@ -34,7 +34,7 @@ pub enum ExactKind { /// Parameters for an [`ExactKind`] accumulator. All exact accumulators have /// fixed semantics — no tuning parameters — so each variant carries none; -/// kept as a per-kind enum (mirroring [`SketchParams`]) so a mismatched +/// retained as a per-kind enum (mirroring [`SketchParams`]) so a mismatched /// `(kind, params)` pair is still a type error, not a runtime check. #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub enum ExactParams { @@ -449,7 +449,7 @@ pub enum HydraKind { /// set general enough to cover every inner sketch type. #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub enum HydraParams { - /// See [`HydraKind::HydraKll`]: kept for legality, **no accuracy bound + /// See [`HydraKind::HydraKll`]: retained for legality, **no accuracy bound /// is modeled for this variant**. `k`/`shared_buckets` give a bound /// sketch a concrete size to build against; unlike `HydraCms`/ /// `HydraCountSketch`'s fields, they are not backed by the paper's diff --git a/crates/types/src/stages/candidates.rs b/crates/types/src/stages/candidates.rs index a8118738c..7e72b845a 100644 --- a/crates/types/src/stages/candidates.rs +++ b/crates/types/src/stages/candidates.rs @@ -148,7 +148,7 @@ impl Memo { index_in_group, }); } - let input_groups: Vec = candidate + let input_group_ids: Vec = candidate .expression .operator .children() @@ -157,11 +157,11 @@ impl Memo { .collect(); candidates.push(candidate); let index_in_group = candidates.len() - 1; - for &input in &input_groups { + for &input in &input_group_ids { add_parent(&mut self.groups[input.0 as usize], group); } let queries = self.groups[group.0 as usize].queries.clone(); - self.add_queries_below(input_groups, &queries); + self.add_queries_below(input_group_ids, &queries); Ok(CandidateForMemoGroupId { group, index_in_group, @@ -354,7 +354,7 @@ pub struct CandidateForMemoGroup { /// Reuse across appearances is Pass 2's, not fusion (concepts doc §3, /// "Fused groups"). pub fused_groups: Vec, - /// Which rule added it. Not in the formulation: kept for + /// Which rule added it. Not in the formulation: retained for /// `stage_pipeline --text` and the viewer (approved 2026-11-05). pub origin: OriginOfCandidateForMemoGroup, } diff --git a/crates/types/src/stages/memo.rs b/crates/types/src/stages/memo.rs index 294be5284..29affa03b 100644 --- a/crates/types/src/stages/memo.rs +++ b/crates/types/src/stages/memo.rs @@ -26,12 +26,12 @@ pub struct MemoGroup { /// changes. pub group_properties: GroupProperties, /// The groups that read it ([`Self::parent_groups`]) through their - /// expression or a candidate's: kept up to date by + /// expression or a candidate's: updated by /// [`Memo::find_or_add_group`](super::Memo::find_or_add_group) and /// [`Memo::add_candidate`](super::Memo::add_candidate). pub parents: Vec, /// The queries whose roots reach it ([`Self::reached_by_queries`]), - /// ascending: kept up to date by + /// ascending: updated by /// [`Memo::add_query`](super::Memo::add_query) and /// [`Memo::add_candidate`](super::Memo::add_candidate). pub queries: Vec, diff --git a/crates/types/src/stages/physical/memo_candidates.rs b/crates/types/src/stages/physical/memo_candidates.rs index 4dd3a5da3..c86bd070d 100644 --- a/crates/types/src/stages/physical/memo_candidates.rs +++ b/crates/types/src/stages/physical/memo_candidates.rs @@ -2,7 +2,7 @@ //! $\mathcal C$, one per valid $p^{\mathrm{phys}} = (\tau, \ell)$, and //! the physical edges $\mathcal E$ with $\alpha^{\log}$ and //! $\alpha^{\mathrm{phys}}$ (#1200, #1201). Stage 3 selects among them; -//! Stage 2 prices nothing. +//! Stage 2 costs nothing. use std::collections::HashMap; diff --git a/crates/types/src/test_support.rs b/crates/types/src/test_support.rs index 40ba9a74a..d6e721949 100644 --- a/crates/types/src/test_support.rs +++ b/crates/types/src/test_support.rs @@ -90,7 +90,7 @@ pub fn physical_asap_dag_at_query_time( } /// The maintained-population sub-DAG for executor tests: `root` (below its -/// projections, which are kept) replaced by `EvaluatePopulation(statistic)` +/// projections, which are retained) replaced by `EvaluatePopulation(statistic)` /// over a current-series population of the single selector under it, /// grouped by `grouping`, with no matchers. The caller states the statistic /// and grouping; nothing is recognized. No planner pass offers this sub-DAG diff --git a/crates/types/src/workload/bounds.rs b/crates/types/src/workload/bounds.rs index 380a6ee16..f24cd84a7 100644 --- a/crates/types/src/workload/bounds.rs +++ b/crates/types/src/workload/bounds.rs @@ -510,7 +510,7 @@ pub fn unchanged_source_columns<'a>( .map(|(name, _)| name) .collect() }; - let kept = || -> BTreeSet<&'a str> { + let remaining = || -> BTreeSet<&'a str> { first().map_or_else(BTreeSet::new, |(unchanged, _)| { output_names() .filter(|name| unchanged.contains(name)) @@ -525,7 +525,7 @@ pub fn unchanged_source_columns<'a>( | NonASAPOp::Limit { .. } | NonASAPOp::Dedup { .. } | NonASAPOp::TimeRange { .. } - | NonASAPOp::TimeShift { .. } => kept(), + | NonASAPOp::TimeShift { .. } => remaining(), NonASAPOp::Project { cols, .. } => { passed_on(&mut cols.iter().map(|col| match col.expr { ScalarExpr::Column(input) => Some(input), @@ -555,7 +555,7 @@ pub fn unchanged_source_columns<'a>( let Some((_, schema)) = first() else { return BTreeSet::new(); }; - let mut columns = kept(); + let mut columns = remaining(); for measure in measures { for input in measure.input_cols() { if let Some(field) = schema.fields.get(input) { @@ -573,7 +573,7 @@ pub fn unchanged_source_columns<'a>( .. } | NonASAPOp::Concat { .. } => { - let mut columns = kept(); + let mut columns = remaining(); for (_, unchanged) in producers { columns.retain(|name| unchanged.contains(name)); } @@ -587,13 +587,13 @@ pub fn unchanged_source_columns<'a>( | ASAPOp::SummaryMerge { .. } | ASAPOp::SummaryEstimate { .. } | ASAPOp::FinalizeExactAccumulator { .. }, - ) => kept(), + ) => remaining(), _ => BTreeSet::new(), } } /// The groups (or partitions) a `by (keys)` over rows of schema `input` -/// from `sources` is priced at, from declared or derivable facts only: the +/// from `sources` is costed at, from declared or derivable facts only: the /// smallest of /// - when the keys read one source and are all in /// `unchanged_input_columns` (one source row's labels, unchanged), the diff --git a/crates/types/src/workload/mod.rs b/crates/types/src/workload/mod.rs index e6752ee84..b9daa0363 100644 --- a/crates/types/src/workload/mod.rs +++ b/crates/types/src/workload/mod.rs @@ -288,7 +288,7 @@ pub struct RangeEvaluation { impl RangeEvaluation { /// Steps one request evaluates, `span_ms / step_ms + 1`: 61 for a 1 h - /// span at 1 min steps. Stage 3 prices each step as one evaluation. + /// span at 1 min steps. Stage 3 costs each step as one evaluation. pub fn evaluations_per_request(&self) -> u64 { self.span_ms / self.step_ms.max(1) + 1 } @@ -400,12 +400,12 @@ pub struct QueryWorkloadEntry { /// How far ahead it is known: a build may run at ingestion time only for /// `Predictable` queries (default: unknown). pub predictability: Predictability, - /// How often it runs: sets how often each node is priced, and only + /// How often it runs: sets how often each node is costed, and only /// repeated queries may keep state from ingestion time (default: unknown). pub recurrence: QueryRecurrence, /// How each run is answered as a range request, one evaluation per /// step; `None` (the default) for one evaluation per run. Stage 1 and - /// Stage 2 keep tumbling-window widths on its step grid, and Stage 3 prices + /// Stage 2 keep tumbling-window widths on its step grid, and Stage 3 costs /// [`RangeEvaluation::evaluations_per_request`] evaluations per run. #[serde(default, skip_serializing_if = "Option::is_none")] pub range_evaluation: Option, @@ -463,7 +463,7 @@ pub enum DataArrival { /// Rows keep arriving while the queries run. Ingesting { /// Rows (PromQL samples) arriving per second over all sources. - /// Plan selection prices a source's scans with its share of it, by + /// Plan selection costs a source's scans with its share of it, by /// series count when every source declares one, else with all of /// it, when the source does not declare both its `series_count` and /// its `sample_interval` ([`SourceFacts`]). @@ -532,7 +532,7 @@ pub struct DataWorkload { /// ([`Self::series_facts`]). Counts, norms and bounds (`series_count`, /// `stream_norms`, …) differ per series name (a `foo_bucket` has one /// series per `le`), so they are read from the series' own entry; - /// pricing a source's own arrival rate reads its `series_count` and + /// costing a source's own arrival rate reads its `series_count` and /// `sample_interval` there together. A source without an entry has no /// known facts. #[serde(default)] @@ -546,9 +546,9 @@ pub struct DataWorkload { pub struct SourceFacts { /// How many series (PromQL) or groups of rows (SQL) the source holds /// (default: unknown). Plan selection bounds the values a query returns - /// (`G`) by it, to split a whole-result failure probability, and prices + /// (`G`) by it, to split a whole-result failure probability, and costs /// scans and selectors with it (with `sample_interval`, the source's - /// arrival rate). Unknown, pricing bounds a per-series count by the rows + /// arrival rate). Unknown, costing bounds a per-series count by the rows /// read instead. Must be positive. #[serde(default)] pub series_count: Option, @@ -572,7 +572,7 @@ pub struct SourceFacts { /// selector without it fails with /// [`WorkloadError::MissingSampleInterval`]. With `series_count`, it /// gives the source's own arrival rate, `series_count` samples per - /// `sample_interval`, which plan selection prices the source's scans + /// `sample_interval`, which plan selection costs the source's scans /// and time ranges at. #[serde(default)] pub sample_interval: Option, @@ -596,11 +596,11 @@ pub struct SourceFacts { pub max_distinct_per_evaluation: Option, /// How many distinct values each label (PromQL) or column (SQL) of the /// source takes, keyed by its name (default: none declared), e.g. - /// `{"host": 1000, "job": 10}`. Plan selection prices the groups of a + /// `{"host": 1000, "job": 10}`. Plan selection costs the groups of a /// `by (k1, k2, ...)` at the product of its keys' counts, at most the /// `series_count` (series or groups of rows) of the sources it reads /// and the rows it reads per evaluation. No count is assumed for an - /// undeclared key: such a grouping is priced at the smaller of those + /// undeclared key: such a grouping is costed at the smaller of those /// two. When every key of a /// grouped result declares a count, their product (at most the series /// read) also bounds the values one evaluation returns (`G`), which a @@ -613,7 +613,7 @@ pub struct SourceFacts { /// together, for labels that depend on each other (default: none /// declared), e.g. `[{"labels": ["service", "endpoint"], /// "distinct_values": 625}]` when each of 625 endpoints is in one of 25 - /// services. Plan selection prices a grouping at the smallest product + /// services. Plan selection costs a grouping at the smallest product /// of declared counts whose labels cover its keys /// (`SourceFacts::declared_distinct_combinations`), so /// `by (service, endpoint)` is 625 groups rather than 25 x 625, and diff --git a/docs/design_docs/architecture/asap-aware-mapping.md b/docs/design_docs/architecture/asap-aware-mapping.md index 6ee996b77..978c9f54d 100644 --- a/docs/design_docs/architecture/asap-aware-mapping.md +++ b/docs/design_docs/architecture/asap-aware-mapping.md @@ -4,7 +4,7 @@ > search (strategies, `CandidateLogicalASAPDAGs` as a Rust type, cost-model > ranking and `global_selection`), which has been removed. The planner now > plans through the stages of the [planning stages design](../proposals/planner-layering.md). The -> document is kept as a record of the design. +> document is retained as a record of the design. ## Overview diff --git a/docs/design_docs/architecture/asap-aware-plan-search.md b/docs/design_docs/architecture/asap-aware-plan-search.md index b00ea1d23..459f1d2d3 100644 --- a/docs/design_docs/architecture/asap-aware-plan-search.md +++ b/docs/design_docs/architecture/asap-aware-plan-search.md @@ -4,7 +4,7 @@ > search (strategies, `CandidateLogicalASAPDAGs` as a Rust type, cost-model > ranking and `global_selection`), which has been removed. The planner now > plans through the stages of the [planning stages design](../proposals/planner-layering.md). The -> document is kept as a record of the design. +> document is retained as a record of the design. ASAP-aware mapping should consider all alternatives holistically rather than optimize prematurely. diff --git a/docs/design_docs/architecture/evidence-dependent-candidates.md b/docs/design_docs/architecture/evidence-dependent-candidates.md index 98823f488..f80760b7a 100644 --- a/docs/design_docs/architecture/evidence-dependent-candidates.md +++ b/docs/design_docs/architecture/evidence-dependent-candidates.md @@ -4,7 +4,7 @@ > search (strategies, `CandidateLogicalASAPDAGs` as a Rust type, cost-model > ranking and `global_selection`), which has been removed. The planner now > plans through the stages of the [planning stages design](../proposals/planner-layering.md). The -> document is kept as a record of the design. A ratio of two DDSketch +> document is retained as a record of the design. A ratio of two DDSketch > quantiles no longer depends on domain evidence: Stage 1 composes its > relative bound in closed form (see > [accuracy models](../concepts/accuracy-models.md)). @@ -24,7 +24,7 @@ target)` returns `true`. **Uncertified** means Planner cannot make that claim: the guarantee is absent, contains unknown terms, or is known not to meet the target. An uncertified summary may still be a well-formed logical candidate; this label says nothing about whether the backend can physically execute it. -The exact path (the pre-ASAP sub-DAG kept by `retain_exact`) has an exact guarantee. +The exact path (the pre-ASAP sub-DAG retained by `retain_exact`) has an exact guarantee. | State | Planner representation | Consequence / next step | |---|---|---| diff --git a/docs/design_docs/architecture/input-output-workflow.md b/docs/design_docs/architecture/input-output-workflow.md index a3fc422c1..a2aa1be79 100644 --- a/docs/design_docs/architecture/input-output-workflow.md +++ b/docs/design_docs/architecture/input-output-workflow.md @@ -28,7 +28,7 @@ and [frontend dependencies](#frontend-specific-dependencies). | Output | Fields or contents | Meaning | |---|---|---| -| `PlanOutput` | `plans`: one `QueryPlan { entry_index, root }` per query; `selection`: Stage 3's `Selection` (`selected_dag`, `nodes_with_proven_non_negative_weights`, `cost`, `accepted_accuracy_per_query`, `pruned_candidates`, `search_report`), set by the default pass `Stage1ToStage3Pass`; `tumbling_window_retention_ms`: how long each kept tumbling-window chain keeps its tumbling windows; standalone scalar queries in `scalar_roots` and `scalar_plans` | The selected plan; `physical_asap_dag()` exports it as one `PhysicalASAPDAG` | +| `PlanOutput` | `plans`: one `QueryPlan { entry_index, root }` per query; `selection`: Stage 3's `Selection` (`selected_dag`, `nodes_with_proven_non_negative_weights`, `cost`, `accepted_accuracy_per_query`, `pruned_candidates`, `search_report`), set by the default pass `Stage1ToStage3Pass`; `tumbling_window_retention_ms`: how long each retained tumbling-window chain keeps its tumbling windows; standalone scalar queries in `scalar_roots` and `scalar_plans` | The selected plan; `physical_asap_dag()` exports it as one `PhysicalASAPDAG` | | `PlanningRun` (from `asap_planner::run_planning`) | Every stage's output: Pass 1's per-computation candidates, the selected round's Pass 2 and Stage 2 outputs (with Stage 2's pruned candidates), the selection, the selected plan, the memo after each step and a report per tumbling-window-width round | For callers that inspect or display the alternatives | The selected plan is a planning artifact. ASAPPlanner does **not** deploy @@ -60,7 +60,7 @@ flowchart TD F["Stage 0: PromQL lowering → one OperatorNode root"] S1["Stage 1: exact accumulator or plain exact; tumbling windows"] S2["Stage 2: each summary build at query time or maintained at ingestion time"] - S3["Stage 3: check and price every physical candidate; select one"] + S3["Stage 3: check and cost every physical candidate; select one"] B["Backend: compile, deploy and execute the selected plan"] Q --> F D --> F @@ -213,20 +213,20 @@ struct LabelSetDistinctValues { | Field | Required | Purpose and behavior when unavailable | |---|---:|---| | `arrival` | Present; may be `Unknown` | Distinguishes data at rest, ingesting data, and mixed data. Ingestion-time builds are possible only for ingesting or mixed data. | -| `rows_per_second` | With `Ingesting`/`Mixed` | Rows arriving per second over all sources, used to price scans and continuous maintenance. It must be finite and non-negative. A source with no `series_count` + `sample_interval` of its own is priced at its series share of it when every source declares `series_count`, else at all of it. | +| `rows_per_second` | With `Ingesting`/`Mixed` | Rows arriving per second over all sources, used to cost scans and continuous maintenance. It must be finite and non-negative. A source with no `series_count` + `sample_interval` of its own is costed at its series share of it when every source declares `series_count`, else at all of it. | | `series_count` | Optional | Series in the source. Plan selection bounds a query's number of values `G`, and its input row count, by the series counts of the sources it reads (each branch of an `or` counted); unknown, they stay unbound. | | `metric_type` | Optional | Declared Prometheus type (`PrometheusMetricType`): `counter`, `gauge`, `histogram`, `native_histogram` or `summary`; a counter proves samples non-negative. Never inferred from a name. A `histogram` or `summary` is keyed by its family name `foo` and supplies its series (`DataWorkload::series_facts`): `foo_bucket` (histogram) or `foo` (summary, per-series quantiles read as values), and the counters `foo_sum` and `foo_count`; any other name is looked up as is. The family entry's `metric_type`, `values_non_negative` and `sample_interval` apply to its series; counts, norms and bounds are read per series name. `histogram_quantile` reads float input as classic buckets, declared `histogram` or undeclared, and rejects a `native_histogram` or `summary`; any query reading a `native_histogram` is rejected. `rate`, `increase` or `irate` over a metric declared a gauge, and `sum`, `avg`, `quantile`, `stddev` or `stdvar` across a summary's quantile series, still plan, with a warning from the PromQL frontend (`metric_type_warnings`), which `asap_planner` reports. | | `values_non_negative` | Optional; default `false` | Declares every sample non-negative, for a gauge as well as a counter. It is the sign a relative-error bound needs to carry through `sum` and `avg` (a per-series DDSketch quantile under `avg by`, say); without it, and for a gauge, that bound is unknown. | | `sample_interval` | PromQL and MetricsQL; nonzero | How often each series of the metric is sampled. Bare instant selectors over it use it as their selection horizon; without it, such a query fails to lower. | | `stream_norms`, `max_distinct_per_evaluation` | Optional | Bounds that Count-Min/Count Sketch and HLL/UnivMon guarantees are bound with. | -| `distinct_values_per_label` | Optional; default empty; each count nonzero | Distinct values each label (PromQL) or column (SQL) takes, e.g. `{"host": 1000, "job": 10}`. Plan selection prices a `by (k1, k2, ...)` aggregate or summary, and a partitioned sort or limit, at the product of its keys' counts, at most the `series_count` (series, or groups of rows) of the sources it reads and the rows it reads per evaluation. Over several sources a key's counts add. No count is assumed for a key some source read does not declare: the grouping is priced at the smaller of that `series_count` and those rows. Each count must be an upper bound, counting a missing label (or a NULL) as one more value: when every key of a grouped result declares one, their product (at most the series read) also bounds `G`, which sizes per-group sketches for a whole-result target; otherwise `G` keeps its series bound, or none for SQL. | +| `distinct_values_per_label` | Optional; default empty; each count nonzero | Distinct values each label (PromQL) or column (SQL) takes, e.g. `{"host": 1000, "job": 10}`. Plan selection costs a `by (k1, k2, ...)` aggregate or summary, and a partitioned sort or limit, at the product of its keys' counts, at most the `series_count` (series, or groups of rows) of the sources it reads and the rows it reads per evaluation. Over several sources a key's counts add. No count is assumed for a key some source read does not declare: the grouping is costed at the smaller of that `series_count` and those rows. Each count must be an upper bound, counting a missing label (or a NULL) as one more value: when every key of a grouped result declares one, their product (at most the series read) also bounds `G`, which sizes per-group sketches for a whole-result target; otherwise `G` keeps its series bound, or none for SQL. | | `distinct_values_per_label_set` | Optional; default empty; each set two or more distinct labels, its count nonzero and at most the product of its labels' declared counts | Distinct combinations a set of labels (or columns) takes together, for labels that depend on each other, e.g. `[{"labels": ["service", "endpoint"], "distinct_values": 625}]` when each of 625 endpoints is in one of 25 services. For a grouping over one source whose keys are one row's unchanged labels, the per-label product above becomes the smallest product of declared set and label counts whose labels cover the keys: `by (service, endpoint)` is 625 groups, not 25 x 625, and `by (region, service, endpoint)` at most 4 x 625. A set covering more labels than the keys also bounds them. Nothing is inferred from the per-label counts (no functional dependency is assumed). Over several sources, or for keys a join or binary operator pairs from different rows, only the per-label counts apply; a key a relabeling rewrites is not bounded by any declared set. The same bound gives `G` for a whole-result target. A count above its labels' product is an input error naming the source. | | `rows_held` | Optional; nonzero | Rows the source holds at rest. A query-time scan reads at most these; a scan with no window above it (a SQL query without a time predicate) reads all of them. | Every fact is declared: the planner has no clock, so a caller drops facts that no longer hold before planning. Unavailable data facts stay unknown. Planner does not reinterpret them as zero ingestion, zero cardinality, or a favorable distribution, and -pricing assumes no default: a scan whose source declares neither an arrival +costing assumes no default: a scan whose source declares neither an arrival rate (`rows_per_second`, or `series_count` with `sample_interval`) nor `rows_held` (required when it has no window) fails planning with an error naming the source and the missing fact. @@ -258,8 +258,8 @@ latter cannot be fabricated by one. | Accuracy model | `PlanningModels` (`AccuracyModel`; `BuiltinAccuracyModel` by default) | Composes candidate guarantees and checks them against requested accuracy. The model does not itself provide missing data-domain facts. | | Accuracy/domain evidence | `PlanningModels` (`AccuracyEvidenceProvider`; `NoAccuracyEvidence` by default) | Input ranges, nonempty populations and similar facts can certify or rule out particular approximations. Missing facts remain unknown. | | Cost model | `CostInputs.cost_model` (cost model 1 by default) | Turns each valid candidate's resource usage into a choice. The illustrative unit costs are not a measured deployment cost. | -| Measured cost evidence | `CostInputs.measured_operation_costs` | Measured CPU time per unit of each operator kind, at ingestion or query time, replaces the formulas for the nodes it prices (a sketch interpolated between measured sizes); the other nodes' formulas are scaled by one calibration factor fitted from the measured ones. | -| Runtime capabilities | `DeploymentCapabilities` (`supported_summaries`, `raw_data_retained`, `query_time_results_retained`) | Prevents choosing a summary, raw-data scan or kept state the intended executor cannot provide. | +| Measured cost evidence | `CostInputs.measured_operation_costs` | Measured CPU time per unit of each operator kind, at ingestion or query time, replaces the formulas for the nodes it costs (a sketch interpolated between measured sizes); the other nodes' formulas are scaled by one calibration factor fitted from the measured ones. | +| Runtime capabilities | `DeploymentCapabilities` (`supported_summaries`, `raw_data_retained`, `query_time_results_retained`) | Prevents choosing a summary, raw-data scan or materialized state the intended executor cannot provide. | For example, the query `quantile_over_time(0.9, data[5m]) / quantile_over_time(0.5, data[5m])` does not tell Planner whether the windows diff --git a/docs/design_docs/architecture/physical-plan-integration.md b/docs/design_docs/architecture/physical-plan-integration.md index 4d42aaab9..a064edea1 100644 --- a/docs/design_docs/architecture/physical-plan-integration.md +++ b/docs/design_docs/architecture/physical-plan-integration.md @@ -24,8 +24,8 @@ become one physical node, and a physical operator is not merely a renamed logical variant. Current state: no code lowers a whole candidate to a `PhysicalOperator` DAG. -The recursive lowering and the physical-DAG estimator that priced its output -were deleted with no remaining reader. Stage 3 prices each node of a physical +The recursive lowering and the physical-DAG estimator that costed its output +were deleted with no remaining caller. Stage 3 costs each node of a physical candidate with `estimate_operator` (`asap-cost`, `analytical.rs`) over the `OperatorStatistics` it derives for that node. The lowering obligations and comparison rules below are the contract a whole-DAG lowering must meet. @@ -98,7 +98,7 @@ its modeled descendants is invalid because it undercounts the candidate. ### Pre-ASAP lowering Every `NonASAPOp` node lowers recursively, whether it is in a raw query or -kept exact inside a post-ASAP plan. Typical physical +retained exact inside a post-ASAP plan. Typical physical operators include scans, filters, projections, hash aggregates, joins, ordering, bounded Top-K, limits, and PromQL-specific operators. The selected physical algorithm, rather than the logical spelling, determines the formula. @@ -442,7 +442,7 @@ Version 6 (current) exports one node per operator: retained exact operators are Post-ASAP DAG wire version 7 adds a per-measure row predicate to the aggregate operators (#466): `filters` on the exact aggregate value operation, parallel to its measures, and `filter` on `SummaryAgg`, gating which rows update the -summary state. The version bump makes an older reader fail loudly instead of +summary state. The version bump makes an older parser fail loudly instead of taking a filtered aggregate as unfiltered. No planner rule sets `SummaryAgg.filter` yet; a filtered pre-ASAP measure is retained as an exact fallback. The native physical planner rejects either field when set. diff --git a/docs/design_docs/architecture/updated_interface_with_pluggable_optimization.md b/docs/design_docs/architecture/updated_interface_with_pluggable_optimization.md index 6573da6bb..60b876fd4 100644 --- a/docs/design_docs/architecture/updated_interface_with_pluggable_optimization.md +++ b/docs/design_docs/architecture/updated_interface_with_pluggable_optimization.md @@ -91,7 +91,7 @@ pub struct PlanOutput { pub scalar_roots: Vec<(usize, ScalarExpr)>, // standalone scalar entries pub scalar_plans: Vec, // the operator sub-DAGs they read pub selection: Option, // how plan selection chose, if the pass selects - pub tumbling_window_retention_ms: BTreeMap, // kept tumbling-window chains' retention + pub tumbling_window_retention_ms: BTreeMap, // materialized tumbling-window chains' retention } pub struct QueryPlan { @@ -127,7 +127,7 @@ tracked in #580. | Prepare roots | Entries in `entries()` order, the accuracy target from each entry's `requirements`; PromQL operator roots carry the series identity (`with_promql_series_identity`) where it has a realization | | Stage 1: logical ASAP-aware optimization | `pass1_memo` (Pass 1), then `generate_logical_asap_memo_candidates` (Pass 2) over every tumbling-window width | | Stage 2: physical ASAP-aware optimization | `generate_physical_asap_memo_candidates` | -| Stage 3: plan selection | `select_plan`: check accuracy and latency, price under the cost model, select one plan; the facade builds it with Stage 2's `AssignmentRealizer::realize` | +| Stage 3: plan selection | `select_plan`: check accuracy and latency, cost under the cost model, select one plan; the facade builds it with Stage 2's `AssignmentRealizer::realize` | `run_planning` runs these steps over the query-language frontends' roots (Stage 0) and returns `PlanningRun`: Pass 1's candidates, the Pass 2 and diff --git a/docs/design_docs/concepts/accuracy-models.md b/docs/design_docs/concepts/accuracy-models.md index 60aaa2d15..f76d289c6 100644 --- a/docs/design_docs/concepts/accuracy-models.md +++ b/docs/design_docs/concepts/accuracy-models.md @@ -79,8 +79,8 @@ membership needs its own evidence under every scope. Pass 1 sizes each approximate input of a candidate with `n` accuracy-budget parts for `δ / (n · V)`, so the union bound gives δ over the covered values. A candidate several queries reach is sized for the smallest `δ / (n · V)` -among them, and a build Pass 2 shares among several readers takes the -strictest reader's size. Stage 3 only checks the composed guarantee; it never +among them, and a build Pass 2 shares among several consumers takes the +strictest consumer's size. Stage 3 only checks the composed guarantee; it never resizes. At equal δ and `n`, the scope covering the most values is the strictest: every group (`G`, when `G` is above 100), then a 1% share (100), then a 5% share (20), then a single value (1). A whole-result target with an unbound `G` @@ -189,11 +189,11 @@ empirical calibration is different from an arbitrary benchmark's maximum observed error; both its confidence and applicability must remain explicit. Default sizing is `asap_accuracy::sizing::default_size_params`, which dispatches to the -estimator modules; a summary shared by several readers is sized with each +estimator modules; a summary shared by several consumers is sized with each parameter's largest value among them. Where an error bound grows as the failure probability shrinks (a KLL's `k`, a distinct-count UnivMon's heap), each -reader's parameter is first resized to the readers' smallest failure -probability at no larger error, so the shared summary meets every reader at +consumer's parameter is first resized to the consumers' smallest failure +probability at no larger error, so the shared summary meets every consumer at the one failure probability it states. Accuracy validation is independent of sizing: Stage 3 checks the guarantee derived from the committed parameters. The design boundary is that sizing never grants accuracy authority to the @@ -360,7 +360,7 @@ rule or a different estimator configuration would be needed in those cases. When the consumers' failure targets differ, the summary-capability rule offers such a configuration. A shared summary states one accuracy bound at one failure probability, so it is sized at the smallest one. Each consumer's parameters are -resized to it at no larger error, and the largest is kept. Suppose A asks +resized to it at no larger error, and the largest is retained. Suppose A asks for 1% rank error at a 1% failure probability (`k = 269` alone) and B for 5% at 0.01% (`k = 79` alone). At 0.01% the Gaussian scale is 1.51, so A's `k = 269` would give 1.5% rank error there, which misses A's target. A's diff --git a/docs/design_docs/concepts/planner-pipeline.md b/docs/design_docs/concepts/planner-pipeline.md index 939048f1d..c3dcbf3fb 100644 --- a/docs/design_docs/concepts/planner-pipeline.md +++ b/docs/design_docs/concepts/planner-pipeline.md @@ -16,7 +16,7 @@ stage. Logical ASAP candidates (Post-ASAP IR, untimed) | Stage 2: physical ASAP-aware optimization | materialization: not materialized, at ingestion time, - | or at query time (shared, or kept across evaluations) + | or at query time (shared, or materialized across evaluations) v Physical ASAP candidates (timed) | Stage 3: plan selection diff --git a/docs/design_docs/concepts/post-asap-ir.md b/docs/design_docs/concepts/post-asap-ir.md index 6caa8b0a8..1659923ee 100644 --- a/docs/design_docs/concepts/post-asap-ir.md +++ b/docs/design_docs/concepts/post-asap-ir.md @@ -114,7 +114,7 @@ Materialization ([#509 §Materialization](../proposals/planner-layering.md#mater decides, for each sub-DAG, whether its output is materialized, and if so with which [`PhysicalProperties`](../../../crates/types/src/physical/properties.rs): a timing and a `Lifetime` (#1200). The lifetime is `None` (discarded after its -reader), `OneEvaluation(medium)` (materialized until every reader of one evaluation +consumer), `OneEvaluation(medium)` (materialized until every consumer of one evaluation finishes) or `AcrossEvaluations(medium)` (materialized for later evaluations), with `StorageMedium::Memory` or `StorageMedium::Disk`; an ingestion-time output cannot be materialized for `OneEvaluation`. A diff --git a/docs/design_docs/decisions/cse-cost-model.md b/docs/design_docs/decisions/cse-cost-model.md index 45d757f58..66d7d2e69 100644 --- a/docs/design_docs/decisions/cse-cost-model.md +++ b/docs/design_docs/decisions/cse-cost-model.md @@ -4,7 +4,7 @@ > search (strategies, `CandidateLogicalASAPDAGs` as a Rust type, cost-model > ranking and `global_selection`), which has been removed. The planner now > plans through the stages of the [planning stages design](../proposals/planner-layering.md). The -> document is kept as a record of the design. +> document is retained as a record of the design. > Status: accepted decision for the implementation described here. @@ -50,7 +50,7 @@ cost comparison, not a fixed "always share when legal" rule. Why cost-based and not pure System R: a shared summary here is not a free win the way sharing a relational scan is in a textbook OLTP optimizer — it is a sketch/accumulator that (per this crate's stated purpose: *workload*-level -planning, not single-query) is typically kept **continuously updated** as new +planning, not single-query) is typically **continuously updated** as new data arrives, for as long as the workload runs, regardless of how often it's actually read. A structurally-shareable sub-DAG that is cheap to recompute on demand, or rarely queried, can cost more to keep alive as a standing shared diff --git a/docs/design_docs/physical-planning-and-deployment.md b/docs/design_docs/physical-planning-and-deployment.md index d0da2d084..1dce27cd7 100644 --- a/docs/design_docs/physical-planning-and-deployment.md +++ b/docs/design_docs/physical-planning-and-deployment.md @@ -30,7 +30,7 @@ associated with the logical DAG, not a separate computation IR. > **Status:** Stage 2 (physical ASAP-aware optimization) decides, per summary > build, whether it is not materialized, materialized at ingestion time, or -> materialized at query time (shared within one evaluation, or kept across +> materialized at query time (shared within one evaluation, or materialized across > evaluations), and Stage 3 selects among the results. Sections 2 and 3 > describe the intended contract, which is wider than what Stage 2 offers > today. @@ -55,7 +55,7 @@ decided by a `PhysicalPropertiesAssignment`, as the layer contract below states. all of its inputs run at ingestion time; readouts, other consumers, and the other states run at query time. The default assignment materializes nothing; `PlanOutput::physical_asap_dag` applies it only to nodes the optimization pass left untimed (a pass's own timing, such - as Stage 3's ingestion-time tumbling windows, is kept). + as Stage 3's ingestion-time tumbling windows, is retained). 3. **Physical compile** (executor) reads the plan's materialized views: each view's refresh is one compiled DAG (the precompute DAG) and the query run another, joined by the views. It does not see raw ingestion, tumbling windows, @@ -156,7 +156,7 @@ claim that the entire deployment integration is implemented. The data source identifies where samples come from. Filters, grouping and the window determine which samples enter each summary. Here `tumbling_window_duration: 1m` means each stored tumbling window covers one minute; the query range is five minutes. -Neither duration specifies how often maintenance runs or how long state is kept. +Neither duration specifies how often maintenance runs or how long state is retained. The example evolves through the architecture as follows: @@ -402,7 +402,7 @@ else: inputs are read only at `Scan`s and at materialized views. Every `Scan` leaf is a raw data slot, which the deployment's store reads at run time (§4). A compile check (the one `plan_installable` runs) therefore compiles the -plan without a reader. That check compiles each materialized view's refresh +plan without a source cursor. That check compiles each materialized view's refresh as well as the query run. A plan the executor cannot refresh a view of fails the check, whether the view is refreshed at ingestion or on first read, so `plan_installable` refuses it rather than returning it to install. SQL `now()` is the @@ -421,7 +421,7 @@ This section defines the interface between the Planner's output, the executor, and a deployment runtime. > **Status:** implemented on `main`. Known limit: Stage 3 costs raw data by -> each scan's window lookback. It does not add the readers' range-evaluation +> each scan's window lookback. It does not add the consumers' range-evaluation > span. The plan file's raw retention does. ### Layers and ownership @@ -446,12 +446,12 @@ impl InstallablePlan { /// Reads `wire_version` before the rest, so an older file is refused by version. pub fn from_json(text: &str) -> Result; /// Every materialized view, in dependency order: its node, refresh mode - /// (at ingestion, or on first read and kept), coverage, inputs and retention. + /// (at ingestion, or on first read and retained), coverage, inputs and retention. pub fn materialized_views(&self) -> Result, InstallablePlanError>; /// The views refreshed at ingestion, by refresh group (one refresh window /// each), each group after the groups it reads. pub fn ingestion_refresh_groups(&self) -> Result, InstallablePlanError>; - /// Per raw-data `Source` read at query time: how far back raw data must be kept. + /// Per raw-data `Source` read at query time: how far back raw data must be retained. pub fn raw_data_retention(&self) -> Result, InstallablePlanError>; } pub struct RawDataRetention { @@ -471,7 +471,7 @@ pub struct RefreshWindow { These derivations are methods on `PhysicalASAPDAG` in `asap-types`, so a runtime needs no dependency on the planner crate. -A **materialized view** is a node whose output is kept across evaluations +A **materialized view** is a node whose output is materialized across evaluations (lifetime `AcrossEvaluations`, at ingestion or at query time). A node materialized for `OneEvaluation` is not a view: its output is discarded after one evaluation. Everything a runtime needs that the DAG determines is derived from the DAG, so the plan file has no @@ -482,15 +482,15 @@ the plan, not inside it. - **Materialized view:** how long the view's output must stay available after it is built. -- **Query-time `Scan`:** how far back raw data must be kept. This is the +- **Query-time `Scan`:** how far back raw data must be retained. This is the scan's window lookback (`end_offset + width`, from `scan_window`) plus the longest range-evaluation span of the queries reading it. It is never less than the retention of a view refreshed on first read from that scan. `raw_data_retention()` is the per-source maximum over these scans. Example: for -`max_over_time(m[5m])` evaluated over the last hour, raw `m` is kept 65 +`max_over_time(m[5m])` evaluated over the last hour, raw `m` is retained 65 minutes, because refreshing the tumbling window for the oldest step reads that far back. -A tumbling-window chain kept across evaluations counts as all its tumbling windows. Reusing a tumbling window is +A tumbling-window chain materialized across evaluations counts as all its tumbling windows. Reusing a tumbling window is optional for a runtime, and a restart or an older step rebuilds older tumbling windows from raw data. @@ -502,7 +502,7 @@ time, together with that position's schema, which is the DAG node's | Slot | Where | Holds | Read by | | --- | --- | --- | --- | -| **Raw data slot** | every `Scan` leaf | the `Scan`'s `Source`, schema, compiled predicates, and window (the union of its readers' windows, `scan_window`) | `Source` | +| **Raw data slot** | every `Scan` leaf | the `Scan`'s `Source`, schema, compiled predicates, and window (the union of its consumers' windows, `scan_window`) | `Source` | | **Materialized view slot** | each view the DAG reads | the `MaterializedView`, its schema, and the window its state summarizes (`view_window`: the union of the windows of every `TimeRange` below it) | `MaterializedView` | ```rust @@ -510,7 +510,7 @@ pub fn compile(dag: &PhysicalASAPDAG, views: &[MaterializedView], roots: &[NodeI -> Result; ``` -`compile` opens no readers. The DAG that refreshes a view has the view as a +`compile` opens no source cursors. The DAG that refreshes a view has the view as a root; a DAG that reads it has the view in `views`. A runtime compiles each DAG once, at install time. `CompiledPhysicalDAG` is derived inside the executor and is not persisted: the plan file is the only handoff. @@ -568,7 +568,7 @@ A deployment passes one store handle per run. The handle presents one consistent state to every read of that run: a refresh that publishes or replaces a state during the run is seen by the next run. How the store keeps that snapshot is the deployment's choice. `instantiate` constructs the -runnable DAG without lowering again and opens no reader; a missing source or +runnable DAG without lowering again and opens no source cursor; a missing source or view, or a batch in another schema, fails the read. Each run executes with independent per-run state, and its `RunContext` carries the run's scope: an ingestion window, or a query evaluation time `T`. @@ -581,7 +581,7 @@ ingestion window, or a query evaluation time `T`. - `TimeRange` is a native operator for both sources: - a range window `TimeRange(w)` over shifts summing to `s` keeps rows with time in `(T - s - w, T - s]`; - an instant window keeps each series' latest row in its lookback, and a series whose latest sample is a Prometheus stale marker has no row; - - an ordinary `NaN` sample is kept. + - an ordinary `NaN` sample is retained. - In an ingestion run over `(window_start, window_end]`, each `TimeRange(w)` keeps `(window_end - w, window_end]`. A windowed raw data slot asks for `(window_start, window_end]`, and a materialized view slot for `(window_end - w, window_end]`. A view refreshed at ingestion whose raw windows, or the windows of the views it reads, end at different offsets cannot be built in one run, so installation refuses it. - A store never implements PromQL or SQL semantics. The compile check compiles these operators, so a plan whose window the executor cannot run is rejected before it is installed. @@ -593,7 +593,7 @@ run's interval equal to each one's window, exactly when they have the same (`0 ≤ p < W`), relative to the evaluation time. A view whose `view_window` is `(T - o - W, T - o]` has the refresh window `(W, o mod W)`. All tumbling windows of a tumbling-window chain have their newest tumbling window's refresh window. The source, the summary -family and where the state is kept do not enter. A view with an unbounded +family and where the state is retained do not enter. A view with an unbounded window is a group of its own. A **refresh group** is the set of views refreshed at ingestion that have one @@ -624,9 +624,9 @@ Stage 3's cost assumes this grouping (`asap_cost::execution_demand::computations a stateless ingestion-time node is charged once per refresh window of the views above it, not once per view. A runtime that splits a group (for example, because its sources seal at different times) computes the same -states at a higher cost than priced, the same status tumbling window reuse has. A +states at a higher cost than costed, the same status tumbling window reuse has. A runtime that updates states sample by sample passes each sample once -whatever the windows, so it runs cheaper than priced. +whatever the windows, so it runs cheaper than costed. ### Running example diff --git a/docs/design_docs/proposals/asap-aware-mapping/analytical-resource-cost.md b/docs/design_docs/proposals/asap-aware-mapping/analytical-resource-cost.md index 06969a5bb..b6a26f031 100644 --- a/docs/design_docs/proposals/asap-aware-mapping/analytical-resource-cost.md +++ b/docs/design_docs/proposals/asap-aware-mapping/analytical-resource-cost.md @@ -9,7 +9,7 @@ > stage read it: physical query lowering (`query_physical_lowering`), > `EvidenceBackedPhysicalDAG`, `estimate_physical_dag` and its comparison and > cache variants, `ComparisonScope`, `CacheProfile`, and the storage and -> handoff estimators. Stage 3 prices each node with `estimate_operator` over +> handoff estimators. Stage 3 costs each node with `estimate_operator` over > the `OperatorStatistics` it derives for that node. The sections on those > deleted parts record the design, not current code. > Unsupported operators, arrival modes and missing evidence remain unavailable; @@ -94,7 +94,7 @@ ResourceEstimate { ### Terms used by this document The following terms are part of the model, rather than assumptions that a -reader must recover from the implementation: +person must recover from the implementation: | Term | Definition | |---|---| @@ -183,12 +183,12 @@ simultaneously live memory found by the DAG schedule. Transient state from sequential evaluations can be reused, while state declared as retained remains live across later reads. -Average memory, which cost model 1 prices per byte per second, does follow -executions: retained state counts for every second it is kept, and transient +Average memory, which cost model 1 costs per byte per second, does follow +executions: retained state counts for every second it is retained, and transient state counts for the time it is held. State recomputed for each consumer counts its bytes times each reading query's latency times that query's evaluations per second; state built once per evaluation and shared counts its -bytes times its longest reader's latency, once per evaluation. Memory a query +bytes times its longest consumer's latency, once per evaluation. Memory a query holds only while it runs is therefore charged, in proportion to how long and how often it runs. @@ -736,7 +736,7 @@ input. ## Summary operator formulas Stage 2 materialization (#509) decides whether a summary is built at ingestion -or at query time, and Stage 3 prices that choice. The formulas below give +or at query time, and Stage 3 costs that choice. The formulas below give per-operation work and state size. ### Ranking complete physical implementations diff --git a/docs/design_docs/proposals/asap-aware-mapping/ddsketch-quantile-ratios.md b/docs/design_docs/proposals/asap-aware-mapping/ddsketch-quantile-ratios.md index 9e0a93e69..57efb4c90 100644 --- a/docs/design_docs/proposals/asap-aware-mapping/ddsketch-quantile-ratios.md +++ b/docs/design_docs/proposals/asap-aware-mapping/ddsketch-quantile-ratios.md @@ -3,7 +3,7 @@ > **Status: historical.** The DDSketch ratio candidate and its > `quantile_input_domain` evidence belonged to the legacy replacement search, > which has been removed; Pass 1 does not offer a ratio candidate. The -> document is kept as a record of the bound and its preconditions. Stage 1 +> document is retained as a record of the bound and its preconditions. Stage 1 > now composes a ratio of two relative errors with the same bound, > `(a + b)/(1 − b)`, without operand domains, and splits a relative target > as `1 − (1 + ε)^{−1/n}` per input rather than `ε/(2 + ε)`. It relies on each diff --git a/docs/design_docs/proposals/asap-aware-mapping/maintained-populations.md b/docs/design_docs/proposals/asap-aware-mapping/maintained-populations.md index ffb87c859..9655078f1 100644 --- a/docs/design_docs/proposals/asap-aware-mapping/maintained-populations.md +++ b/docs/design_docs/proposals/asap-aware-mapping/maintained-populations.md @@ -10,7 +10,7 @@ A **population** is the multiset of records that an aggregation is defined over, after applying its source selection, predicates, membership semantics and grouping. -A **maintained population** is that multiset represented by state which is kept +A **maintained population** is that multiset represented by state which is retained across evaluations and updated when members enter, change, leave or expire. A **readout** computes a result from the maintained state at an admitted evaluation. diff --git a/docs/design_docs/proposals/asap-aware-mapping/summary-properties.md b/docs/design_docs/proposals/asap-aware-mapping/summary-properties.md index 08e27de74..8c4b273d2 100644 --- a/docs/design_docs/proposals/asap-aware-mapping/summary-properties.md +++ b/docs/design_docs/proposals/asap-aware-mapping/summary-properties.md @@ -144,4 +144,4 @@ registered same-metric additive, relative, and Lipschitz rules and exact sum/max/min over approximate inputs. It uses union-bound probabilities without assuming independence, preserves unknown statistics as unknown, and rejects unsupported composition instead of treating the child as exact. -Plan selection prices only candidates that satisfy the accuracy requirement. +Plan selection costs only candidates that satisfy the accuracy requirement. diff --git a/docs/design_docs/proposals/asap-primitive-schema.md b/docs/design_docs/proposals/asap-primitive-schema.md index 27a289d23..df7794601 100644 --- a/docs/design_docs/proposals/asap-primitive-schema.md +++ b/docs/design_docs/proposals/asap-primitive-schema.md @@ -329,7 +329,7 @@ The `definition` is what remains of the operators the walk passed, with every co | On the walk | In `unlifted_operators` | |---|---| | a `Filter` whose conditions all move into `selection` | removed | -| a `Filter` with some conditions that stay | kept, with only the conditions that stay; a scalar subquery among them names its group | +| a `Filter` with some conditions that stay | retained, with only the conditions that stay; a scalar subquery among them names its group | | `SummaryAgg.filter` | trimmed the same way | | the one range `TimeRange`, and any `TimeShift`s, when they become relative time | removed | | a `TimeShift` with no range `TimeRange`, or two or more range `TimeRange`s | unchanged: no time is taken out | @@ -550,7 +550,7 @@ coverage() of the SummaryAgg | Question | Answer | |---|---| -| What comes out? | the group columns (`job`), then one field `state` whose type is the summary type, here `Sketch(KLL k=200)`. Each `job` appears once. With `PerEntity` (one state per series), the input columns are kept and `state` replaces the value column | +| What comes out? | the group columns (`job`), then one field `state` whose type is the summary type, here `Sketch(KLL k=200)`. Each `job` appears once. With `PerEntity` (one state per series), the input columns are retained and `state` replaces the value column | | When is it rejected? | the summary type is a plain value type; the input is already state; the input or item column (`latency`) is not in the child's schema; `filter` is not a boolean | | What is its coverage? | always present. Both `Filter` conditions are simple, so they move into `selection`, and the `definition` is the `SummaryAgg` over the bare `Scan t`. A condition like `latency * 2 > 10` would stay in the `definition` (§4.2.2) | | State or value? | state. This is where values become state, so the result has no error bound yet | @@ -715,7 +715,7 @@ With an exact target, the planner can keep all latencies per job in one maintain - **Implemented.** All children must be state with exactly one state field and identical schemas. - **Coverage.** It also requires equal `definition`s and selections that do not overlap, and computes the merged coverage. -- **Newest tumbling windows:** an optional `newest_tumbling_windows: n` merges only the newest `n` tumbling windows of the one `SummaryTumblingWindowChain` the merge reads (`1 ≤ n <` its tumbling-window count). Its coverage is one build over the time range those tumbling windows cover, so one chain kept for the longest window serves every query whose window, on the same tumbling windows, ends at the same time and is shorter. +- **Newest tumbling windows:** an optional `newest_tumbling_windows: n` merges only the newest `n` tumbling windows of the one `SummaryTumblingWindowChain` the merge reads (`1 ≤ n <` its tumbling-window count). Its coverage is one build over the time range those tumbling windows cover, so one chain retained for the longest window serves every query whose window, on the same tumbling windows, ends at the same time and is shorter. - **Rollup:** an optional `group_by` field, so one operator does both merge and rollup. It lists the input's group columns the output is keyed by; `None` keeps the input's groups. A rollup merges every input state, so it does not take `newest_tumbling_windows`; it reads a merge of the newest tumbling windows instead: ```rust @@ -1235,9 +1235,9 @@ pub enum SketchParams { DDSketch { alpha: f64 }, /// Count-Min `width` × `depth`, plus a heap of the `heap_size` heaviest items. CmsWithHeap { width: u32, depth: u32, heap_size: u32 }, - /// `k`: number of smallest hash values kept. + /// `k`: number of smallest hash values retained. Kmv { k: u32 }, - /// `k`: number of hash values kept (nominal entries). + /// `k`: number of hash values retained (nominal entries). Theta { k: u32 }, /// `width`: counters per row. `depth`: number of hash rows. CountSketch { width: u32, depth: u32 }, @@ -1270,9 +1270,9 @@ pub enum HydraParams { /// `None` for all others. pub fn hydra_kind_for(a: &SketchAlgorithm) -> Option; -/// `size`: number of rows kept in the reservoir. +/// `size`: number of rows retained in the reservoir. pub enum SamplingKind { Reservoir } pub enum SamplingParams { Reservoir { size: u32 } } -/// `coefficients`: number of wavelet coefficients kept. +/// `coefficients`: number of wavelet coefficients retained. pub enum WaveletKind { Haar } pub enum WaveletParams { Haar { coefficients: u32 } } /// `family`: name of the parametric distribution, e.g. a normal distribution. pub enum StatModelKind { Parametric } pub enum StatModelParams { Parametric { family: String } } @@ -1357,7 +1357,7 @@ pub enum PopulationStatistic { TopK { k: usize }, // `k`: how many top rows to return Sum, Count, Average, } -/// A population kept in full (§5.4). +/// A population retained in full (§5.4). pub struct MaintainedPopulation { /// Which rows or series the population contains. pub input: PopulationInput, @@ -1370,7 +1370,7 @@ pub enum PopulationInput { /// The current value of each PromQL series (see `CurrentSeriesInput`). CurrentSeries(CurrentSeriesInput), /// Rows of a table. `input`: the table `Scan` node. `value_column`: the - /// column whose values are kept. `grouping`: the `by` columns. + /// column whose values are retained. `grouping`: the `by` columns. Rows { input: Rc, value_column: usize, grouping: GroupKeys }, } pub struct CurrentSeriesInput { diff --git a/docs/design_docs/proposals/asapquery-rule-coverage.md b/docs/design_docs/proposals/asapquery-rule-coverage.md index beac2f5df..92d9a4208 100644 --- a/docs/design_docs/proposals/asapquery-rule-coverage.md +++ b/docs/design_docs/proposals/asapquery-rule-coverage.md @@ -4,7 +4,7 @@ > search (strategies, `CandidateLogicalASAPDAGs` as a Rust type, cost-model > ranking and `global_selection`), which has been removed. The planner now > plans through the stages of the [planning stages design](planner-layering.md). The -> document is kept as a record of the design. +> document is retained as a record of the design. > Status: proposal and coverage analysis. Check the implementation and tests before relying on it as a supported-behavior catalog. diff --git a/docs/design_docs/proposals/joint-planning-implementation-plan.md b/docs/design_docs/proposals/joint-planning-implementation-plan.md index f87477210..b17dc16b5 100644 --- a/docs/design_docs/proposals/joint-planning-implementation-plan.md +++ b/docs/design_docs/proposals/joint-planning-implementation-plan.md @@ -40,12 +40,12 @@ Implemented means present in this branch, not that every performance gate has pa | Capability | Current behavior | Acceptance requirement | | --- | --- | --- | | Exact, accumulator, sketch, fused, and scalar outputs | Supported local generation and selected-graph reconstruction; strict schema and guarantee checks. | Existing frontend/composition regressions, including SQL COUNT qualifiers and AVG grouping-key proofs. | -| Shared builds, tumbling-window states, scan widening, rollup, and TopK reuse | Logical rules expose compatible shared computations and retain local choices. | Typed input/output contracts, selected-reader legality, and actual evaluator-cost checks. Unsupported operator shapes remain local. | +| Shared builds, tumbling-window states, scan widening, rollup, and TopK reuse | Logical rules expose compatible shared computations and retain local choices. | Typed input/output contracts, selected-consumer legality, and actual evaluator-cost checks. Unsupported operator shapes remain local. | | Capacity, width, and horizon configurations | Finite sketch capacities and retention configurations; complete legal integer-ms tumbling-window-width domain for the supported aligned whole-tumbling-window algorithm. | Small-domain completeness, duplicate-generation equivalence, alignment, coverage, and independent solver-oracle tests. | | Materialization and repeated execution | Supported summary and non-summary modes validated against selected connections; production evaluator derives execution demand and retained state. | Ingestion/query timing, different evaluation grids, retained-state freshness, and shared cost ownership. | | Accuracy | Root guarantees are recomposed and checked; proven query-closure cuts and conservative early pruning supplement full-assignment rejection. | Preserve failure-probability and value/rank-error semantics. A changed relevant input must remain able to repair a rejected plan. | | Cost bounds | Certified local bounds plus validated full-assignment cost observations. Unsupported bounds remain conservative. | No bound exceeds evaluator cost, including potential candidate cycles, grouped tumbling windows, retention, and sharing. | -| Objectives | Usage-over-time, provisioned-price, and cluster-capacity latency/memory/Pareto ranking use the configured evaluator. | Same feasibility and ranking as independent final evaluation. Bounded Pareto traversal must report incompleteness. | +| Objectives | Usage-over-time, provisioned-cost, and cluster-capacity latency/memory/Pareto ranking use the configured evaluator. | Same feasibility and ranking as independent final evaluation. Bounded Pareto traversal must report incompleteness. | | Calibration | Explicit frozen factor, no-measurement default factor, or complete-catalog fit. | No fitting to an arbitrary timeout-dependent prefix; imported measurements are not newly collected runtime data. | | Search controls | Structural pruning, certified independent components, warm starts, validated seed, and cooperative budgets. | No removed global constraints or lost sharing opportunities; timeouts cannot become optimality certificates. | | Production cutover | One engine and one public lifecycle; retired algorithm names are rejected. | No active legacy selector/fallback/imports; CLI, fuzzing, viewer, and exports use the same route. | @@ -56,7 +56,7 @@ Raw-source retention and fixed request overhead are currently accounted for by t Query window semantics remain fixed. Complete width generation enumerates the legal positive integer-millisecond divisors of the relevant window/evaluation grids, subject to alignment, offsets, representable tumbling-window counts, and executable configurations. Different consumer subsets may select different widths. Complete width coverage does not imply arbitrary sketch capacities or unsupported window algorithms. -For bounded searches with a fixed calibration model, the same engine first searches a reader-grid/GCD seed domain, using at most the smaller of 5 seconds and one quarter of the available wall budget. It then searches the complete domain with the remaining wall and evaluation budgets. The seed is accepted only after normal accuracy, materialization, latency, and cost validation. The two results use the same configured ranking; a restricted seed supplies no lower bound for the complete domain. +For bounded searches with a fixed calibration model, the same engine first searches a consumer-grid/GCD seed domain, using at most the smaller of 5 seconds and one quarter of the available wall budget. It then searches the complete domain with the remaining wall and evaluation budgets. The seed is accepted only after normal accuracy, materialization, latency, and cost validation. The two results use the same configured ranking; a restricted seed supplies no lower bound for the complete domain. For accuracy-enforced feasibility proposals, the seed avoids rank-only or unknown estimate contracts without a rank request and optional non-summary materializations whose eligibility depends on the selected consumers. Both accuracy policies avoid projected raw-source bindings that cannot be installed below a time range; projections above an already formed range remain available. These are proposal restrictions, not permanent pruning: the complete graph retains those candidates, and an infeasible restricted proposal falls back to full selection. Ignored-accuracy cost proposals retain shared non-summary materializations. diff --git a/docs/design_docs/proposals/joint-planning-search.md b/docs/design_docs/proposals/joint-planning-search.md index 937f21269..0199b36b3 100644 --- a/docs/design_docs/proposals/joint-planning-search.md +++ b/docs/design_docs/proposals/joint-planning-search.md @@ -17,7 +17,7 @@ Q2: P99(X[15m]), evaluated every 5m Over 60 aligned minute ticks, separate query-time KLL builds require 60 + 12 executions. A compatible shared build can serve both queries at the 12 common query evaluation events, reducing the total to 60 builds. Another supported candidate may maintain 1m tumbling windows at ingestion and merge them at evaluation, trading update and retained-state costs against repeated whole-window construction. Eligible retained-state candidates introduce refresh and lifetime choices as well. Repetition alone does not make an earlier window's state valid for a later window; reuse must preserve coverage and freshness. -The search space therefore grows across algorithm, configuration, consumer sharing, materialization, and temporal reuse choices together. Selecting a producer's consumers can change its execution frequency and required retention, so these decisions cannot be priced independently. Explicitly expanding every query evaluation event can further multiply the optimization model's size, even when query texts and algorithm candidates remain unchanged. Workload-pattern optimization thus adds both a combinatorial planning challenge and a need for compact representation of repeated execution demand. +The search space therefore grows across algorithm, configuration, consumer sharing, materialization, and temporal reuse choices together. Selecting a producer's consumers can change its execution frequency and required retention, so these decisions cannot be costed independently. Explicitly expanding every query evaluation event can further multiply the optimization model's size, even when query texts and algorithm candidates remain unchanged. Workload-pattern optimization thus adds both a combinatorial planning challenge and a need for compact representation of repeated execution demand. The problem addressed here is to find a minimum-cost execution DAG that produces every requested result and satisfies accuracy, latency, and resource requirements. The optimizer must account for shared computation and retained data without charging them repeatedly along different query paths. It must also keep its own search time and memory manageable as the number of queries and implementation choices grows. @@ -70,7 +70,7 @@ G_KLL C_large: large-capacity KLL ← consumers C, D ``` -Selecting both candidates permits two sharing subsets. Selecting only one is appropriate when its configuration and cost suit all consumers. A candidate is one `(operator node, timing, materialization)`; how many times it runs is the selection's choice. Stage 2 generates no execution-scope copies. The selection, a `DagOfSelectedCandidates`, has one node per run: a stateless candidate recomputed by two readers, or a shared candidate run as two instances over different input bindings, is two nodes, each with its own input bindings. Today's Stage 3 engine, whose MILP runs each candidate at most once, makes the copies it needs before solving and decodes each selected copy into a node. +Selecting both candidates permits two sharing subsets. Selecting only one is appropriate when its configuration and cost suit all consumers. A candidate is one `(operator node, timing, materialization)`; how many times it runs is the selection's choice. Stage 2 generates no execution-scope copies. The selection, a `DagOfSelectedCandidates`, has one node per run: a stateless candidate recomputed by two consumers, or a shared candidate run as two instances over different input bindings, is two nodes, each with its own input bindings. Today's Stage 3 engine, whose MILP runs each candidate at most once, makes the copies it needs before solving and decodes each selected copy into a node. The workflow follows [planner layering](planner-layering.md). Local group candidates represent components of the workload DAGs described there. @@ -123,7 +123,7 @@ G_KLL += MergeLatest15(G_tumbling_windows) ### Stage 2: expand physical candidates -Non-summary query-time materialization must be a query output or have a selected immediate consumer used by only one query; the materialized node itself must have multiple query readers. These connection-dependent constraints match Stage 2's highest-shared-node rule and are enforced in MILP. Summary-state eligibility remains separate. +Non-summary query-time materialization must be a query output or have a selected immediate consumer used by only one query; the materialized node itself must have multiple query consumers. These connection-dependent constraints match Stage 2's highest-shared-node rule and are enforced in MILP. Summary-state eligibility remains separate. Physical rules provide executable operators, configurations, and physical properties assignments for the generated computations. For example, a supported tumbling window implementation can maintain state at ingestion and merge it at evaluation. This introduces two timing decisions within the same query, rather than one materialization choice for the whole query. Eligibility that depends on consumers is checked against the selected connections; considering every potential consumer at once could incorrectly reject a useful candidate. @@ -168,7 +168,7 @@ For a common evaluation of Q1 and Q2, the selected merge state serves both estim ## 4. Cost Model -The cost of a shared plan is obtained from its selected execution nodes, not by summing independently priced query paths. Each node owns its local work and state, excluding its inputs. In the running example, the KLL build owns construction and retained state, while each estimator owns extraction. Two estimators using one build therefore incur one build charge and two extraction charges. +The cost of a shared plan is obtained from its selected execution nodes, not by summing independently costed query paths. Each node owns its local work and state, excluding its inputs. In the running example, the KLL build owns construction and retained state, while each estimator owns extraction. Two estimators using one build therefore incur one build charge and two extraction charges. **Charging a selected candidate once does not mean executing it once.** It means assigning its cost to one owner rather than repeating that cost for every consumer. If a shared KLL build is reconstructed every minute, its charge includes every reconstruction over the accounting horizon. For 60 common evaluations of P95 and P99, the build work costs `60 × B`, where `B` is one reconstruction's cost—not `B`, and not `120 × B`. @@ -200,23 +200,23 @@ Memory-time and capacity answer different questions. A state occupying `m` bytes The direct-cost objective computes the total modeled cost of the selected execution DAG. It does not precompute one fixed total cost for each candidate or enumerate every complete DAG. Before solving, the planner computes each supported candidate's local cost parameters from its configuration and compatible producers. Inside MILP, the selected nodes and connections determine execution frequency and repeated work, consumer-specific operations, state holding costs, shared raw retention, and query overhead. A shared producer owns its charge once, including every required execution; its consumers' work is charged separately. **Local candidate cost parameters are precomputed; the complete selected DAG's cost is determined jointly by MILP.** -Direct pricing currently covers certified query-time exact and fixed sketch configurations, including KMV, KLL, DDS, Count-Min, CountSketch, Theta, and source-certified HLL. Every sketch arrives at its final size: Pass 1 sizes it for its readers' failure probabilities over the values their targets cover, Pass 2 shares it at its strictest reader's size, and Stage 3 never resizes, so precomputed prices stay valid. Matching schedules use a compact demand model. Mixed fixed intervals, known/unknown phases, estimated rates, scheduled requests, one-off requests and range evaluations use finite demand atoms following the evaluator's accounting policy. Different fixed intervals add; an unknown phase joins the first selected known phase on its interval; estimates add; nonrepeating demand uses the largest selected batch. These rules describe the configured cost model, not a new runtime scheduler. The production encoding needs neither a query-subset table nor an integer rate lattice. There is one production mixed-schedule encoding; the former subset and lattice encoders are removed. Behavioral selection tests use the current encoder and compare against separately computed evaluator costs. The model includes raw retention, request overhead, and latency-dependent temporary state, and checks the decoded total against the complete DAG evaluator. Accuracy still requires full output validation. +Direct costing currently covers certified query-time exact and fixed sketch configurations, including KMV, KLL, DDS, Count-Min, CountSketch, Theta, and source-certified HLL. Every sketch arrives at its final size: Pass 1 sizes it for its consumers' failure probabilities over the values their targets cover, Pass 2 shares it at its strictest consumer's size, and Stage 3 never resizes, so precomputed costs stay valid. Matching schedules use a compact demand model. Mixed fixed intervals, known/unknown phases, estimated rates, scheduled requests, one-off requests and range evaluations use finite demand atoms following the evaluator's accounting policy. Different fixed intervals add; an unknown phase joins the first selected known phase on its interval; estimates add; nonrepeating demand uses the largest selected batch. These rules describe the configured cost model, not a new runtime scheduler. The production encoding needs neither a query-subset table nor an integer rate lattice. There is one production mixed-schedule encoding; the former subset and lattice encoders are removed. Behavioral selection tests use the current encoder and compare against separately computed evaluator costs. The model includes raw retention, request overhead, and latency-dependent temporary state, and checks the decoded total against the complete DAG evaluator. Accuracy still requires full output validation. -Direct tumbling window pricing covers query-time rebuilding, eligible state retained across evaluations, and fixed-retention ingestion maintenance. Source-certified HLL tumbling windows use the same population and failure-probability checks as HLL whole-window builds. Rebuilt state pays for execution demand and temporary lifetime; retained state pays for resident tumbling windows and refreshes. Ingestion work is excluded from query latency; the maximum compaction delay among reached ingestion states contributes to query latency and temporary holding cost. +Direct tumbling window costing covers query-time rebuilding, eligible state retained across evaluations, and fixed-retention ingestion maintenance. Source-certified HLL tumbling windows use the same population and failure-probability checks as HLL whole-window builds. Rebuilt state pays for execution demand and temporary lifetime; retained state pays for resident tumbling windows and refreshes. Ingestion work is excluded from query latency; the maximum compaction delay among reached ingestion states contributes to query latency and temporary holding cost. -**Producer-dependent prices are joint decisions.** For each supported candidate, costing derives finite local pricing options from complete ordered tuples of its producers' priced output interfaces. Executable binary operations and relational joins preserve input positions even when two positions use the same producer. Shared ingestion ancestors contribute their work once to a worker-count certificate. An option records local CPU/state costs, output statistics, upstream work and the resulting certified worker count. For example, two producer configurations requiring 0.9 and 2.4 CPU-seconds per ingestion second produce one-worker and three-worker options; their compaction delays need not agree. A downstream reader can likewise have different merge/extraction costs for different state capacities. The optimizer retains these options rather than keeping only the first price class. +**Producer-dependent costs are joint decisions.** For each supported candidate, costing derives finite local costing options from complete ordered tuples of its producers' costed output interfaces. Executable binary operations and relational joins preserve input positions even when two positions use the same producer. Shared ingestion ancestors contribute their work once to a worker-count certificate. An option records local CPU/state costs, output statistics, upstream work and the resulting certified worker count. For example, two producer configurations requiring 0.9 and 2.4 CPU-seconds per ingestion second produce one-worker and three-worker options; their compaction delays need not agree. A downstream consumer can likewise have different merge/extraction costs for different state capacities. The optimizer retains these options rather than keeping only the first cost class. -Let `price[c,k]` select pricing option `k` of candidate `c`. Require `Σ_k price[c,k] = selected[c]`, and permit a selected consumer/producer connection only with a compatible pair of pricing options. For multiple inputs, a tuple selector chooses one complete certified combination and determines every input connection; separately compatible producers cannot form an unpriced combination. Thus all consumers of one shared candidate observe the **same** chosen interface. The implementation lifts these options into an internal MILP graph with mutual exclusion per original candidate, reuses the demand/lifetime cost formulation, and projects the result back to the original candidate DAG. Pricing options are not extra executions or extra copies of a shared state. Rejected assignments and reader/resource constraints retain their original physical identities. +Let `option[c,k]` select costing option `k` of candidate `c`. Require `Σ_k option[c,k] = selected[c]`, and permit a selected consumer/producer connection only with a compatible pair of costing options. For multiple inputs, a tuple selector chooses one complete certified combination and determines every input connection; separately compatible producers cannot form an unpriced combination. Thus all consumers of one shared candidate observe the **same** chosen interface. The implementation lifts these options into an internal MILP graph with mutual exclusion per original candidate, reuses the demand/lifetime cost formulation, and projects the result back to the original candidate DAG. Pricing options are not extra executions or extra copies of a shared state. Rejected assignments and consumer/resource constraints retain their original physical identities. -Local interface generation deduplicates identical outputs, costs and upstream-work certificates; it does not enumerate complete workload DAGs. It covers supported single-input and multi-input operators and timing configurations. Acyclic catalogs use dependency order; catalogs with potential cycles propagate local interfaces for at most the candidate count, sufficient for every legal acyclic dependency depth. Query-time upstream work is not part of an ingestion worker certificate, preventing irrelevant path histories from multiplying equivalent interfaces. Final DAG ordering and one pricing option per physical candidate exclude cyclic executions. All legal scan-lookback classes participate jointly, with exact context matching on each scan connection; sharing one wider scan across narrower consumers requires an additional maximum-demand witness and remains outside this encoding. Uncertified operators or domains exceeding the finite interface/tuple/time budget use the existing validated fallback. Generation reserves time for fallback rather than consuming the entire planning budget. Joint and fixed-price extraction share that reserved deadline. Unsupported profiles, including schedule-atom construction timeouts, skip the optional direct proposal and continue through validated search; invalid profile errors remain fatal. A worker count is derived from the selected upstream work, not an independently tunable cluster size. The bounded production seed uses the first interchangeable execution copy while retaining all its pricing options; the full search retains every copy. This is a restricted proposal, not a proof that additional copies are unnecessary. Reports distinguish joint price-option solves from fixed-profile direct solves. +Local interface generation deduplicates identical outputs, costs and upstream-work certificates; it does not enumerate complete workload DAGs. It covers supported single-input and multi-input operators and timing configurations. Acyclic catalogs use dependency order; catalogs with potential cycles propagate local interfaces for at most the candidate count, sufficient for every legal acyclic dependency depth. Query-time upstream work is not part of an ingestion worker certificate, preventing irrelevant path histories from multiplying equivalent interfaces. Final DAG ordering and one costing option per physical candidate exclude cyclic executions. All legal scan-lookback classes participate jointly, with exact context matching on each scan connection; sharing one wider scan across narrower consumers requires an additional maximum-demand witness and remains outside this encoding. Uncertified operators or domains exceeding the finite interface/tuple/time budget use the existing validated fallback. Generation reserves time for fallback rather than consuming the entire planning budget. Joint and fixed-cost extraction share that reserved deadline. Unsupported profiles, including schedule-atom construction timeouts, skip the optional direct proposal and continue through validated search; invalid profile errors remain fatal. A worker count is derived from the selected upstream work, not an independently tunable cluster size. The bounded production seed uses the first interchangeable execution copy while retaining all its costing options; the full search retains every copy. This is a restricted proposal, not a proof that additional copies are unnecessary. Reports distinguish joint cost-option solves from fixed-profile direct solves. -Range demand distinguishes evaluations from requests. Query-local state follows the union of evaluation offsets, while eligible query-kept state refreshes once per request. Tumbling window pricing options carry retention-span tiers: a selected tier must cover every selected reader and have a reader witnessing that maximum. This prevents both undercharging long ranges and charging retention demanded only by unselected readers. Existing tumbling-window alignment, freshness and materialization restrictions still apply. +Range demand distinguishes evaluations from requests. Query-local state follows the union of evaluation offsets, while eligible query-time materialized state refreshes once per request. Tumbling window costing options carry retention-span tiers: a selected tier must cover every selected consumer and have a consumer witnessing that maximum. This prevents both undercharging long ranges and charging retention demanded only by unselected consumers. Existing tumbling-window alignment, freshness and materialization restrictions still apply. -For a nonmaterialized node, let `A` be its normalized average holding time, `r_q` binary query reach, `e_q` the evaluation rate, and `L_q` query latency. Encode `Σ e_q × r_q × A = Σ e_q × r_q × L_q` by linearizing each binary/continuous product. Multiplying `A` by each selected execution-demand atom is linearized similarly. This models finite nonnegative rates without enumerating denominators or reader subsets. When all reached readers have zero expected demand, holding time falls back to the longest reader latency, matching the evaluator. Materialized state uses the longest reached-query latency. +For a nonmaterialized node, let `A` be its normalized average holding time, `r_q` binary query reach, `e_q` the evaluation rate, and `L_q` query latency. Encode `Σ e_q × r_q × A = Σ e_q × r_q × L_q` by linearizing each binary/continuous product. Multiplying `A` by each selected execution-demand atom is linearized similarly. This models finite nonnegative rates without enumerating denominators or consumer subsets. When all reached consumers have zero expected demand, holding time falls back to the longest consumer latency, matching the evaluator. Materialized state uses the longest reached-query latency. -Common-step ranges compress to nested coverage counts, even for very long spans. Mixed-step ranges group identical reader-coverage sets. Small geometry domains use arithmetic intersections and exact inclusion/exclusion counts, so large spans need no timestamp expansion; larger domains use bounded offset construction. Excessive domains, ill-conditioned rates, or exhausted construction budgets report a fallback rather than coarsening the schedule. The evaluator uses the same exact intersection-count primitive when validating large mixed ranges. Unsupported contexts remain in the complete candidate catalog for validated evaluator refinement. Restricted-subspace bounds are not full-catalog optimum certificates. Reports expose direct-cost solve counts, validated costs and fallback reasons. +Common-step ranges compress to nested coverage counts, even for very long spans. Mixed-step ranges group identical consumer-coverage sets. Small geometry domains use arithmetic intersections and exact inclusion/exclusion counts, so large spans need no timestamp expansion; larger domains use bounded offset construction. Excessive domains, ill-conditioned rates, or exhausted construction budgets report a fallback rather than coarsening the schedule. The evaluator uses the same exact intersection-count primitive when validating large mixed ranges. Unsupported contexts remain in the complete candidate catalog for validated evaluator refinement. Restricted-subspace bounds are not full-catalog optimum certificates. Reports expose direct-cost solve counts, validated costs and fallback reasons. -A candidate whose evaluator cost overflows the representable range is skipped with a `cost_not_representable` diagnostic so scalar-price search can still find a validated plan. This is an unknown cost, not proof of infeasibility: if such assignments were excluded, the search reports a conservative zero lower bound and cannot claim a full-domain optimum or infeasibility. Invalid settings and other evaluator errors remain errors. +A candidate whose evaluator cost overflows the representable range is skipped with a `cost_not_representable` diagnostic so scalar-cost search can still find a validated plan. This is an unknown cost, not proof of infeasibility: if such assignments were excluded, the search reports a conservative zero lower bound and cannot claim a full-domain optimum or infeasibility. Invalid settings and other evaluator errors remain errors. Numerically ill-conditioned cost profiles, rate tables, or normalized latency terms also fall back explicitly rather than silently dropping charges. An optimal direct solve must additionally agree with an independently decoded selected-DAG cost before its restricted-domain certificate is accepted. @@ -226,7 +226,7 @@ For a shared KMV rollup, charge one build at each required common evaluation, on Within a supported cost context, the decoded MILP objective plus omitted constants must agree with the independent physical-plan evaluator within numerical tolerance. Runtime measurements calibrate this model; neither solver optimality nor evaluator agreement establishes actual runtime cost. Contexts not yet fully encoded must report evaluator-refinement costing and must not claim a direct complete-cost formulation. -The configured Stage 3 objective and evaluators remain authoritative. The candidate-connection route supports usage-over-time and provisioned-price objectives, and cluster-capacity latency/memory priorities and Pareto traversal. Scalar cost bounds apply only where certified; bounded objective/frontier traversal reports incompleteness. Accuracy is an output requirement, since locally acceptable errors may compose into an unacceptable query result. Latency and resource limits likewise depend on the configured timing and capacity assumptions. +The configured Stage 3 objective and evaluators remain authoritative. The candidate-connection route supports usage-over-time and provisioned-cost objectives, and cluster-capacity latency/memory priorities and Pareto traversal. Scalar cost bounds apply only where certified; bounded objective/frontier traversal reports incompleteness. Accuracy is an output requirement, since locally acceptable errors may compose into an unacceptable query result. Latency and resource limits likewise depend on the configured timing and capacity assumptions. ## 5. MILP Formulation @@ -282,11 +282,11 @@ Connection variables exist only for compatible producer–consumer requirements. The query's window width is fixed semantics. The tumbling-window width is a physical decision, selected jointly with retention, summary capacity, materialization, and consumer connections. Do not restrict the search to a few manually chosen widths and describe the result as optimal over all supported tumbling-window widths. -For the supported whole-tumbling-window, aligned reconstruction algorithm, use the declared time resolution (currently integer milliseconds). Derive the complete legal width set from the window boundaries and evaluation grid. For example, a 15m window evaluated every 1m admits positive integer-millisecond divisors of 60,000, subject to alignment, offset, representable tumbling-window counts, and physical eligibility. A 5m tumbling window alone cannot serve every minute endpoint. Different compatible reader subsets can select different widths. +For the supported whole-tumbling-window, aligned reconstruction algorithm, use the declared time resolution (currently integer milliseconds). Derive the complete legal width set from the window boundaries and evaluation grid. For example, a 15m window evaluated every 1m admits positive integer-millisecond divisors of 60,000, subject to alignment, offset, representable tumbling-window counts, and physical eligibility. A 5m tumbling window alone cannot serve every minute endpoint. Different compatible consumer subsets can select different widths. This finite domain has an exact MILP encoding: activate width-specific configurations with binary decisions. If a single chain is represented by mutually exclusive width configurations, `sum_d u[d] = active` and its selected width is `sum_d d*u[d]`. The candidate graph encodes the same choice through configuration-specific candidate activations and compatible connections. Multiple chains may be active, so there is no single workload-wide tumbling-window-width variable. -Precompute each configuration's local resource estimates and reader compatibility. A free integer width by itself would leave nonlinear terms such as `window_width / tumbling_window_width` and arbitrary measured size/cost functions; it would not make the current model a valid MILP. Complete discrete encoding avoids that issue. Prune widths only with a proof covering costs, accuracy, and sharing interfaces; a candidate-count cap must be reported as a restricted domain. +Precompute each configuration's local resource estimates and consumer compatibility. A free integer width by itself would leave nonlinear terms such as `window_width / tumbling_window_width` and arbitrary measured size/cost functions; it would not make the current model a valid MILP. Complete discrete encoding avoids that issue. Prune widths only with a proof covering costs, accuracy, and sharing interfaces; a candidate-count cap must be reported as a restricted domain. A proven optimum applies to all generated legal widths and the other configured finite decisions under the encoded model. A planning-budget stop returns a validated incumbent and an available certified bound, not a globally optimal tumbling-window width. This does not claim optimality over unsupported boundary reconstruction, new window algorithms, or every possible sketch capacity. @@ -543,12 +543,12 @@ Cost normalization must preserve small, meaningful differences relative to solve Search reductions must preserve joint choices. A candidate that costs more alone may enable useful sharing, so local cost dominance is insufficient. Independent components can be solved separately only when dependencies, sharing, and global constraints also separate. Generation caching and sparse compatibility edges reduce overhead without requiring enumeration of complete workload plans. -Bounded fixed-calibration search first attempts to obtain a validated seed from a smaller reader-grid/GCD width domain using the same engine, then progressively adds legal widths toward the complete domain. A cached divisor frontier skips rounds that introduce no new width. Logical expansion reuses the pre-state-expansion memo and generates newly introduced window expressions; state expansion, physical inventory, and the MILP are rebuilt for each attempted domain. This is not incremental MILP solving. Only a definite budget stop may fall back to that validated seed; internal errors remain errors. Exhaustive archives and complete-catalog calibration skip this seed phase. Reports distinguish complete-domain generation from exhaustive assignment traversal, and a seed fallback supplies no full-domain optimum or gap certificate. Generation and model construction cooperate with the deadline; individual evaluator calls may overrun it. +Bounded fixed-calibration search first attempts to obtain a validated seed from a smaller consumer-grid/GCD width domain using the same engine, then progressively adds legal widths toward the complete domain. A cached divisor frontier skips rounds that introduce no new width. Logical expansion reuses the pre-state-expansion memo and generates newly introduced window expressions; state expansion, physical inventory, and the MILP are rebuilt for each attempted domain. This is not incremental MILP solving. Only a definite budget stop may fall back to that validated seed; internal errors remain errors. Exhaustive archives and complete-catalog calibration skip this seed phase. Reports distinguish complete-domain generation from exhaustive assignment traversal, and a seed fallback supplies no full-domain optimum or gap certificate. Generation and model construction cooperate with the deadline; individual evaluator calls may overrun it. Three complementary reductions control dense tumbling window inventories: - **Compatibility memoization and producer-list sharing.** Cache exact compatibility subproblems and intern identical ordered producer lists. Separate input positions still have separate connection decisions. This reduces repeated checking and storage, not the logical edge count or MILP variable count by itself. -- **Terminal reader factoring.** Equivalent unary summary estimators and exact-accumulator finalizers used only by query outputs can become one reader template with the union of their compatible producers. Equality includes operator parameters, result contracts, timing, materialization, local cost, input contracts, and output eligibility. Each output retains an independent binding through execution scopes; consumers may still choose different producers. Internal readers and tumbling-window-merge operators are excluded. In particular, merges with different tumbling-window counts are not interchangeable. +- **Terminal consumer factoring.** Equivalent unary summary estimators and exact-accumulator finalizers used only by query outputs can become one consumer template with the union of their compatible producers. Equality includes operator parameters, result contracts, timing, materialization, local cost, input contracts, and output eligibility. Each output retains an independent binding through execution scopes; consumers may still choose different producers. Internal consumers and tumbling-window-merge operators are excluded. In particular, merges with different tumbling-window counts are not interchangeable. - **Progressive width generation.** Spend the shared planning budget on successively larger finite domains and retain the best validated incumbent across rounds. Report attempted domains and pending widths. A restricted-domain lower bound or gap is not a certificate for the complete domain; only a completed full-domain solve can provide that certificate. The first two reductions preserve the represented choices under their stated contracts; the third controls work before a timeout and may leave choices unexplored. General cost-based DP compression needs a richer boundary contract covering sharing, resource use, accuracy, and execution demand; it is not implied by compatibility memoization. Fine tumbling-window widths cannot be discarded merely because their local cost is high. @@ -596,13 +596,13 @@ Generate memo candidates and compatible connections → Expand selected local plans and validate the execution DAG ``` -The MILP retains shared producer activation, configuration, consumer assignment, connection-dependent demand, and global resource constraints. Local plans can replace their internal decisions only if boundary compatibility, cost ownership, and all cross-region constraints are preserved, including acyclicity after expansion. Shared raw retention is a boundary decision even when the computation regions otherwise appear independent. Nonseparable pricing or scheduling interactions must likewise remain represented jointly. +The MILP retains shared producer activation, configuration, consumer assignment, connection-dependent demand, and global resource constraints. Local plans can replace their internal decisions only if boundary compatibility, cost ownership, and all cross-region constraints are preserved, including acyclicity after expansion. Shared raw retention is a boundary decision even when the computation regions otherwise appear independent. Nonseparable costing or scheduling interactions must likewise remain represented jointly. Tumbling-window width follows the same rule. A tumbling-window chain used exclusively inside a region can be optimized locally over its generated legal widths. A chain potentially shared across regions must expose its width, coverage, materialization, and guarantees as boundary configurations. Fixing each query's locally cheapest width before joint selection can discard the globally cheapest shared chain. ### Independent components and global budgets -Components may be solved and combined independently only when both the feasible set and objective separate. No possible selected connection, shared resource, pricing term, or global constraint may couple them. Inspect the candidate dependency and constraint structure, not just one provisional selected plan. +Components may be solved and combined independently only when both the feasible set and objective separate. No possible selected connection, shared resource, costing term, or global constraint may couple them. Inspect the candidate dependency and constraint structure, not just one provisional selected plan. When only global budgets couple otherwise independent components, local optimization can still reduce the master problem. For example: @@ -632,7 +632,7 @@ After selection, the planner reconstructs the DAG and evaluates accuracy, latenc The implementation uses `DagOfLogicalMemoGroups` and `MemoGroup` for initial identities, and `Memo` / `CandidateForMemoGroup` for logical expansion. Local `PhysicalCandidate` choices have explicit producer requirements and compatible connections. Selection reconstructs a `PhysicalWorkloadPlan` and validates its resulting graph through the configured evaluators. The sole production engine is `CandidateConnections`; bounded and exhaustive modes use the same candidate representation and solver. Existing supported runtime operators determine which configurations can be generated. -The candidate memo and its Pass 2 rules belong in `stage1-pass2-reuse-candidates`; physical eligibility remains authoritative in `stage2-physical-optimization`. Within selection, candidate inventory/reconstruction, MILP construction, evaluator refinement, pricing support, and route orchestration have separate scopes. State-local choices belong in candidates; cross-candidate decisions use connections and constraints. The retired `CouplingSite` selector representation and legacy search routes are removed rather than retained under new names. +The candidate memo and its Pass 2 rules belong in `stage1-pass2-reuse-candidates`; physical eligibility remains authoritative in `stage2-physical-optimization`. Within selection, candidate inventory/reconstruction, MILP construction, evaluator refinement, costing support, and route orchestration have separate scopes. State-local choices belong in candidates; cross-candidate decisions use connections and constraints. The retired `CouplingSite` selector representation and legacy search routes are removed rather than retained under new names. Evaluation must distinguish generation coverage from selection correctness. Small workloads are exhaustively enumerated over candidate subsets and compatible connections under the same inventory, then compared with MILP results. Cases include multiple selected candidates in one group, shared build costs, separate execution scopes, fusion outputs, and composed accuracy/resource requirements. Scaling experiments measure candidate and connection counts, generation and solve time, planner memory, and validated execution savings. Together these measurements establish whether the representation avoids repeated search work and whether joint selection justifies its planning cost. diff --git a/docs/design_docs/proposals/planner-layering-example1-acceptance.md b/docs/design_docs/proposals/planner-layering-example1-acceptance.md index 0dd10ff90..cc9366478 100644 --- a/docs/design_docs/proposals/planner-layering-example1-acceptance.md +++ b/docs/design_docs/proposals/planner-layering-example1-acceptance.md @@ -153,7 +153,7 @@ Invariants: * One selected id. Every other candidate is listed once as rejected, with a reason, and marked invalid or valid but costlier. -* Only valid candidates are priced. Each valid candidate's cost has one entry +* Only valid candidates are costed. Each valid candidate's cost has one entry per DAG node, and `cost_per_second` is their sum. A materialized node is charged once. A `Lifetime::None` node is charged once per consumer that reads it (its multiplier), where a consumer is a query or a materialized node and diff --git a/docs/design_docs/proposals/planner-layering-example2-acceptance.md b/docs/design_docs/proposals/planner-layering-example2-acceptance.md index b0d35a810..5c1d0dec8 100644 --- a/docs/design_docs/proposals/planner-layering-example2-acceptance.md +++ b/docs/design_docs/proposals/planner-layering-example2-acceptance.md @@ -47,7 +47,7 @@ workload itself. |---|---|---| | Query-language frontends | One summary-free DAG: `Distinct`, `Entropy`, `L2` over `flows.src_ip`, last 1 m | Same. Q1 is a distinct count; Q2 is `Entropy` and Q3 is `L2` over the per-source counts, each with an exact population count for the empty-input NULL. | | Logical ASAP-aware optimization, Pass 1 | Each computation: exact, a specialized summary, UnivMon. 3 × 3 × 3 = **27** | Q1: exact, HLL, KMV, UnivMon (no Theta: `asap_sketchlib` has no Theta sketch). Q2, Q3: exact, UnivMon (no specialized entropy or norm summary). 4 × 2 × 2 = **16** | -| Logical ASAP-aware optimization, Pass 2 | Summary-capability rule: + 1 (one UnivMon for all three, sized for ε = 0.01) + 9 (3 pairs share a UnivMon × 3 options of the third). Independent kept. **37**. Window composition left out. | Identical-expression rule (Q2 and Q3's shared per-source count, and the shared scan) and summary-capability rule (one UnivMon for two of the queries or all three, sized with each parameter's largest value among its readers): **82** | +| Logical ASAP-aware optimization, Pass 2 | Summary-capability rule: + 1 (one UnivMon for all three, sized for ε = 0.01) + 9 (3 pairs share a UnivMon × 3 options of the third). Independent candidates stay. **37**. Window composition left out. | Identical-expression rule (Q2 and Q3's shared per-source count, and the shared scan) and summary-capability rule (one UnivMon for two of the queries or all three, sized with each parameter's largest value among its consumers): **82** | | Physical ASAP-aware optimization | Same options as Example 1: no window form → rebuilt from raw samples each refresh. | Each logical candidate with every sub-DAG `Lifetime::None`, plus `(QueryTime, OneEvaluation(Memory))` for each summary build two or more queries read: **184** | | Plan selection | One UnivMon sized for ε = 0.01 vs three separate summaries; the shared one usually wins (one update per flow record instead of three). | 164 invalid: HLL or UnivMon for Q1 (120), whose bound has failure probability None without a distinct bound for `flows`, and UnivMon for Q2 (44), whose entropy has no guarantee. 20 valid. Under cost model 1, KMV for Q1 with the other two exact (P33) costs 6.097 per second and P1, all exact, 6.104, the exact distinct count's values held while Q1 runs; the shared per-source count costs 7.46 rebuilt for each query and 7.06 materialized `OneEvaluation`; with the shared scan also built once per evaluation, KMV for Q1 (P35-m3) is selected at 5.745, and all exact costs 5.752; UnivMon for Q3 costs 8.09. | @@ -71,7 +71,7 @@ workload itself. | Each statistic has an exact and a UnivMon option | `stage1_logical_asap_optimization_pass1_offers_exact_and_univmon_for_each_statistic` | passes | | Q1 has a specialized distinct-count summary (HLL or KMV) | `stage1_logical_asap_optimization_pass1_offers_a_distinct_count_summary` | passes | | Q2 and Q3 have a specialized entropy and norm summary | `stage1_logical_asap_optimization_pass1_offers_specialized_entropy_and_l2_summaries` | ignored: needs Pass 1 specialized entropy and L2 summary families (#444) | -| Every combination of the queries' own options is kept, with no shared summary | `stage1_logical_asap_optimization_keeps_every_independent_combination` | passes | +| Every combination of the queries' own options is retained, with no shared summary | `stage1_logical_asap_optimization_keeps_every_independent_combination` | passes | | A candidate has one UnivMon build read by all three queries, feeding a distinct-count, an entropy and an L2 estimate | `stage1_logical_asap_optimization_summary_capability_adds_one_univmon_for_all_three` | passes | | For each pair, a candidate shares one UnivMon between the two while the third takes each of its own options | `stage1_logical_asap_optimization_summary_capability_adds_pairwise_shared_univmons` | passes | | A shared UnivMon takes each parameter's largest value among its consumers, each sized alone | `stage1_logical_asap_optimization_shared_univmon_takes_each_parameters_largest_own_size` | passes | diff --git a/docs/design_docs/proposals/planner-layering-example3-acceptance.md b/docs/design_docs/proposals/planner-layering-example3-acceptance.md index 8966edd70..de786ec1e 100644 --- a/docs/design_docs/proposals/planner-layering-example3-acceptance.md +++ b/docs/design_docs/proposals/planner-layering-example3-acceptance.md @@ -46,7 +46,7 @@ Shared data workload, except Pattern A's `arrival` is `Mixed`. |---|---|---| | Query-language frontends | A: five scan → range → quantile chains. B: one. | Same; q3–q5 also have a `time_shift`. | | Logical ASAP-aware optimization, Pass 1 | A: exact or KLL over its own interval per query, 2⁵ = 32. B: exact, KLL. | A: exact, KLL (k = 547), DDSketch per query, 3⁵ = **243**. B: exact, KLL (k = 269), DDSketch, **3**. | -| Logical ASAP-aware optimization, Pass 2 | A: window composition adds one EH of KLLs over [T − 5 y, T], one merge + p99 estimate per query, plus a candidate for every grouping of two or more queries onto shared window summaries ("hundreds"). B: each Pass 1 option × {none, sliding L = 5 min s = 1 min (5 active windows), 1-min tumbling (merge 5)} = 6. Independent kept. | Identical-expression rule: each Pass 1 candidate also gets its shared-input candidates (A: 3 per Pass 1 candidate; B: none). Window-composition rule, tumbling windows only: B's KLL and DDSketch each also come as 1-min tumbling windows (a `SummaryTumblingWindowChain` of 5, merged before the p99 estimate), **5** in all; A is run once, so it gets none. No sliding windows or EHs. | +| Logical ASAP-aware optimization, Pass 2 | A: window composition adds one EH of KLLs over [T − 5 y, T], one merge + p99 estimate per query, plus a candidate for every grouping of two or more queries onto shared window summaries ("hundreds"). B: each Pass 1 option × {none, sliding L = 5 min s = 1 min (5 active windows), 1-min tumbling (merge 5)} = 6. Independent retained. | Identical-expression rule: each Pass 1 candidate also gets its shared-input candidates (A: 3 per Pass 1 candidate; B: none). Window-composition rule, tumbling windows only: B's KLL and DDSketch each also come as 1-min tumbling windows (a `SummaryTumblingWindowChain` of 5, merged before the p99 estimate), **5** in all; A is run once, so it gets none. No sliding windows or EHs. | | Physical ASAP-aware optimization | See Example 4. | Each logical candidate with every sub-DAG `Lifetime::None` (A: 972; B: 5), plus, for A, each highest shared input (a scan or a shift) also built once per evaluation, `(QueryTime, OneEvaluation(Memory))` (A: 2,187 in all), and, for B, each tumbling-window chain maintained `(IngestionTime, AcrossEvaluations(Memory))` (B: 7 in all). | | Plan selection | Not stated for Example 3. | A: 288 valid, 1,899 invalid: every candidate with a DDSketch misses the rank target (its bound is relative). KLL for all five queries (P485) is selected at 207,189.43 per second (cost model 1); all exact costs 327,132,784.05, about 1,600 times as much, its values held for the whole of each long query. B: KLL (P2, 2.363 per second); the 1-min KLL tumbling windows rebuilt at every evaluation cost 3.611 (the same rows and updates plus merging 5 tumbling windows per series, and the tumbling windows held while the query runs); maintained at ingestion time they keep six tumbling windows of 1,000,000 per-series KLLs for 654.54; exact costs 2.458; DDSketch, whole or in tumbling windows, misses the rank target. Every valid B plan meets 200 ms: 126 ms for the whole-window KLL, 131 ms for the rebuilt tumbling windows, 7 ms for the maintained tumbling windows, 144 ms exact. | diff --git a/docs/design_docs/proposals/planner-layering-example4-acceptance.md b/docs/design_docs/proposals/planner-layering-example4-acceptance.md index 3565c9d27..9966c3646 100644 --- a/docs/design_docs/proposals/planner-layering-example4-acceptance.md +++ b/docs/design_docs/proposals/planner-layering-example4-acceptance.md @@ -1,7 +1,7 @@ # Planner layering, Example 4: acceptance spec Audience: planner designers and the implementers of materialization in -physical ASAP-aware optimization and its pricing in plan selection. +physical ASAP-aware optimization and its costing in plan selection. Source: [planner-layering.md](planner-layering.md), "Example 4: Materialization of window summaries in physical planning" and the Materialization section. Tests: `crates/integration-tests/tests/planner_layering_example4.rs` (helpers @@ -33,7 +33,7 @@ every other logical candidate gets its own the same way (not counted). | Candidate | Materialization of the EH | Expected | |---|---|---| -| A1 | query time, kept for the batch | generated; selected as given | +| A1 | query time, retained for the batch | generated; selected as given | | A2 | ingestion time, old data backfilled once | generated unless `at_rest`; gains with monthly recurrence | | A3 | not materialized: each query rebuilds it | generated; costs more than A1 | @@ -41,24 +41,24 @@ every other logical candidate gets its own the same way (not counted). | Candidate | Materialization of the tumbling KLLs | Expected | |---|---|---| -| B1 | ingestion time, kept 5 min; merge 5 + p99 at query time | generated; usually selected | +| B1 | ingestion time, retained 5 min; merge 5 + p99 at query time | generated; usually selected | | B2 | not materialized: rebuild all 5 from 5 min of raw samples | generated; costs at least B1 and B3 | -| B3 | query time, kept 5 min: build only the newest | generated; no ingestion-time node | +| B3 | query time, retained 5 min: build only the newest | generated; no ingestion-time node | **Pattern B, sliding window (L = 5 min, s = 1 min).** Ingestion time or query -time, both kept. Not materializing it is the no-window plan, so it is not a +time, both retained. Not materializing it is the no-window plan, so it is not a separate option. **Today:** Pass 2 builds tumbling windows (`SummaryTumblingWindowChain`), and physical ASAP-aware optimization enumerates `Lifetime::None`, ingestion-time `AcrossEvaluations` and `OneEvaluation` (state reused within one evaluation) for every summary build. -B1 and B2 exist. B3 (tumbling windows built at query time and kept across +B1 and B2 exist. B3 (tumbling windows built at query time and materialized across evaluations) is offered when the deployment declares `query_time_results_retained` in its `deployment_capabilities`: Stage 2 then adds query-time `AcrossEvaluations` for a tumbling-window chain that builds one new tumbling window per evaluation. Pattern A's shared EH needs window segments shared across queries (#628, #634), so A1–A3 do not exist yet. B3's -4 kept tumbling windows plus the newest cost 436.59 per second under cost model 1, +4 retained tumbling windows plus the newest cost 436.59 per second under cost model 1, between B2 (3.611) and B1 (654.54). ## Invariants and tests @@ -68,7 +68,7 @@ timing and `Lifetime` (#667, #1200). Tests read them through `planner_layering_common::materializing(p, node)` without the lifetime length or storage medium (`MaterializedAtIngestion`, `MaterializedAtQueryTime`, `NotMaterialized`), and the materialized event-time span through `retention_ms(p, node)`. The IR does not record -retention, so the adapter derives it the way plan selection prices materialized +retention, so the adapter derives it the way plan selection costs materialized state: a chain of `N` tumbling windows of width `w` keeps `N·w`, plus one tumbling window while maintained at ingestion time; a whole-window build keeps its window, plus the next one at ingestion time; each plus the offset of the shifts below @@ -80,7 +80,7 @@ it. |---|---|---| | Every node upstream of an ingestion-time node also runs at ingestion time (all variants) | `stage2_physical_asap_optimization_ingestion_time_upstream_is_ingestion_time`; the monthly variant in `stage2_physical_asap_optimization_monthly_ingestion_time_upstream_is_ingestion_time` | passes: B1 and the monthly variant's maintained tumbling windows; the monthly test is ignored as slow (run in release by hand) | | With data at rest, no node runs at ingestion time | `stage2_physical_asap_optimization_at_rest_runs_nothing_at_ingestion_time` | passes | -| A materialized output covers its consumers: retention ≥ max over its readers of `lookback` + offset | `stage2_physical_asap_optimization_materialized_output_covers_its_consumers`; the monthly variant in `stage2_physical_asap_optimization_monthly_materialized_output_covers_its_consumers` | passes: B1 keeps 6 min ≥ 5 min; the monthly test is ignored as slow (run in release by hand) | +| A materialized output covers its consumers: retention ≥ max over its consumers of `lookback` + offset | `stage2_physical_asap_optimization_materialized_output_covers_its_consumers`; the monthly variant in `stage2_physical_asap_optimization_monthly_materialized_output_covers_its_consumers` | passes: B1 keeps 6 min ≥ 5 min; the monthly test is ignored as slow (run in release by hand) | ### Pattern A @@ -88,7 +88,7 @@ it. |---|---|---| | The shared EH yields exactly A1, A2, A3 | `stage2_physical_asap_optimization_a_shared_eh_has_three_materialization_options` | ignored: the shared EH (#628, #634) | | At rest, A2 is not generated; A1 and A3 remain | `stage2_physical_asap_optimization_a_at_rest_drops_the_ingestion_time_option` | ignored: the shared EH (#628, #634) | -| A materialized EH is one build node read by all five queries, priced once | `stage2_physical_asap_optimization_a_materialized_eh_is_built_once_for_all_consumers` | ignored: the shared EH (#628, #634) | +| A materialized EH is one build node read by all five queries, costed once | `stage2_physical_asap_optimization_a_materialized_eh_is_built_once_for_all_consumers` | ignored: the shared EH (#628, #634) | | A3 costs strictly more than A1 (five builds instead of one: a `Lifetime::None` node is charged per consuming query) | `stage3_plan_selection_a_rebuilding_per_query_costs_more_than_building_once` | ignored: the shared EH (#628, #634) | | As given, A1 is the cheapest of the three | `stage3_plan_selection_a_once_adhoc_prefers_the_query_time_eh` | ignored: the shared EH (#628, #634) | | Monthly, A2's cost relative to A1 drops: cost(A2)/cost(A1) monthly < as given | `stage3_plan_selection_a_monthly_amortizes_ingestion_time_maintenance` | ignored: the shared EH (#628, #634) | @@ -98,10 +98,10 @@ it. | Invariant | Test | Status | |---|---|---| | The tumbling KLL candidate yields exactly B1, B2, B3 | `stage2_physical_asap_optimization_b_tumbling_kll_has_three_materialization_options` | passes (with `query_time_results_retained`) | -| Until B3: the tumbling KLL candidate yields B1 and B2, both priced within the 200 ms latency bound (implementer test) | `stage2_physical_asap_optimization_b_tumbling_kll_has_b1_and_b2` | passes | +| Until B3: the tumbling KLL candidate yields B1 and B2, both costed within the 200 ms latency bound (implementer test) | `stage2_physical_asap_optimization_b_tumbling_kll_has_b1_and_b2` | passes | | B1 builds at ingestion time; its merge and estimate run at query time | `stage2_physical_asap_optimization_b_b1_builds_at_ingestion_and_merges_at_query_time` | passes | | B3 runs nothing at ingestion time | `stage2_physical_asap_optimization_b_b3_keeps_query_time_windows` | passes | -| The sliding KLL yields exactly ingestion time and query time, kept | `stage2_physical_asap_optimization_b_sliding_kll_has_two_materialization_options` | ignored: sliding windows (#522) | +| The sliding KLL yields exactly ingestion time and query time, retained | `stage2_physical_asap_optimization_b_sliding_kll_has_two_materialization_options` | ignored: sliding windows (#522) | | Each cost model chooses what its deployment pays for: cost model 1 the whole-window KLL; cost model 2 the exact plan (smallest peak memory); cost model 3 with lowest latency B1 in 256 GB, and the whole-window KLL in 4 GB, where B1 is invalid on peak memory | `stage3_plan_selection_b_cost_models_choose_differently` | passes | | Under cost model 3, the Pareto front over peak memory, disk and latency is {exact, whole-window KLL, B1} and B1 is selected; B2 is dominated by the whole-window KLL; least memory selects the exact plan | `stage3_plan_selection_b_pareto_front_over_memory_disk_and_latency` | removed: cost model 3 no longer has a Pareto-front objective | @@ -110,7 +110,7 @@ it. * A3 > A1 holds under any model that charges each build: A3 does strictly more of the same work. B2 also rebuilds more per evaluation than B1 and B3, but it keeps nothing between evaluations, so B2 ≥ B1, B3 holds only under a - model that charges rebuilds more than kept state. Cost model 1 does not: + model that charges rebuilds more than retained state. Cost model 1 does not: B2 costs 3.611 per second, B3 436.6 and B1 654.5 (see the table above). * A1 ≤ A2 as given, and B1 ≤ B3, depend on the cost model (cost model 1, 2 @@ -118,7 +118,7 @@ it. that A2 maintains years of history for one batch, and that B3 adds the newest build to every evaluation and needs raw data at query time. The tests assert the doc's direction under the built-in models; if the model - prices an ingestion-time update above a query-time one, B3 may win and the + costs an ingestion-time update above a query-time one, B3 may win and the doc allows it ("B3 can win when ingestion-time work is expensive"). * Monthly recurrence is tested as a ratio, so it does not depend on whether A2 wins outright ("A2 can win"). @@ -142,7 +142,7 @@ it. repeating entry whose window ends at each run, known at T. 4. **Retention unit.** "Kept 5 min" is read as the event-time span the stored state covers. For A1, which lives only for the batch, that is 5 y of - history. The test requires retention ≥ each reader's `lookback` + offset. + history. The test requires retention ≥ each consumer's `lookback` + offset. 5. **Backfill.** A2 backfills old data once. Whether that one-time cost is charged to the plan, and how it is amortized, is not stated; not tested. 6. **Pruning A2 at rest.** "A2 is not generated" is read as physical @@ -154,7 +154,7 @@ it. 8. **Other logical candidates.** "Every other logical candidate gets its own physical candidates the same way" gives no counts; tests count only the shared candidate's options. -9. **B3 retention.** The doc says B3 keeps 5 min but uses "4 kept" windows +9. **B3 retention.** The doc says B3 keeps 5 min but uses "4 retained" windows plus the newest. The test asks for 5 min (the query window). ## Devtool diff --git a/docs/design_docs/proposals/planner-layering.md b/docs/design_docs/proposals/planner-layering.md index 987616666..77088eb85 100644 --- a/docs/design_docs/proposals/planner-layering.md +++ b/docs/design_docs/proposals/planner-layering.md @@ -356,12 +356,12 @@ avg by (job) (quantile_over_time(0.5, data[5m]) / quantile_over_time(0.5, data[5 | G5 | `G3 + G4` | G3, G4 | | G6 | `avg by (job)` | G5 | -G1 is one group for its two readers, because a window directly over a scan +G1 is one group for its two consumers, because a window directly over a scan may be shared. The two `quantile_over_time(0.5, data[5m])` are one group, G2: both compute the same rows from the same input, so one copy serves both operands. A unique key is not needed (the PromQL planning path happens to give this output one, series identity and timestamp); an unordered `LIMIT` -would stay one group per reader. +would stay one group per consumer. **Step 2, Stage 1 Pass 1.** `pass1_memo` adds the groups the summaries need and the initial candidates: 19 groups, 36 candidates. @@ -463,7 +463,7 @@ candidates is in `crates/stage3-plan-selection/src/` (`select.rs`, `execution_co ## ASAPPlanner Detailed Design: Planning Stages and their decisions/Strategies Stages 0 to 2 (logical and physical planning stages) each output a candidate set holding every semantically equivalent and legal candidate DAG of that stage; stage 3 is the only step that chooses one candidate DAG as output currently (TODO: early selection for valid and more efficient candidates of stage 0-2 can be designed later). Candidate sets are internal to ASAPPlanner and may -be shared or enumerated lazily. Two kinds of removal are kept apart: +be shared or enumerated lazily. Two kinds of removal are distinguished: * **Pruning** removes an **invalid** candidate. Each stage prunes only what its own knowledge proves invalid (for example, a summary family that @@ -533,7 +533,7 @@ the memo path's entry points. | 4. Execution | The selected `PhysicalASAPDAG` → query results | Same: an `InstallablePlan` (`{dag, query_texts}`) → query results | The deployment runtime installs the `InstallablePlan` | What changed with the memo: -- Candidates are kept per distinct sub-expression, not per workload, so their +- Candidates are retained per distinct sub-expression, not per workload, so their number is the sum of each group's choices instead of their product. Only choices several groups depend on, such as a shared state's size, are made jointly. @@ -827,7 +827,7 @@ their overlapping windows. | Identical-expression rule | The input and computation semantics are identical. | One common computation node serving multiple consumers. | | Summary-capability rule | The computations have the same summary input data and the same window, and one summary supports all requested computations and their accuracy requirements. | One summary build node feeding several estimation nodes, e.g. UnivMon → distinct count, entropy, L2 norm. | | Window-composition rule | The computations have the same summary input data, and one window summary can answer the requested windows within their accuracy requirements. | One window summary feeding per-query merge (where needed) and estimation nodes, e.g. a sliding-window or tumbling-window KLL, or an Exponential Histogram with a KLL per EH bucket. | -| Rollup rule | A coarse exact accumulator (`sum`, `min`, `max`) or per-group sketch reads the same rows as a finer build of the same family (a sketch at any size) the workload already computes, grouped by a superset of its keys. | Exact: the finer accumulator's finalized values feeding an exact accumulator grouped by the coarse keys, e.g. `sum by (job)` from `sum by (job, instance)`. Sketch: a rollup (a `SummaryMerge` with `group_by`) of the finest build's states by the coarse keys, e.g. a KLL per `job` merged from the KLLs per `(host, job)`. Every coarse grouping of one finest build rolls up together, and that build is sized for its strictest reader. Every coarse reader must be an estimate whose merged readout keeps a guarantee (not a heap's top-k or UnivMon's entropy). The rolled-up state keeps the family's merged guarantee: KMV, HLL, DDSketch, Count-Min and Count Sketch give the direct coarse build's state, UnivMon its total, distinct count and L2, and KLL keeps its rank bound. Stage 3 prices one merge per input state and the coarse groups' states. | +| Rollup rule | A coarse exact accumulator (`sum`, `min`, `max`) or per-group sketch reads the same rows as a finer build of the same family (a sketch at any size) the workload already computes, grouped by a superset of its keys. | Exact: the finer accumulator's finalized values feeding an exact accumulator grouped by the coarse keys, e.g. `sum by (job)` from `sum by (job, instance)`. Sketch: a rollup (a `SummaryMerge` with `group_by`) of the finest build's states by the coarse keys, e.g. a KLL per `job` merged from the KLLs per `(host, job)`. Every coarse grouping of one finest build rolls up together, and that build is sized for its strictest consumer. Every coarse consumer must be an estimate whose merged readout keeps a guarantee (not a heap's top-k or UnivMon's entropy). The rolled-up state keeps the family's merged guarantee: KMV, HLL, DDSketch, Count-Min and Count Sketch give the direct coarse build's state, UnivMon its total, distinct count and L2, and KLL keeps its rank bound. Stage 3 costs one merge per input state and the coarse groups' states. | | Exact top-k reuse rule | Exact top-k computations read the same input and partition with different `k`. | One ranking (`Limit(k_max)` over `Sort`) that each top-k reads its first `k` rows from. | The rules compare computations by their **summary input data**: what a summary for @@ -843,10 +843,10 @@ as one input: the implementation widens every scan of the metric without label matchers to the union of those labels. Time ranges, time shifts, and per-series summaries without a filter (with the nodes that read their state) keep the wider rows; every other consumer reads its own columns through a projection. -These candidates are kept only when they share a scan. A SQL table scan reads +These candidates are retained only when they share a scan. A SQL table scan reads every column of the table, so two queries over one table already have equal scans; a scan is shared even though a table's rows have no unique key, since -each reader reads every row the scan outputs. +each consumer reads every row the scan outputs. The examples behind these rules: @@ -890,7 +890,7 @@ Input: C1 — CandidateLogicalASAPDAGs from Pass 1 F — summary-family capabilities (estimates, sizing, error bound, mergeable) Output: C2 — CandidateLogicalASAPDAGs with sharing -1: C2 ← C1 // independent candidates are kept +1: C2 ← C1 // independent candidates are retained 2: for each candidate d in C1 do 3: Opts ← ∅ // sharing options found in d 4: @@ -1036,7 +1036,7 @@ finest of their own tumbling-window widths, for the queries whose widths it divi their widths, even when it is finer than every query's own tumbling windows (1-min and 90-s tumbling windows share 30-s tumbling windows). Queries that repeat at different intervals read the same tumbling windows, each at its own cadence. Finer tumbling windows mean more states -kept and more tumbling windows merged, so Stage 3's pricing decides which grid, if +retained and more tumbling windows merged, so Stage 3's costing decides which grid, if any, pays; no tumbling-window-count limit is imposed beyond the tumbling-window count fitting in 32 bits. The chain covers the longest window and is sized for all of them, each parameter at its largest value among them, as the @@ -1057,14 +1057,14 @@ percentile_cont(0.9) … INTERVAL '20' MINUTE GROUP BY city` and the global p50 and p90 over the last 5 minutes, both every 10 s, read one chain of 120 per-city 10-s KLL tumbling windows: the 5-minute query merges each city's newest 30, then all cities into one state that answers both its percentiles. The chain -is sized for every reader, here both queries' ε. A rollup to no keys over +is sized for every consumer, here both queries' ε. A rollup to no keys over a SQL table's states stands for a global SQL aggregate, so it has one state, empty over no rows. A family that merges exactly keeps each query's guarantee, since a merge of fewer tumbling windows is one build over the shorter window, and each query fails with at most the shared state's failure -probability. Stage 3 prices each merge by the tumbling windows it reads, at its -query's rate. The per-query chains stay candidates too. A chain read at different intervals is not kept across -evaluations from query time: that option needs every reader to build one +probability. Stage 3 costs each merge by the tumbling windows it reads, at its +query's rate. The per-query chains stay candidates too. A chain read at different intervals is not materialized across +evaluations from query time: that option needs every consumer to build one new tumbling window per evaluation. Long-window segments, sliding windows and Exponential Histograms are not implemented yet. @@ -1083,7 +1083,7 @@ or in memory, across (batch) query executions. Stage 2 makes this decision in th query time and keeps nothing. 2. **If materialized, ingestion time or query time.** This is when the output is computed. A sub-DAG that runs at ingestion time is therefore always - materialized, because its output must be kept until a query reads it. + materialized, because its output must be retained until a query reads it. 3. **Where and how long to store it:** on disk or in memory, and for how long. The deployment's cost model estimates the cost of each choice. @@ -1141,14 +1141,14 @@ time are materialized for the next evaluations. Nothing is placed on disk yet. A runtime builds every ingestion-time state on the grid of its width anchored at the epoch, so an ingestion-time build must end on that grid at every -evaluation of its readers. For a tumbling-window chain, the tumbling-window width divides each +evaluation of its consumers. For a tumbling-window chain, the tumbling-window width divides each known evaluation phase. For a whole-window build (one window per evaluation, -no tumbling-window chain), the readers share one fixed interval, their declared phases +no tumbling-window chain), the consumers share one fixed interval, their declared phases agree, and the interval and a declared phase are multiples of the window: `m[5m]` every 5 minutes is one tumbling 5-minute window maintained at ingestion time and read at each evaluation, as a one-tumbling-window chain would be, while `m[20s]` every 20 s at phase -5 s, or every 30 s, is not kept whole (Pass 2 offers 5 s or 10 s tumbling windows). A -reader whose phase is not declared is taken to evaluate at multiples of its +5 s, or every 30 s, is not preserved whole (Pass 2 offers 5 s or 10 s tumbling windows). A +consumer whose phase is not declared is taken to evaluate at multiples of its interval, as for a tumbling-window chain. #### Physical operator implementation @@ -1238,15 +1238,15 @@ valid, and stage 3 chooses between them by cost. ```mermaid flowchart TB - subgraph M1["m₁ · ✓ kept"] + subgraph M1["m₁ · ✓ retained"] direction LR - a0[("latency_ms")]:::data --> a1["KLL build node
    1-min tumbling
    ingestion · memory
    kept 5 min"]:::ingest --> a2["KLL merge node
    latest 5
    query time · not stored"]:::notmat --> a3["p99 estimation node
    query time · not stored"]:::notmat + a0[("latency_ms")]:::data --> a1["KLL build node
    1-min tumbling
    ingestion · memory
    retained 5 min"]:::ingest --> a2["KLL merge node
    latest 5
    query time · not stored"]:::notmat --> a3["p99 estimation node
    query time · not stored"]:::notmat end subgraph M2["m₂ · ✗ pruned (line 13)"] direction LR b0[("latency_ms")]:::data --> b1["KLL build node
    1-min tumbling
    query time · stored"]:::qtime -->|"✗ KLLs not built yet
    when data arrives"| b2["KLL merge node
    latest 5
    ingestion"]:::ingest --> b3["p99 estimation node
    query time · not stored"]:::notmat end - subgraph M3["m₃ · ✓ kept"] + subgraph M3["m₃ · ✓ retained"] direction LR c0[("latency_ms")]:::data --> c1["KLL build node
    1-min tumbling
    query time · not stored"]:::notmat --> c2["KLL merge node
    latest 5
    query time · not stored"]:::notmat --> c3["p99 estimation node
    query time · not stored"]:::notmat end @@ -1293,7 +1293,7 @@ the cost of a shared summary is estimated once, with the demand of all its consumers. Selection first measures each valid candidate's resource usage, with no -prices (`ResourceUsage`: CPU operations and scanned bytes per second, average +costs (`ResourceUsage`: CPU operations and scanned bytes per second, average and peak memory, disk, peak CPU cores and each query's latency). The deployment's cost model (`CostModel`, in `CostInputs`) then turns usage into a choice: @@ -1302,7 +1302,7 @@ usage into a choice: |---|---|---| | Cost model 1, `UsageOverTime(ResourceUnitCost)` (default) | Pay-as-you-go | Unit cost × usage per second; the cheapest wins | | Cost model 2, `ProvisionedCapacity(ResourceUnitCost)` | Pays for provisioned capacity | Unit cost × peak memory, peak CPU cores and disk; the cheapest wins | -| Cost model 3, `ClusterCapacity(ClusterLimits)` | Its own cluster | No prices: a candidate over the cluster's memory, disk or (optionally) cores is invalid; the objective `LowestLatency` or `LeastMemory` chooses among the rest | +| Cost model 3, `ClusterCapacity(ClusterLimits)` | Its own cluster | No costs: a candidate over the cluster's memory, disk or (optionally) cores is invalid; the objective `LowestLatency` or `LeastMemory` chooses among the rest | ### 4. Execution @@ -1394,7 +1394,7 @@ flowchart TB within each `job`, which is costly at one million Zipf-distributed series. The approximate (ε, δ) target also admits a **Count-Min Sketch with a top-*k* heap per `job`**, and **Hydra over the whole `job` column**, where one sketch - covers every (`job`, series) key and a top-*k* heap is still kept per `job`. + covers every (`job`, series) key and a top-*k* heap is still retained per `job`. ```mermaid flowchart LR @@ -1447,7 +1447,7 @@ to each of the 3 candidates, and keeps every original: leaves them out.) Tumbling windows need a mergeable summary. Q1's rates and sums, Q2's exact sums and Hydra merge exactly; Count-Min sketches do too, but their top-10 - heaps merge only approximately, so that candidate is kept and the accuracy + heaps merge only approximately, so that candidate is retained and the accuracy model judges it in stage 3. Each Pass 1 candidate therefore has 2 input choices (separate or shared) × @@ -1477,14 +1477,14 @@ flowchart LR ``` **Stage 2: 156 candidates.** Stage 2 picks, for each query, when its state is -computed and whether it is kept. What it can choose depends on the query's +computed and whether it is materialized. What it can choose depends on the query's window form from Pass 2: | Window form | Physical options | |---|---| | None | **Raw:** rebuild the state from the last 1 min of raw samples at every refresh. It cannot be materialized: the window slides every 10 s, and most summaries cannot drop old data. | -| Sliding window | **Sliding, ingestion time:** insert each sample into the 6 active windows as it arrives (materialized at ingestion time). **Sliding, query time:** at each refresh, insert the last 10 s of raw samples into the 6 kept active windows (materialized at query time). Building the window from raw samples at query time without keeping it is the same plan as Raw. | -| 10-s tumbling windows | **Tumbling, ingestion time:** build each tumbling window as samples arrive and keep the last 6. **Tumbling, query time:** at each refresh, build only the newest tumbling window from the last 10 s of raw samples and reuse the 5 kept ones. **Tumbling, rebuilt:** at each refresh, build all 6 tumbling windows from the last 1 min of raw samples, merge them, and discard them (not materialized). | +| Sliding window | **Sliding, ingestion time:** insert each sample into the 6 active windows as it arrives (materialized at ingestion time). **Sliding, query time:** at each refresh, insert the last 10 s of raw samples into the 6 retained active windows (materialized at query time). Building the window from raw samples at query time without keeping it is the same plan as Raw. | +| 10-s tumbling windows | **Tumbling, ingestion time:** build each tumbling window as samples arrive and keep the last 6. **Tumbling, query time:** at each refresh, build only the newest tumbling window from the last 10 s of raw samples and reuse the 5 retained ones. **Tumbling, rebuilt:** at each refresh, build all 6 tumbling windows from the last 1 min of raw samples, merge them, and discard them (not materialized). | ```mermaid flowchart LR @@ -1511,7 +1511,7 @@ flowchart LR subgraph SQ["Sliding, query time"] direction LR subgraph SQQ["Query time, every 10 s"] - t1["last 10 s"]:::exact --> t2["update 6 kept
    active windows"]:::summary --> t3(["answer from the
    completed window"]):::estimate + t1["last 10 s"]:::exact --> t2["update 6 retained
    active windows"]:::summary --> t3(["answer from the
    completed window"]):::estimate end end @@ -1529,7 +1529,7 @@ flowchart LR subgraph TQ["Tumbling, query time"] direction LR subgraph TQQ["Query time, every 10 s"] - v1["last 10 s"]:::exact --> v2["build newest
    10-s window"]:::summary --> v3["merge with
    5 kept"]:::exact --> v4(["answer"]):::estimate + v1["last 10 s"]:::exact --> v2["build newest
    10-s window"]:::summary --> v3["merge with
    5 retained"]:::exact --> v4(["answer"]):::estimate end end @@ -1639,7 +1639,7 @@ UnivMon. Combined, that is 3 × 3 × 3 = 27 workload candidates. from `flows`, no other filter) and the same 1-min window. UnivMon supports all three estimates, so the summary-capability rule adds a shared candidate: **one UnivMon build node feeding three estimation nodes**. It must be sized for the strictest -requirement, ε = 0.01. The independent candidates are kept as well. Pass 2 +requirement, ε = 0.01. The independent candidates are retained as well. Pass 2 also adds candidates where only two of the three share a UnivMon and the third keeps any of its own 3 options (3 pairs × 3 = 9), so stage 1 outputs 27 + 1 + 9 = 37 candidates. The figure shows the all-three case. The @@ -1706,12 +1706,12 @@ flowchart LR ``` The three UnivMon options from Pass 1 (dashed arrows) are merged by Pass 2 into -one shared UnivMon. The independent candidates are kept, so stage 1 outputs +one shared UnivMon. The independent candidates are retained, so stage 1 outputs both kinds. **Stage 2.** The same options as in Example 1 apply: a summary without a window summary is rebuilt from raw samples at every refresh, while a -sliding-window or tumbling-window UnivMon can be kept from ingestion time or +sliding-window or tumbling-window UnivMon can be retained from ingestion time or from query time (and tumbling windows can also be rebuilt). Because the dashboard repeats over arriving data, ingestion-time window summaries are usually cheapest. UnivMon merges exactly, so tumbling windows suit it. @@ -1753,7 +1753,7 @@ of data at rest, plus data still arriving. mergeable. The window-composition rule adds a shared candidate: **one Exponential Histogram over [T − 5 y, T], with a KLL per EH bucket**, with one merge and estimation node per query that merges the EH buckets covering - its interval. The independent candidates are kept. + its interval. The independent candidates are retained. Yearly tumbling windows would also work here, since every interval is a whole number of years; the Exponential Histogram is shown because it also handles @@ -1896,16 +1896,16 @@ Which candidate wins depends on the workload: | Candidate | Materialized | At ingestion time | At query time | |---|---|---|---| -| B1 | 1-min tumbling KLLs, kept 5 min | Build one tumbling KLL per minute | Merge the latest 5, read p99 | +| B1 | 1-min tumbling KLLs, retained 5 min | Build one tumbling KLL per minute | Merge the latest 5, read p99 | | B2 | Nothing | Nothing | Read 5 min of raw samples, rebuild all 5 tumbling KLLs, merge them, read p99 | -| B3 | 1-min tumbling KLLs, at query time, kept 5 min | Nothing | Build only the newest tumbling KLL from raw samples, merge it with the 4 kept ones, read p99 | +| B3 | 1-min tumbling KLLs, at query time, retained 5 min | Nothing | Build only the newest tumbling KLL from raw samples, merge it with the 4 retained ones, read p99 | ```mermaid flowchart LR subgraph B1["B1 · tumbling KLLs materialized at ingestion time"] direction LR subgraph B1I["Ingestion time"] - s1[("samples")]:::data --> p1["1-min tumbling KLL
    kept 5 min"]:::summary + s1[("samples")]:::data --> p1["1-min tumbling KLL
    retained 5 min"]:::summary end subgraph B1Q["Query time, every 1 min"] g1["merge latest 5"]:::exact --> r1(["p99"]):::estimate @@ -1921,8 +1921,8 @@ flowchart LR subgraph B3["B3 · tumbling KLLs materialized at query time"] direction LR subgraph B3Q["Query time, every 1 min"] - s5[("last 1 min of
    raw samples")]:::data --> k5["build newest
    1-min tumbling KLL"]:::summary --> g5["merge with
    4 kept"]:::exact --> r5(["p99"]):::estimate - kp["4 kept tumbling KLLs
    from earlier evaluations"]:::summary --> g5 + s5[("last 1 min of
    raw samples")]:::data --> k5["build newest
    1-min tumbling KLL"]:::summary --> g5["merge with
    4 retained"]:::exact --> r5(["p99"]):::estimate + kp["4 retained tumbling KLLs
    from earlier evaluations"]:::summary --> g5 end end classDef data fill:#f1f3f4,stroke:#5f6368,color:#000; @@ -1940,9 +1940,9 @@ Selection usually picks B1. B3 can win when ingestion-time work is expensive, and B2 only when storage is expensive and raw data is available at query time. The sliding-window candidate from Example 3 gets its own physical candidates -the same way: kept from ingestion time (each sample updates the 5 active +the same way: retained from ingestion time (each sample updates the 5 active windows) or from query time (each evaluation inserts the last minute of raw -samples into the 5 kept windows). It does more ingestion work than B1 but +samples into the 5 retained windows). It does more ingestion work than B1 but needs no merge, so it wins only for a summary that merges poorly. **What this shows.** The same logical candidate (one shared Exponential diff --git a/docs/develop_docs/asap-aware-mapping-architecture.md b/docs/develop_docs/asap-aware-mapping-architecture.md index b309f2cbb..1022af2dc 100644 --- a/docs/develop_docs/asap-aware-mapping-architecture.md +++ b/docs/develop_docs/asap-aware-mapping-architecture.md @@ -25,7 +25,7 @@ in `asap-integration-tests` (`crate_graph`) checks these edges with | `asap-accuracy` (`crates/accuracy`) | The accuracy model the stages share: the analytical rules (per-family estimators, composition, budget split, target check) and the deployment's `AccuracyModel` and `AccuracyEvidenceProvider`; depends only on `asap-types` | | `asap-stage2-physical-optimization` (`crates/stage2-physical-optimization`) | Stage 2: materialization and physical operator implementation | | `asap-cost` (`crates/cost`) | The cost model the stages share: resource-usage estimation (the analytical per-operator model, measured operation costs, state byte sizes) and the cost models (`ResourceUsage`, `CostModel`, `CostInputs`); depends only on `asap-types` | -| `asap-stage3-plan-selection` (`crates/stage3-plan-selection`) | Stage 3: `select_plan` over Stage 2's output; accuracy and latency checks, pricing candidates with `asap-cost` | +| `asap-stage3-plan-selection` (`crates/stage3-plan-selection`) | Stage 3: `select_plan` over Stage 2's output; accuracy and latency checks, costing candidates with `asap-cost` | | `asap-planner` (`crates/planner`) | The facade: `e2e_plan` runs Stage 0, then the optimization pass (`Stage1ToStage3Pass` by default), which orchestrates Stages 1–3 (`run_planning`); the planning models (`PlanningModels`) and the `OptimizationPass` trait | | `asap-executor` (`crates/executor`) | Stage 4, the reference executor: operators and summary kernels over `asap_sketchlib`; it runs a `PhysicalASAPDAG` | | `asap-devtools` | `asap_planner` and the other inspection tools, the design-doc example workloads (`planner_layering_examples`) and the candidate labels | diff --git a/docs/develop_docs/asap-aware-mapping-contracts.md b/docs/develop_docs/asap-aware-mapping-contracts.md index a87f8e696..844744d9e 100644 --- a/docs/develop_docs/asap-aware-mapping-contracts.md +++ b/docs/develop_docs/asap-aware-mapping-contracts.md @@ -19,7 +19,7 @@ asap-stage1-pass2-reuse-candidates -p asap-stage2-physical-optimization -p asap- - Structurally equal sub-DAGs are interned before Stage 1 (`cse.rs` in `asap_stage0_memo`), so Stage 1 compares nodes by structure and Pass 2 - matches readers structurally, never by pointer. + matches consumers structurally, never by pointer. - Timing is applied with `apply_physical_properties`, which validates every data-state edge. A violation is an `ExecutionDataStateError`: for example `QueryTimeValueUnderIngestionSummary` (a query-time value @@ -55,7 +55,7 @@ asap-stage1-pass2-reuse-candidates -p asap-stage2-physical-optimization -p asap- - **Pass 2.** Each rule adds candidates; none removes a Pass 1 candidate, adds a summary family, or adds a readout. So a deployment that does not support a family never sees it again after Pass 1. -- **Sizing.** A summary shared by several readers is sized with each +- **Sizing.** A summary shared by several consumers is sized with each parameter's largest value among them. A summary is sized for ε in Stage 1; a δ that depends on data facts (a distinct-count bound, series counts) is left symbolic in its guarantee for Stage 3 to bind. @@ -121,7 +121,7 @@ asap-stage1-pass2-reuse-candidates -p asap-stage2-physical-optimization -p asap- cost model 3, or `CostNotRepresentable` (its cost overflows)) or a loss under the cost model (`Costlier`, `Slower`, `MoreMemory`, `TiedLostOnEnumerationOrder`). Stage 3 never resizes a summary: a candidate whose Stage 1 sizes miss its composed accuracy target is rejected alone. -- Usage (`ResourceUsage`) is measured without prices; the `CostModel` in +- Usage (`ResourceUsage`) is measured without costs; the `CostModel` in `CostInputs` turns it into a choice. Ties keep enumeration order under every cost model. - `Selection.plan` is the selected candidate's roots with the weight @@ -134,7 +134,7 @@ asap-stage1-pass2-reuse-candidates -p asap-stage2-physical-optimization -p asap- | What a query means | the frontend (Stage 0) | | Which computations exist and how each may be computed | Pass 1 | | What is shared, split into tumbling windows or reused | Pass 2 | -| When each build runs and whether it is kept | Stage 2 | +| When each build runs and whether it is materialized | Stage 2 | | Which plan is valid and which is chosen | Stage 3 | -| What the executor can build, retain and how it is priced | the deployment, through `PlanningModels` (`DeploymentCapabilities`, `CostInputs`, `AccuracyModel`) | +| What the executor can build, retain and how it is costed | the deployment, through `PlanningModels` (`DeploymentCapabilities`, `CostInputs`, `AccuracyModel`) | | Running the plan | the executor (`asap-executor`), outside the planner | diff --git a/docs/develop_docs/end-to-end-accuracy-guarantees.md b/docs/develop_docs/end-to-end-accuracy-guarantees.md index 1e4a98a05..2050c0425 100644 --- a/docs/develop_docs/end-to-end-accuracy-guarantees.md +++ b/docs/develop_docs/end-to-end-accuracy-guarantees.md @@ -22,7 +22,7 @@ aggregate intent and AccuracyTarget -> propagate guarantees through the registered composition rule -> check the final guarantee against AccuracyTarget -> keep legal candidate or record AccuracyError - -> Stage 3 prices the valid candidates under the cost model (cost does not prove accuracy) + -> Stage 3 costs the valid candidates under the cost model (cost does not prove accuracy) ``` For a single summary, the child is exact and propagation leaves the local diff --git a/docs/develop_docs/extend-asap-aware-mapping.md b/docs/develop_docs/extend-asap-aware-mapping.md index 76e7ae510..9a89990c5 100644 --- a/docs/develop_docs/extend-asap-aware-mapping.md +++ b/docs/develop_docs/extend-asap-aware-mapping.md @@ -72,7 +72,7 @@ and must keep the composed DAG's meaning. Stage 3 decides whether it pays off. Tests: unit tests beside the rule in `pass2/memo/rules/` for when it applies and when it must not; an end-to-end test like `crates/integration-tests/tests/reuse_rules.rs` that the planned workload -contains the candidate and that Stage 3 prices it. +contains the candidate and that Stage 3 costs it. ## 3. Add a Stage 2 physical properties option @@ -98,7 +98,7 @@ tests in `planner_layering_example4.rs`. `RejectionCause` variant (listed in `RejectionCause::failed_a_check`); it never fails the whole selection unless the input itself is bad (a new `ErrorSelectingPlan` variant, documented as bad input). -- A new pricing input goes in `CostInputs` (validated in its +- A new costing input goes in `CostInputs` (validated in its `validate`); a new statement about the executor goes in `DeploymentCapabilities`. Both reach the stages through `PlanningModels`; a stage function takes only the field it reads (Stage 2 takes diff --git a/docs/develop_docs/joint-candidate-workload-evaluation.md b/docs/develop_docs/joint-candidate-workload-evaluation.md index de827e8e4..eb1c85d08 100644 --- a/docs/develop_docs/joint-candidate-workload-evaluation.md +++ b/docs/develop_docs/joint-candidate-workload-evaluation.md @@ -20,7 +20,7 @@ The report separates local candidate generation, memo expansion, inventory/model The separate nine-example viewer suite also passed, including SQL rollup and the composed DDS range query (174.52 s total, concurrency two). Zero-budget and refinement-budget reports passed their focused checks. These examples supplement the thirty random mixed workloads. -To reproduce the thirty-workload collection, build `asap_planner` (which replaced `stage_pipeline`), freeze that executable, then run `python3 tools/validate_joint_workloads.py OUTPUT_DIRECTORY FROZEN_EXECUTABLE`. The runner uses the unchanged viewer manifests, enforced guarantees, Fargate prices, and a 90-second external deadline. Full regression and exact-head CI are separate release gates; successful workload coverage alone does not establish release readiness. +To reproduce the thirty-workload collection, build `asap_planner` (which replaced `stage_pipeline`), freeze that executable, then run `python3 tools/validate_joint_workloads.py OUTPUT_DIRECTORY FROZEN_EXECUTABLE`. The runner uses the unchanged viewer manifests, enforced guarantees, Fargate costs, and a 90-second external deadline. Full regression and exact-head CI are separate release gates; successful workload coverage alone does not establish release readiness. ## Regression coverage @@ -32,7 +32,7 @@ These are the results of the individual checks, not a claim that a pending workf ## Historical migration regressions (not final acceptance) -The expanded sharing/scope catalog and subsequent complete pane-width domain introduced regressions. These are retained in `joint-candidate-migration-checkpoints.json`; they are not successful speedup measurements. All rows use seed-862, a requested 30-second planning budget, accuracy enforcement, the Fargate price preset, and no retained raw data. They are successive working-tree snapshots, not a controlled benchmark of the final implementation. +The expanded sharing/scope catalog and subsequent complete pane-width domain introduced regressions. These are retained in `joint-candidate-migration-checkpoints.json`; they are not successful speedup measurements. All rows use seed-862, a requested 30-second planning budget, accuracy enforcement, the Fargate cost preset, and no retained raw data. They are successive working-tree snapshots, not a controlled benchmark of the final implementation. | Checkpoint | Physical configurations | Compatible connections | Evaluations | Outcome | Modeled cost/s | |---|---:|---:|---:|---|---:| @@ -41,13 +41,13 @@ The expanded sharing/scope catalog and subsequent complete pane-width domain int | First-copy seed, compact adjacency | 464 | 3092 | 1 | Validated incumbent, time limit | 2.3389329896881045e-06 | | Complete width domain and cyclic-input cost certificate | 5785 | 147279 | 0 | No incumbent | — | -The oversized shared exact-Sum chain was correctly priced by the final evaluator, but recursive certification over cyclic potential inputs initially gave it a zero local lower bound. The local-interface certificate restores that bound. Complete width enumeration then enlarged the generated graph enough to exhaust the budget before validation. These failures motivated duplicate-generation removal, cooperative generation deadlines, a validated pre-expansion seed, and smaller reader-flow models. None of these failed runs establishes optimality or functional completion. +The oversized shared exact-Sum chain was correctly costed by the final evaluator, but recursive certification over cyclic potential inputs initially gave it a zero local lower bound. The local-interface certificate restores that bound. Complete width enumeration then enlarged the generated graph enough to exhaust the budget before validation. These failures motivated duplicate-generation removal, cooperative generation deadlines, a validated pre-expansion seed, and smaller consumer-flow models. None of these failed runs establishes optimality or functional completion. ## Workloads and settings The exact viewer manifests are `tools/dag-viewer/workloads/random-mixed-seed-862/workload-01.json`, `random-mixed-seed-862-x5/workload-01.json`, and `random-mixed-seed-862-long/workload-01.json`. Each contains nine original PromQL queries. The x5 manifest increases metric cardinality from 10,000 to 50,000 series and total ingestion from 200,000 to 1,000,000 rows/s. The long manifest retains the original cardinality and triples window lengths. These are three representative manifests from the viewer's thirty-workload ASAPQuery collection. -All runs retain the viewer's settings: raw data and query-time results are not retained, AWS Fargate us-east-1 prices, and accuracy guarantees enforced (error target 0.05, failure probability 0.3). No query was rewritten. The separately labeled three-query subset contains original workload-01 queries q03, q04, and q05, including their outer `avg` operators, with unchanged requirements and data facts. +All runs retain the viewer's settings: raw data and query-time results are not retained, AWS Fargate us-east-1 costs, and accuracy guarantees enforced (error target 0.05, failure probability 0.3). No query was rewritten. The separately labeled three-query subset contains original workload-01 queries q03, q04, and q05, including their outer `avg` operators, with unchanged requirements and data facts. The external wall deadline is 120 seconds per run. Memo-MILP receives a 120-second internal budget; candidate-connections receives 30 seconds and the route's 128-refinement cap. These differing internal budgets are intentional diagnostic settings, not an equal-budget comparison. The budget is checked between solver/evaluator calls, so a final call can overshoot it. A killed process does not provide a completed plan, even if an internal incumbent existed. An exit code of zero is not sufficient: the devtool can serialize a selection error with `selected: null`. @@ -162,6 +162,6 @@ The diagnostic executable is `stage_pipeline-bounded-baseline`; its SHA-256 and ## Verified cause of the subset's extra state cost -The archived bounded-baseline selected DAG confirms two state producers in `joint-plan-3`. Scan 0 exposes `job`, `region`, and `service` plus series identity; PaneChain 1 feeds both the P99 reader (node 3, original q03) and P75 reader (node 25, q05). Scan 12 exposes only `region` plus series identity; a second PaneChain 13 feeds P95 (node 15, q04). Both are DDSketch configurations with alpha 0.05, 100 panes of 1,000 ms, and per-entity state. Each retains 1,179,680,000 bytes and contributes 1.3590971293056488e-6/s to modeled cost. +The archived bounded-baseline selected DAG confirms two state producers in `joint-plan-3`. Scan 0 exposes `job`, `region`, and `service` plus series identity; PaneChain 1 feeds both the P99 consumer (node 3, original q03) and P75 consumer (node 25, q05). Scan 12 exposes only `region` plus series identity; a second PaneChain 13 feeds P95 (node 15, q04). Both are DDSketch configurations with alpha 0.05, 100 panes of 1,000 ms, and per-entity state. Each retains 1,179,680,000 bytes and contributes 1.3590971293056488e-6/s to modeled cost. -The legacy selected DAG `P6-m3` has only the wider Scan 0 and PaneChain 1. Its single Merge 2 feeds all three quantile readers (nodes 3, 12, and 22). Thus the extra chain, scan, and repeated merge work are directly visible in the selected plans; this is not merely a speculation based on total cost. At that earlier checkpoint, the catalog's exact-schema connections did not provide the conversion needed to reuse the wider state for the region-only consumer. The legacy DAG demonstrates that wider-input reuse occurs, although this export does not identify the particular rule that introduced it. Compact extracted evidence is in `subset-sharing-evidence.json` in the artifact directory. +The legacy selected DAG `P6-m3` has only the wider Scan 0 and PaneChain 1. Its single Merge 2 feeds all three quantile consumers (nodes 3, 12, and 22). Thus the extra chain, scan, and repeated merge work are directly visible in the selected plans; this is not merely a speculation based on total cost. At that earlier checkpoint, the catalog's exact-schema connections did not provide the conversion needed to reuse the wider state for the region-only consumer. The legacy DAG demonstrates that wider-input reuse occurs, although this export does not identify the particular rule that introduced it. Compact extracted evidence is in `subset-sharing-evidence.json` in the artifact directory. diff --git a/docs/develop_docs/library-api.md b/docs/develop_docs/library-api.md index a738de28d..24dea9d30 100644 --- a/docs/develop_docs/library-api.md +++ b/docs/develop_docs/library-api.md @@ -199,17 +199,17 @@ asap_stage3_plan_selection::select_plan( | `PlanningModels::new(accuracy, evidence)` | Your `&dyn AccuracyModel` and `&dyn AccuracyEvidenceProvider`, with default cost inputs and deployment capabilities; `with_accuracy` and `with_evidence` replace one of them | | `PlanningModels::builtin()` | Built-in accuracy model (`BuiltinAccuracyModel`) and no extra evidence (`NoAccuracyEvidence`). `with_cost_inputs(&settings)` sets the deployment's `CostInputs`; `with_deployment_capabilities(&capabilities)` sets its `DeploymentCapabilities` (field `deployment_capabilities`) | | `DeploymentCapabilities` (`asap_types::deployment_capabilities`, re-exported as `asap_planner::DeploymentCapabilities`) | What the executor supports: `supported_summaries` (`None`, the default, supports every summary the planner builds; otherwise `SupportedSummary { family: SketchAlgorithm, readouts: Vec }` entries; Pass 1 prunes others with `PruneReason::UnsupportedByDeployment`), `raw_data_retained` (default `true`; when `false`, a candidate that scans raw data at query time is pruned by Stage 2, and stored data is refused with `asap_planner::SelectionError::InvalidDeploymentCapabilities`) and `query_time_results_retained` (default `false`; when `true`, Stage 2 offers query-time `AcrossEvaluations` for tumbling-window chains) | -| `CostInputs` (`asap_cost`) | `cost_model`, `resource_speed` (`ms_per_cpu_op`, `ms_per_scanned_byte`), `non_repeating_query_horizon_seconds` (default 3,600) and `measured_operation_costs` (`MeasuredOperationCosts`, default empty: `operators`, one `OperatorCost { operator, phase, sketch / exact / measure, ns_per_unit, ns_per_invocation, memory_bytes_per_state }` per measured operator kind, phase and family; `ns_per_evaluation` per query request; `provenance` (executor version, machine). A node with an entry is priced from it, a sketch between the two nearest measured sizes; every other node from the formulas times one calibration factor fitted from the measured nodes; each node's `NodeCost::price_source` says which. The earlier JSON array of `MeasuredOperationCost { sketch, operation, cpu_ns_per_operation }` still loads) | +| `CostInputs` (`asap_cost`) | `cost_model`, `resource_speed` (`ms_per_cpu_op`, `ms_per_scanned_byte`), `non_repeating_query_horizon_seconds` (default 3,600) and `measured_operation_costs` (`MeasuredOperationCosts`, default empty: `operators`, one `OperatorCost { operator, phase, sketch / exact / measure, ns_per_unit, ns_per_invocation, memory_bytes_per_state }` per measured operator kind, phase and family; `ns_per_evaluation` per query request; `provenance` (executor version, machine). A node with an entry is costed from it, a sketch between the two nearest measured sizes; every other node from the formulas times one calibration factor fitted from the measured nodes; each node's `NodeCost::price_source` says which. The earlier JSON array of `MeasuredOperationCost { sketch, operation, cpu_ns_per_operation }` still loads) | | `CostModel::UsageOverTime(ResourceUnitCost)` | Cost model 1 (default, `ResourceUnitCost::illustrative()`): unit cost × usage per second; the cheapest valid candidate wins | | `CostModel::ProvisionedCapacity(ResourceUnitCost)` | Cost model 2: unit cost × peak memory, peak CPU cores and disk; the cheapest valid candidate wins | | `CostModel::ClusterCapacity(ClusterLimits)` | Cost model 3: memory, disk and optional CPU cores are hard limits; `ClusterObjective::{LowestLatency, LeastMemory}` chooses among the candidates that fit | | `PlanOutput.plans` | One `QueryPlan { entry_index, root }` per query, in `QueryWorkload::entries()` order | | `PlanOutput.selection` | `Some` with Stage 3's `Selection` under the default pass: `selected_dag`, `nodes_with_proven_non_negative_weights`, `cost` (the selected plan's `PlanCost` with its `ResourceUsage` and `cost_per_second`, `None` under cost model 3), `accepted_accuracy_per_query`, `pruned_candidates` and `search_report` | -| `PlanOutput.tumbling_window_retention_ms` | For each tumbling-window chain the selected plan keeps beyond one evaluation, by node id, how long its tumbling windows are kept (`RealizedPlan::tumbling_window_retention_ms`) | -| `PlanningRun` | `per_computation_candidates`, `logical_asap_candidates`, `physical_asap_candidates`, `selection`, `selected_physical_plan` (`RealizedPlan`), `selected_plan` (the roots to run) and `report` (Pass 2's and Stage 2's counts and each stage's time); `per_computation_candidates` is kept only with `PlanSearchSettings::inspect`; `asap_planner::selected_chosen_candidates` reads the selected plan as one candidate per group of `logical_asap_candidates.memo` | +| `PlanOutput.tumbling_window_retention_ms` | For each tumbling-window chain the selected plan keeps beyond one evaluation, by node id, how long its tumbling windows are retained (`RealizedPlan::tumbling_window_retention_ms`) | +| `PlanningRun` | `per_computation_candidates`, `logical_asap_candidates`, `physical_asap_candidates`, `selection`, `selected_physical_plan` (`RealizedPlan`), `selected_plan` (the roots to run) and `report` (Pass 2's and Stage 2's counts and each stage's time); `per_computation_candidates` is retained only with `PlanSearchSettings::inspect`; `asap_planner::selected_chosen_candidates` reads the selected plan as one candidate per group of `logical_asap_candidates.memo` | | `PlanOutput::physical_asap_dag()` | The planned queries as one `PhysicalASAPDAG`, timed with the default `PhysicalPropertiesAssignment` (see [Export](#export)) | -Each candidate's `ResourceUsage` holds its usage without prices: +Each candidate's `ResourceUsage` holds its usage without costs: `cpu_ops_per_second`, `scanned_bytes_per_second`, `average_memory_bytes`, `peak_memory_bytes`, `disk_bytes`, `peak_cpu_cores` and `latency_per_query`. The deployment's choice of cost model reads it. @@ -314,19 +314,19 @@ PromQL metric or SQL table name to `SourceFacts`: `series_count`, `metric_type`, `values_non_negative`, `sample_interval` (PromQL and MetricsQL), `stream_norms`, `max_distinct_per_evaluation` and `distinct_values_per_label` (distinct values per label or column, which -plan selection prices a `by (...)` grouping's groups at: the product of its +plan selection costs a `by (...)` grouping's groups at: the product of its keys' counts, at most the declared `series_count` (series or groups of rows) and the rows it reads; with a key undeclared, no count is assumed and -the grouping is priced at the smaller of those two; over several sources a +the grouping is costed at the smaller of those two; over several sources a key's counts add), `distinct_values_per_label_set` (distinct combinations a set of dependent labels takes together, e.g. `[{"labels": ["service", "endpoint"], "distinct_values": 625}]` when each -endpoint is in one service: a grouping over one source is priced at the +endpoint is in one service: a grouping over one source is costed at the smallest product of declared set and label counts covering its keys, so `by (service, endpoint)` is 625 groups rather than 25 x 625), and `rows_held` (the rows the source holds at rest, which bound a scan with no window and data at rest). Every fact is declared: the planner has no clock, so a caller drops facts that no longer hold before planning, and -pricing assumes no default: a scan whose source declares no arrival rate +costing assumes no default: a scan whose source declares no arrival rate (`rows_per_second`, or `series_count` with `sample_interval`) and no `rows_held` fails with `AnalyticalCostError::MissingSourceFact`, naming the source and the missing fact. Plan @@ -351,7 +351,7 @@ distinct-value counts positive. | `DataWorkload::default()` | Unknown arrival, no source facts | Supply facts needed for the requested comparisons | | `SourceFacts::default()` | Every fact unknown | Unknown facts are not zero; drop facts that no longer hold before planning | | `CostInputs::default()` | Cost model 1 with the illustrative `ResourceUnitCost`, no measured operation costs | Supply the deployment's unit costs, speed and measurements for calibrated comparisons | -| `DeploymentCapabilities::default()` | Every summary supported, raw data retained, query-time results not kept | Declare what the executor supports | +| `DeploymentCapabilities::default()` | Every summary supported, raw data retained, query-time results not retained | Declare what the executor supports | `Default` is a Rust constructor contract, not a general serde omission rule. Several workload fields require explicit serialized values. A struct field being @@ -363,7 +363,7 @@ optional also does not guarantee every planning operation can succeed without it | --- | --- | | `asap_types::ir::apply_physical_properties(&root, &assignment)` | Complete a `PhysicalPropertiesAssignment` (default: all query time) into the physical properties of every node and validate the data-state edges; `apply_physical_properties_to_roots` does it for a workload; `PlanOutput::physical_asap_dag()` applies the pass's `physical_properties` to a planned workload | | `asap_types::ir::physical_export::compile_physical_asap_dag(&root, &timed)` | Export a DAG as a `PhysicalASAPDAG`, each node with its properties from the completed assignment `timed`; rejects a node it does not list; `compile_physical_asap_workload(&roots, &timed)` exports a batch with one root per query; `.validate()` checks it explicitly | -| `PhysicalASAPDAG::materialized_views()` and `.raw_data_retention()` (`asap_types::ir::materialized_view`) | What a runtime keeps for an installed DAG, derived from the DAG and the `retention_ms` installation sets: each materialized view (refresh mode, coverage, inputs, the node's `retention_ms`) and how far back each raw-data source is kept for query-time scans (each query-time `Scan`'s `retention_ms`) | +| `PhysicalASAPDAG::materialized_views()` and `.raw_data_retention()` (`asap_types::ir::materialized_view`) | What a runtime keeps for an installed DAG, derived from the DAG and the `retention_ms` installation sets: each materialized view (refresh mode, coverage, inputs, the node's `retention_ms`) and how far back each raw-data source is retained for query-time scans (each query-time `Scan`'s `retention_ms`) | Choose the export matching your intended handoff: an untimed semantic DAG is not interchangeable with a versioned execution contract. Preserve diff --git a/docs/develop_docs/physical-compile-coverage.md b/docs/develop_docs/physical-compile-coverage.md index a0b221ddf..9e76339f6 100644 --- a/docs/develop_docs/physical-compile-coverage.md +++ b/docs/develop_docs/physical-compile-coverage.md @@ -8,7 +8,7 @@ Audience: developers moving computation from ASAPQuery-backend into Logical selection decides what to compute. A `PhysicalPropertiesAssignment` sets node timing (Stage 2 materialization chooses it per physical candidate). `physical_planner::compile` turns a timed `PhysicalASAPDAG` into physical operator DAGs. The backend owns ingestion, tumbling windows, storage, stored-state -evaluation, external exact engines, pricing/selection, and execution scheduling. +evaluation, external exact engines, costing/selection, and execution scheduling. A backend lowering is *covered* when `compile` accepts the corresponding `PhysicalASAPDAG` node and produces operators with the same result. The backend @@ -162,7 +162,7 @@ Fallback and in query-time `Binary` nodes, following Prometheus' label-map `vector_binary` also treats `CompareBool` as its `bool` mode. - One-to-one matching and `group_left`/`group_right` with included labels. The "one" side must not repeat a match group; many-to-one results must be - unique. A left duplicate is an error only if more than one match is kept. + unique. A left duplicate is an error only if more than one match is retained. - `and`, `or`, and `unless` match label sets many-to-many, with `on` or `ignoring`, and return the original series. - Range functions other than `last_over_time` now drop `__name__` in the diff --git a/docs/develop_docs/planner-vocabulary-migration.md b/docs/develop_docs/planner-vocabulary-migration.md index faf87c105..8f29411ce 100644 --- a/docs/develop_docs/planner-vocabulary-migration.md +++ b/docs/develop_docs/planner-vocabulary-migration.md @@ -3,7 +3,7 @@ > **Status: historical.** Most names in this table belonged to the legacy > replacement search, which has been removed. The planner now plans through > the stages described in [the architecture](asap-aware-mapping-architecture.md). -> The table is kept as a record of the rename. +> The table is retained as a record of the rename. This is a Rust source API rename. Update imports and call sites using the table below. Planning, ranking, schema resolution, cost arithmetic, and window coverage diff --git a/docs/develop_docs/pre-asap-ir.md b/docs/develop_docs/pre-asap-ir.md index f3346279b..faac03fca 100644 --- a/docs/develop_docs/pre-asap-ir.md +++ b/docs/develop_docs/pre-asap-ir.md @@ -658,7 +658,7 @@ SELECT srcip FROM packets UNION ALL SELECT dstip FROM packets **Fields:** - `kind` — which set operation (union/intersect/except). -- `all` — whether duplicates are kept (`ALL`) or removed. +- `all` — whether duplicates are retained (`ALL`) or removed. - `left` — the left branch. - `right` — the right branch. diff --git a/docs/develop_docs/target-candidate-api-migration.md b/docs/develop_docs/target-candidate-api-migration.md index 904f0f9db..0c602be97 100644 --- a/docs/develop_docs/target-candidate-api-migration.md +++ b/docs/develop_docs/target-candidate-api-migration.md @@ -5,7 +5,7 @@ > `GlobalSelection`) has been removed. Stage 1 now produces > `LogicalCandidate`s, Stage 2 `PhysicalCandidate`s, and Stage 3's > `select_plan` the `Selection`; see [the architecture](asap-aware-mapping-architecture.md). -> The table is kept as a record of the rename. +> The table is retained as a record of the rename. This source-only rename follows the input/output/workflow design in #445. Candidate generation, ordering, accuracy checks, selection, and runtime behavior @@ -37,7 +37,7 @@ built, and Stage 3 its retention. The pre-ASAP and post-ASAP trees became one IR in `asap_types::ir`. Every node is an `Rc` whose `operator` is `Operator::NonASAP(NonASAPOp)` -or `Operator::ASAP(ASAPOp)`. Old public names are not kept as aliases. +or `Operator::ASAP(ASAPOp)`. Old public names are not retained as aliases. | Old | New | |---|---| diff --git a/docs/develop_docs/tumbling-window-search-compression-evaluation.md b/docs/develop_docs/tumbling-window-search-compression-evaluation.md index 5ddcdfc26..7b39ba531 100644 --- a/docs/develop_docs/tumbling-window-search-compression-evaluation.md +++ b/docs/develop_docs/tumbling-window-search-compression-evaluation.md @@ -6,7 +6,7 @@ This report is for planner developers. It separates three changes: storing repea ## Reproduction -Use frozen `stage_pipeline` executables; record their SHA-256 hashes. Do not run the four-case comparison concurrently with another benchmark. Both sides use the same input files, AWS pricing, deployment capabilities, enforced accuracy, a 30-second cooperative planning budget, and a 90-second external process timeout. Each case runs sequentially. Whole-process wall time and peak RSS include plan export and validation, so wall time may exceed the cooperative planning budget. +Use frozen `stage_pipeline` executables; record their SHA-256 hashes. Do not run the four-case comparison concurrently with another benchmark. Both sides use the same input files, AWS costing, deployment capabilities, enforced accuracy, a 30-second cooperative planning budget, and a 90-second external process timeout. Each case runs sequentially. Whole-process wall time and peak RSS include plan export and validation, so wall time may exceed the cooperative planning budget. ```bash python3 tools/benchmark_tumbling_window_search.py summarize BEFORE_BINARY BEFORE_DIR @@ -23,13 +23,13 @@ python3 tools/benchmark_tumbling_window_search.py run AFTER_BINARY VIEWER_DIR -- python3 tools/benchmark_tumbling_window_search.py run AFTER_BINARY ASAP_DIR --suite asap --jobs 2 ``` -For an archived 30-workload baseline without input fingerprints, compare only cost and acceptance after checking its original pricing configuration: +For an archived 30-workload baseline without input fingerprints, compare only cost and acceptance after checking its original costing configuration: ```bash python3 tools/benchmark_tumbling_window_search.py compare OLD_ASAP_DIR ASAP_DIR QUALITY.md --quality-only ``` -This mode checks serialized workloads, deployment capabilities, accuracy modes, Stage 0 DAGs, and objective/calibration settings. It deliberately excludes planning-time and memory comparisons; the old runner must confirm the pricing profile because historical documents do not serialize it. +This mode checks serialized workloads, deployment capabilities, accuracy modes, Stage 0 DAGs, and objective/calibration settings. It deliberately excludes planning-time and memory comparisons; the old runner must confirm the costing profile because historical documents do not serialize it. These suites contain the nine viewer workload examples and 30 mixed ASAPQuery workloads, respectively. They check query coverage, enforced accuracy, finite cost, valid cost bounds, no stored-output errors, and no global bound, gap, optimum, or exhaustion claim while tumbling-window widths remain pending. Existing Rust/JavaScript tests remain responsible for DAG structure and installation invariants. @@ -54,8 +54,8 @@ Record candidate counts, logical compatibility connections, unique producer sets Independent correctness checks should cover: - Producer-list sharing preserves membership, order, and duplicate input positions. Mutating one shared list must not mutate another list. Cached compatibility includes every semantic/configuration field used by the uncached check. -- Tiny complete-domain problems retain the same feasible assignments and minimum evaluated cost before and after factoring. Include multiple readers, different materializations, duplicate input positions, optional dependencies, and shared upstream producers. Reconstruction must restore every factored operation and preserve costs, accuracy, and query coverage. -- Terminal unary factoring must not absorb a node with additional consumers, observable materialization/state, unsupported error propagation, or different execution demand. Shared producer work remains charged once; reader-specific work remains per use. +- Tiny complete-domain problems retain the same feasible assignments and minimum evaluated cost before and after factoring. Include multiple consumers, different materializations, duplicate input positions, optional dependencies, and shared upstream producers. Reconstruction must restore every factored operation and preserve costs, accuracy, and query coverage. +- Terminal unary factoring must not absorb a node with additional consumers, observable materialization/state, unsupported error propagation, or different execution demand. Shared producer work remains charged once; consumer-specific work remains per use. - Progressive tumbling-window-width domains are nested; each round adds `TumblingWindows` candidates to the candidate memo only for newly admitted tumbling-window widths. Each round rebuilds its physical inventory and MILP, so previously considered assignments may be revisited. The domains eventually include the complete legal finite domain when the budget permits. A restricted-domain optimum never becomes a global certificate; timeout preserves the best validated incumbent. - The four-case benchmark must show measurable changes on the dense rangeheavy cases. Report cost regressions or incomplete-domain effects explicitly. Full 30-workload and nine-viewer acceptance must pass without relaxing accuracy or latency requirements. @@ -102,9 +102,9 @@ Artifacts: `/mydata/pane-compression-validation/{before,after-final}/results.jso ### Broader acceptance -The 30 mixed ASAPQuery workloads passed **30/30**, with **270/270** query requirements accepted. Their selected modeled costs match the previous composed-budget binary **exactly in all 30 cases**, including workload 08. Serialized workloads, deployment capabilities, accuracy modes, and Stage 0 DAGs match the archived baseline. Both runners use the same AWS pricing profile and enforced accuracy; this is a quality comparison, not a planning-time comparison. +The 30 mixed ASAPQuery workloads passed **30/30**, with **270/270** query requirements accepted. Their selected modeled costs match the previous composed-budget binary **exactly in all 30 cases**, including workload 08. Serialized workloads, deployment capabilities, accuracy modes, and Stage 0 DAGs match the archived baseline. Both runners use the same AWS costing profile and enforced accuracy; this is a quality comparison, not a planning-time comparison. -The archived baseline is `/mydata/asap-final-validation/final-workloads-composed-budget/results.json`, using the same before-binary hash listed above. Current results are in `asap-final/results.json`; `asap-quality-comparison.md` contains every case's costs and acceptance counts. Some final interrupted-round reports omit objective/calibration labels; the comparator explicitly marks these unknown and relies on the verified original runner settings rather than interpreting the default calibration value as zero-priced execution. +The archived baseline is `/mydata/asap-final-validation/final-workloads-composed-budget/results.json`, using the same before-binary hash listed above. Current results are in `asap-final/results.json`; `asap-quality-comparison.md` contains every case's costs and acceptance counts. Some final interrupted-round reports omit objective/calibration labels; the comparator explicitly marks these unknown and relies on the verified original runner settings rather than interpreting the default calibration value as zero-costed execution. The nine viewer workloads also passed **9/9**, with **40/40** query requirements accepted, including the composed-quantile ratio and SQL rollup examples. Their artifacts are in `viewer-final/results.json`. Broad acceptance uses two concurrent workloads and the same 30-second budget, and may overlap regression tests. Its timings are deliberately excluded from the sequential performance comparison. diff --git a/docs/user_guide_docs/run-a-query.md b/docs/user_guide_docs/run-a-query.md index 666d2badb..c1c19059c 100644 --- a/docs/user_guide_docs/run-a-query.md +++ b/docs/user_guide_docs/run-a-query.md @@ -38,7 +38,7 @@ cargo run --release -p asap-devtools --bin asap_planner -- \ ``` The workload file holds the queries, their accuracy requirements and how -often they run, and the data-source facts plan selection prices from: each +often they run, and the data-source facts plan selection costs from: each source's series count and sample interval, or rows per second. Without the fact a scan needs, planning fails with an error that names the source and the missing fact. From d61175cdca7002f9a22939db9e930e7b252e7efb Mon Sep 17 00:00:00 2001 From: zzylol <50204836+zzylol@users.noreply.github.com> Date: Sat, 7 Nov 2026 04:10:48 +0000 Subject: [PATCH 10/11] fix(devtools): review fixes: promote shared nodes only in a witness, reference cost test, wording, delete dead failed_a_check (#1207 PR 9) --- crates/cost/src/measured.rs | 22 +++++++-------- crates/cost/src/state_bytes.rs | 28 +++++++++---------- crates/cost/src/usage.rs | 14 +++++----- crates/devtools/src/planner_fuzz/mod.rs | 28 +++++++++++++------ crates/devtools/src/planner_fuzz/relations.rs | 10 +++---- crates/devtools/src/planning_stages_text.rs | 4 ++- crates/devtools/tests/planner_fuzz.rs | 21 ++++++++++++++ crates/executor/src/operators/limit.rs | 4 +-- .../executor/src/physical_planner/compiled.rs | 4 +-- crates/frontend-common/src/canonicalize.rs | 16 ++++++----- crates/stage3-plan-selection/src/report.rs | 21 +------------- .../planner-layering-example4-acceptance.md | 10 +++---- .../design_docs/proposals/planner-layering.md | 5 ++-- .../develop_docs/extend-asap-aware-mapping.md | 2 +- 14 files changed, 102 insertions(+), 87 deletions(-) diff --git a/crates/cost/src/measured.rs b/crates/cost/src/measured.rs index d3e0ed147..3f956810b 100644 --- a/crates/cost/src/measured.rs +++ b/crates/cost/src/measured.rs @@ -217,7 +217,7 @@ pub enum StateFamily<'a> { /// A node's unit cost, from its entry or interpolated between two. #[derive(Debug, Clone, Copy, PartialEq)] -pub struct UnitPrice { +pub struct UnitCost { pub ns_per_unit: f64, pub ns_per_invocation: f64, pub memory_bytes_per_state: Option, @@ -236,7 +236,7 @@ pub fn lookup( phase: ExecutionTiming, family: StateFamily<'_>, size_of: impl Fn(&SketchParams) -> f64, -) -> Option { +) -> Option { let matching = |for_phase: Option| { table .operators @@ -266,10 +266,10 @@ pub fn lookup( entries = matching(None); } let StateFamily::Sketch(params) = family else { - return entries.first().map(|entry| price_of(entry)); + return entries.first().map(|entry| cost_of(entry)); }; if let Some(entry) = entries.iter().find(|e| e.sketch.as_ref() == Some(params)) { - return Some(price_of(entry)); + return Some(cost_of(entry)); } let size = |entry: &OperatorCost| size_of(entry.sketch.as_ref().expect("a sketch entry")); let target = size_of(params); @@ -284,9 +284,9 @@ pub fn lookup( match (below, above) { (Some(low), Some(high)) if size(high) > size(low) => { let at = (target.ln() - size(low).ln()) / (size(high).ln() - size(low).ln()); - let (low, high) = (price_of(low), price_of(high)); + let (low, high) = (cost_of(low), cost_of(high)); let mix = |a: f64, b: f64| a + (b - a) * at; - Some(UnitPrice { + Some(UnitCost { ns_per_unit: mix(low.ns_per_unit, high.ns_per_unit), ns_per_invocation: mix(low.ns_per_invocation, high.ns_per_invocation), memory_bytes_per_state: low @@ -295,7 +295,7 @@ pub fn lookup( .map(|(a, b)| mix(a, b)), }) } - (Some(nearest), _) | (None, Some(nearest)) => Some(price_of(nearest)), + (Some(nearest), _) | (None, Some(nearest)) => Some(cost_of(nearest)), (None, None) => None, } } @@ -307,8 +307,8 @@ pub(crate) fn aggregate_lookup( table: &MeasuredOperationCosts, phase: ExecutionTiming, measures: &[AggIntent], -) -> Option { - let mut total = UnitPrice { +) -> Option { + let mut total = UnitCost { ns_per_unit: 0.0, ns_per_invocation: 0.0, memory_bytes_per_state: None, @@ -337,8 +337,8 @@ fn measure_name(measure: &AggIntent) -> String { .unwrap_or_else(|| format!("{measure:?}")) } -fn price_of(entry: &OperatorCost) -> UnitPrice { - UnitPrice { +fn cost_of(entry: &OperatorCost) -> UnitCost { + UnitCost { ns_per_unit: entry.ns_per_unit, ns_per_invocation: entry.ns_per_invocation, memory_bytes_per_state: entry.memory_bytes_per_state, diff --git a/crates/cost/src/state_bytes.rs b/crates/cost/src/state_bytes.rs index 16902be91..af5abfbc6 100644 --- a/crates/cost/src/state_bytes.rs +++ b/crates/cost/src/state_bytes.rs @@ -592,7 +592,7 @@ mod tests { use std::mem::{align_of, size_of}; use SketchAlgorithm as A; /// How the costed bytes relate to the sketch's. - enum Priced { + enum Costed { Exact, /// Exact up to `k` rows; past them at most the formula's /// missing compaction scratch space over it. @@ -632,7 +632,7 @@ mod tests { failure_probability: None, }, Rows::Values, - Priced::Kll { k: 200 }, + Costed::Kll { k: 200 }, 0, 10_000, ), @@ -640,7 +640,7 @@ mod tests { A::DDSketch, SketchParams::DDSketch { alpha: 0.01 }, Rows::Values, - Priced::Bound, + Costed::Bound, 0, 10_000, ), @@ -651,7 +651,7 @@ mod tests { depth: 5, }, Rows::Keyed, - Priced::Exact, + Costed::Exact, 0, 10_000, ), @@ -662,7 +662,7 @@ mod tests { depth: 5, }, Rows::Keyed, - Priced::Exact, + Costed::Exact, weighted_frequency_shape, 10_000, ), @@ -674,7 +674,7 @@ mod tests { heap_size: 256, }, Rows::Keyed, - Priced::Bound, + Costed::Bound, weighted_frequency_shape, 1_024, ), @@ -686,7 +686,7 @@ mod tests { heap_size: 256, }, Rows::Keyed, - Priced::Bound, + Costed::Bound, weighted_frequency_shape, 1_024, ), @@ -697,7 +697,7 @@ mod tests { relative_error: None, }, Rows::Values, - Priced::Exact, + Costed::Exact, hll_precision_tag, 10_000, ), @@ -708,7 +708,7 @@ mod tests { relative_error: None, }, Rows::Values, - Priced::Exact, + Costed::Exact, 0, 10_000, ), @@ -724,7 +724,7 @@ mod tests { distinct_failure_probability: None, }, Rows::Labels, - Priced::Bound, + Costed::Bound, univmon_key_bounds, 4_096, ), @@ -807,15 +807,15 @@ mod tests { .1 as usize; let context = format!("{algorithm:?} after {n} rows: {costed} costed"); match priced_as { - Priced::Exact => assert_eq!(charged, costed, "{context}"), - Priced::Kll { k } if n <= *k => assert_eq!(charged, costed, "{context}"), + Costed::Exact => assert_eq!(charged, costed, "{context}"), + Costed::Kll { k } if n <= *k => assert_eq!(charged, costed, "{context}"), // sketchlib bounds KLL's compaction scratch space at // 2 (k - 1) items. - Priced::Kll { k } => assert!( + Costed::Kll { k } => assert!( charged <= costed + 8 * 2 * (*k as usize - 1), "{context}, {charged} charged" ), - Priced::Bound => { + Costed::Bound => { assert!(charged <= costed, "{context}, {charged} charged"); if n == *full { assert!( diff --git a/crates/cost/src/usage.rs b/crates/cost/src/usage.rs index ceb437717..96999763a 100644 --- a/crates/cost/src/usage.rs +++ b/crates/cost/src/usage.rs @@ -66,7 +66,7 @@ pub fn plan_cost( let mut fit = CalibrationFit::default(); let speed = settings.resource_speed; // Cost model 1 costs each node as it is measured. - let usage_prices = match &settings.cost_model { + let unit_costs = match &settings.cost_model { CostModel::UsageOverTime(costs) => Some(costs), _ => None, }; @@ -171,7 +171,7 @@ pub fn plan_cost( evaluation_ms_per_query[query] = evaluation_ms; let Some(&first_read) = start.first() else { has_unattached_request_overhead = true; - if let Some(costs) = usage_prices { + if let Some(costs) = unit_costs { unattached_request_cost += costs.cost_per_cpu_op * ops_per_second; if !unattached_request_cost.is_finite() { return Err((diagnostic_node, AnalyticalCostError::Overflow)); @@ -191,7 +191,7 @@ pub fn plan_cost( query + 1, table.ns_per_evaluation ); - if let (Some(cost), Some(costs)) = (&mut node.cost_per_second, usage_prices) { + if let (Some(cost), Some(costs)) = (&mut node.cost_per_second, unit_costs) { *cost += costs.cost_per_cpu_op * ops_per_second; if !cost.is_finite() { return Err((first_read, AnalyticalCostError::Overflow)); @@ -202,7 +202,7 @@ pub fn plan_cost( let node = per_node.get_mut(&id).expect("every node is measured"); usage.disk_bytes = usage.disk_bytes.saturating_add(bytes); node.detail += &format!("; keeps {bytes} bytes of raw data on disk"); - if let (Some(cost), Some(costs)) = (&mut node.cost_per_second, usage_prices) { + if let (Some(cost), Some(costs)) = (&mut node.cost_per_second, unit_costs) { *cost += costs.cost_per_disk_byte_second * bytes as f64; } } @@ -298,7 +298,7 @@ pub fn plan_cost( let node = per_node.get_mut(&id).expect("every node is measured"); usage.average_memory_bytes += byte_seconds; node.detail += &format!("; holds {state} bytes for {evaluation_ms:.1} ms"); - if let (Some(cost), Some(costs)) = (&mut node.cost_per_second, usage_prices) { + if let (Some(cost), Some(costs)) = (&mut node.cost_per_second, unit_costs) { *cost += costs.cost_per_memory_byte_second * byte_seconds; if !cost.is_finite() { return Err((id, AnalyticalCostError::Overflow)); @@ -564,7 +564,7 @@ pub fn node_usage<'a>( ) -> Result, AnalyticalCostError> { let table = &settings.measured_operation_costs; let speed = settings.resource_speed; - let usage_prices = match &settings.cost_model { + let unit_costs = match &settings.cost_model { CostModel::UsageOverTime(costs) => Some(costs), _ => None, }; @@ -1232,7 +1232,7 @@ pub fn node_usage<'a>( } // One computation's CPU and scan cost times its rate, then the // materialized state's. - let cost = usage_prices.map(|costs| { + let cost = unit_costs.map(|costs| { (estimate.cpu_ops() * costs.cost_per_cpu_op + estimate.scan_bytes() as f64 * costs.cost_per_scanned_byte) * per_second diff --git a/crates/devtools/src/planner_fuzz/mod.rs b/crates/devtools/src/planner_fuzz/mod.rs index c8baa2854..5937ecb20 100644 --- a/crates/devtools/src/planner_fuzz/mod.rs +++ b/crates/devtools/src/planner_fuzz/mod.rs @@ -520,13 +520,20 @@ impl Planner { /// by `asap_cost::plan_cost` as Stage 3 costs a selected plan: each node /// a planning of this planner realized keeps the timing, lifetime, θ and /// coverage it was given; every other node (a witness's derived - /// operators) runs at query time, not materialized. A query-time node - /// that is not materialized and is read by the last root and another - /// is materialized for one evaluation instead (`OneEvaluation(Memory)`): - /// built once per evaluation and read by both, as the planner may - /// select (the derived query runs with the query it derives from). - /// `derived_root` is the nodes only the last root reads. - pub fn cost(&self, workload: &FuzzWorkload, roots: &[QueryRoot]) -> Result { + /// operators) runs at query time, not materialized. With + /// `last_root_is_derived` (a witness, whose last root is `q'`), a + /// query-time node that is not materialized and is read by the last root + /// and another is materialized for one evaluation instead + /// (`OneEvaluation(Memory)`): built once per evaluation and read by + /// both, as the planner may select (the derived query runs with the + /// query it derives from). A plan the planner selected is costed as + /// selected. `derived_root` is the nodes only the last root reads. + pub fn cost( + &self, + workload: &FuzzWorkload, + roots: &[QueryRoot], + last_root_is_derived: bool, + ) -> Result { let planning = workload.planning_workload(); let entries: Vec<_> = planning.query_workload.entries().collect(); let cost_inputs = self.cost_inputs(); @@ -539,7 +546,10 @@ impl Planner { parameters: None, summary_coverage: None, }; - let shared = shared_with_last_root(roots); + let shared = match last_root_is_derived { + true => shared_with_last_root(roots), + false => BTreeSet::new(), + }; let (dag, _) = physical_asap_dag_with_assignments(roots, &|node| { let mut assignment = self .assignment_of_node @@ -616,7 +626,7 @@ impl Planner { if let Some(costed) = self.reference_costs.get(&key) { return costed.clone(); } - let costed = self.cost(workload, roots); + let costed = self.cost(workload, roots, false); self.reference_costs.insert(key, costed.clone()); costed } diff --git a/crates/devtools/src/planner_fuzz/relations.rs b/crates/devtools/src/planner_fuzz/relations.rs index 21810174b..1d837d21c 100644 --- a/crates/devtools/src/planner_fuzz/relations.rs +++ b/crates/devtools/src/planner_fuzz/relations.rs @@ -329,9 +329,9 @@ pub struct WitnessReport { /// operators alone) and their operators. pub derived_node_cost_per_second: Option, pub derived_operators: Vec, - /// Whether the witness's `Filter` on a group key retained its input's - /// guarantee, which Stage 1's guarantee composition does not give it - /// (so the witness passes Stage 3 only under that rule). + /// Whether the witness derives `q'` by a `Filter` on a group key, which + /// keeps its input's guarantee only by that rule (the witness's + /// accuracy is not checked; the draft notes it). pub key_filter_keeps_input_guarantee: bool, } @@ -1631,7 +1631,7 @@ fn confirming( roots: Option<&Vec>, keep: usize, ) -> Option { - let costed = planner.cost(workload, &roots?[..keep]).ok()?; + let costed = planner.cost(workload, &roots?[..keep], false).ok()?; Some(WitnessReport { derivation: None, cost_per_second: costed.cost_per_second, @@ -1744,7 +1744,7 @@ fn evaluate_marginal( &base_roots, check.target, ) - .and_then(|roots| planner.cost(related, &roots)); + .and_then(|roots| planner.cost(related, &roots, true)); match costed { Ok(costed) if best diff --git a/crates/devtools/src/planning_stages_text.rs b/crates/devtools/src/planning_stages_text.rs index 0036514f4..44de03e23 100644 --- a/crates/devtools/src/planning_stages_text.rs +++ b/crates/devtools/src/planning_stages_text.rs @@ -556,7 +556,9 @@ fn write_selection(out: &mut String, stages: &PlanningStagesRun) { cost.cost_per_second .map_or("none".to_owned(), |cost| format!("{cost:.6}")) ); - // Keyed by the realized plan's node ids. + // Keyed by the realized plan's node ids (`#n`), not the selected DAG's + // (`node`): the realizer expands a windowed build into a chain and + // its merge. let rows = cost .per_node .iter() diff --git a/crates/devtools/tests/planner_fuzz.rs b/crates/devtools/tests/planner_fuzz.rs index 9cc43468a..374471ad5 100644 --- a/crates/devtools/tests/planner_fuzz.rs +++ b/crates/devtools/tests/planner_fuzz.rs @@ -406,3 +406,24 @@ fn other_frequency_statistic_witness_costs_from_one_univmon() { Witness::OtherStatistic { .. } | Witness::UnivMonOnly )); } + +/// `W`'s selected plan, costed outside the search, costs what the search +/// selected it for: the witness's reference point is on the same footing. +#[test] +fn the_selected_plan_costs_what_the_search_selected_it_for() { + let mut workload = seed("issue903.workload.json"); + workload.queries.truncate(1); + let mut planner = Planner::new(FuzzSettings::default()); + let planned = planner.plan(&workload).expect("W plans"); + let roots = planned.logical_roots.clone().expect("a realized plan"); + let costed = planner + .reference_cost(&workload, &roots) + .expect("W's plan costs"); + assert!( + (costed.cost_per_second - planned.cost_per_second).abs() + <= 1e-9 * planned.cost_per_second.abs(), + "{} vs {}", + costed.cost_per_second, + planned.cost_per_second + ); +} diff --git a/crates/executor/src/operators/limit.rs b/crates/executor/src/operators/limit.rs index d6584b270..fc02159be 100644 --- a/crates/executor/src/operators/limit.rs +++ b/crates/executor/src/operators/limit.rs @@ -51,9 +51,9 @@ pub(super) fn execute<'a>( .iter() .map(|&group| { let count = &mut seen[group as usize]; - let remaining = *count >= offset && count.saturating_sub(offset) < n; + let in_output = *count >= offset && count.saturating_sub(offset) < n; *count = count.saturating_add(1); - Some(remaining) + Some(in_output) }) .collect::(); let done = groups.is_empty() diff --git a/crates/executor/src/physical_planner/compiled.rs b/crates/executor/src/physical_planner/compiled.rs index a90606968..f5dd0fcbc 100644 --- a/crates/executor/src/physical_planner/compiled.rs +++ b/crates/executor/src/physical_planner/compiled.rs @@ -146,11 +146,11 @@ impl CompiledPhysicalDAG { Node::Operator { operator, .. } => Ok(operator.output_schema()), } } - /// Validate using schema-only sources. No deployment source is available. + /// Validate using schema-only stand-ins: no deployment source cursor is opened. pub fn validate(&self) -> Result<(), Error> { self.unbound().map(|_| ()) } - /// The DAG with a source-free bounded stand-in for every input slot. + /// The DAG with a bounded stand-in (no source cursor) for every input slot. fn unbound(&self) -> Result, Error> { let mut dag = PhysicalDAG::default(); for (&id, node) in &self.nodes { diff --git a/crates/frontend-common/src/canonicalize.rs b/crates/frontend-common/src/canonicalize.rs index 11503006e..560a6db3d 100644 --- a/crates/frontend-common/src/canonicalize.rs +++ b/crates/frontend-common/src/canonicalize.rs @@ -415,25 +415,27 @@ fn try_rewrite_row_number_top_k( child: sorted, }) }; - // A column of `X` as a column of `Project{P}{X}`, if `P` keeps it. - let position_in_kept = |column: usize| { + // A column of `X` as a column of `Project{P}{X}`, if `P` passes it through. + let position_in_projection = |column: usize| { remaining .iter() .position(|item| item.expr == ScalarExpr::Column(column)) }; - let partition_in_kept: Option> = - partition_by.iter().map(|&c| position_in_kept(c)).collect(); - let order_in_kept: Option> = order_by + let partition_in_projection: Option> = partition_by + .iter() + .map(|&c| position_in_projection(c)) + .collect(); + let order_in_projection: Option> = order_by .iter() .map(|key| match key.expr { - ScalarExpr::Column(column) => position_in_kept(column).map(|position| SortKey { + ScalarExpr::Column(column) => position_in_projection(column).map(|position| SortKey { expr: ScalarExpr::Column(position), ..key.clone() }), _ => None, }) .collect(); - let rewritten = match (partition_in_kept, order_in_kept) { + let rewritten = match (partition_in_projection, order_in_projection) { (Some(partition), Some(order)) if !partition_by.is_without() => { let selected = new(NonASAPOp::Project { cols: remaining, diff --git a/crates/stage3-plan-selection/src/report.rs b/crates/stage3-plan-selection/src/report.rs index 277a938a8..cc4870638 100644 --- a/crates/stage3-plan-selection/src/report.rs +++ b/crates/stage3-plan-selection/src/report.rs @@ -44,7 +44,7 @@ pub struct Rejection { } /// Why Stage 3 did not select a candidate. The first six mean the -/// candidate failed a check and is invalid ([`Self::failed_a_check`]); the +/// candidate failed a check and is invalid; the /// rest mean it was valid and lost under the cost model. JSON: the /// snake_case variant name, e.g. `"costlier"`. #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] @@ -91,25 +91,6 @@ pub enum RejectionCause { Infeasible, } -impl RejectionCause { - /// Whether the candidate failed a check (accuracy, latency bound, - /// repeat interval, cluster capacity or a representable cost) rather - /// than losing under the cost model. - pub fn failed_a_check(self) -> bool { - matches!( - self, - Self::AccuracyTargetMissed - | Self::CountMinWeightsNotProvenNonNegative - | Self::NoAccuracyGuarantee - | Self::LatencyBoundExceeded - | Self::LatencyOverRepeatInterval - | Self::OverClusterCapacity - | Self::Infeasible - | Self::CostNotRepresentable - ) - } -} - /// The accuracy Stage 3 accepted for one query of a valid candidate: the /// metric the query's target set (if any) and the metric of the guarantee /// that met it. With no metric set, any metric meeting the target's ε, δ diff --git a/docs/design_docs/proposals/planner-layering-example4-acceptance.md b/docs/design_docs/proposals/planner-layering-example4-acceptance.md index 9966c3646..74e941347 100644 --- a/docs/design_docs/proposals/planner-layering-example4-acceptance.md +++ b/docs/design_docs/proposals/planner-layering-example4-acceptance.md @@ -33,7 +33,7 @@ every other logical candidate gets its own the same way (not counted). | Candidate | Materialization of the EH | Expected | |---|---|---| -| A1 | query time, retained for the batch | generated; selected as given | +| A1 | query time, materialized for the batch | generated; selected as given | | A2 | ingestion time, old data backfilled once | generated unless `at_rest`; gains with monthly recurrence | | A3 | not materialized: each query rebuilds it | generated; costs more than A1 | @@ -41,12 +41,12 @@ every other logical candidate gets its own the same way (not counted). | Candidate | Materialization of the tumbling KLLs | Expected | |---|---|---| -| B1 | ingestion time, retained 5 min; merge 5 + p99 at query time | generated; usually selected | +| B1 | ingestion time, materialized 5 min; merge 5 + p99 at query time | generated; usually selected | | B2 | not materialized: rebuild all 5 from 5 min of raw samples | generated; costs at least B1 and B3 | -| B3 | query time, retained 5 min: build only the newest | generated; no ingestion-time node | +| B3 | query time, materialized 5 min: build only the newest | generated; no ingestion-time node | **Pattern B, sliding window (L = 5 min, s = 1 min).** Ingestion time or query -time, both retained. Not materializing it is the no-window plan, so it is not a +time, both materialized. Not materializing it is the no-window plan, so it is not a separate option. **Today:** Pass 2 builds tumbling windows (`SummaryTumblingWindowChain`), and physical @@ -101,7 +101,7 @@ it. | Until B3: the tumbling KLL candidate yields B1 and B2, both costed within the 200 ms latency bound (implementer test) | `stage2_physical_asap_optimization_b_tumbling_kll_has_b1_and_b2` | passes | | B1 builds at ingestion time; its merge and estimate run at query time | `stage2_physical_asap_optimization_b_b1_builds_at_ingestion_and_merges_at_query_time` | passes | | B3 runs nothing at ingestion time | `stage2_physical_asap_optimization_b_b3_keeps_query_time_windows` | passes | -| The sliding KLL yields exactly ingestion time and query time, retained | `stage2_physical_asap_optimization_b_sliding_kll_has_two_materialization_options` | ignored: sliding windows (#522) | +| The sliding KLL yields exactly ingestion time and query time, materialized | `stage2_physical_asap_optimization_b_sliding_kll_has_two_materialization_options` | ignored: sliding windows (#522) | | Each cost model chooses what its deployment pays for: cost model 1 the whole-window KLL; cost model 2 the exact plan (smallest peak memory); cost model 3 with lowest latency B1 in 256 GB, and the whole-window KLL in 4 GB, where B1 is invalid on peak memory | `stage3_plan_selection_b_cost_models_choose_differently` | passes | | Under cost model 3, the Pareto front over peak memory, disk and latency is {exact, whole-window KLL, B1} and B1 is selected; B2 is dominated by the whole-window KLL; least memory selects the exact plan | `stage3_plan_selection_b_pareto_front_over_memory_disk_and_latency` | removed: cost model 3 no longer has a Pareto-front objective | diff --git a/docs/design_docs/proposals/planner-layering.md b/docs/design_docs/proposals/planner-layering.md index 77088eb85..b9aa4cc53 100644 --- a/docs/design_docs/proposals/planner-layering.md +++ b/docs/design_docs/proposals/planner-layering.md @@ -398,8 +398,7 @@ physical candidates with 160 physical edges, and prunes 201 (timing, lifetime) alternatives, each with its reason. Stage 3's MILP has 184 variables and 243 constraints. It selects the exact plan: the whole-result failure probability 0.001 over 10,000 series is below what any listed size -gives per value (0.01), so no sketch meets constraint (K) (#1207 PR 8, spec -question 1). +gives per value (0.01), so no sketch meets constraint (K). These numbers are the production planner's, read from `asap_planner --format text` over `tools/dag-viewer/memo-examples/promql/ratio-of-quantiles-5m.json` @@ -1898,7 +1897,7 @@ Which candidate wins depends on the workload: |---|---|---|---| | B1 | 1-min tumbling KLLs, retained 5 min | Build one tumbling KLL per minute | Merge the latest 5, read p99 | | B2 | Nothing | Nothing | Read 5 min of raw samples, rebuild all 5 tumbling KLLs, merge them, read p99 | -| B3 | 1-min tumbling KLLs, at query time, retained 5 min | Nothing | Build only the newest tumbling KLL from raw samples, merge it with the 4 retained ones, read p99 | +| B3 | 1-min tumbling KLLs, at query time, materialized 5 min | Nothing | Build only the newest tumbling KLL from raw samples, merge it with the 4 retained ones, read p99 | ```mermaid flowchart LR diff --git a/docs/develop_docs/extend-asap-aware-mapping.md b/docs/develop_docs/extend-asap-aware-mapping.md index 9a89990c5..0dca1f2e6 100644 --- a/docs/develop_docs/extend-asap-aware-mapping.md +++ b/docs/develop_docs/extend-asap-aware-mapping.md @@ -95,7 +95,7 @@ tests in `planner_layering_example4.rs`. - A new validity check goes in `select_plan` and rejects a candidate with a `Rejection { cause, reason }` whose `cause` is a new failed-check - `RejectionCause` variant (listed in `RejectionCause::failed_a_check`); it never fails the whole selection + `RejectionCause` variant; it never fails the whole selection unless the input itself is bad (a new `ErrorSelectingPlan` variant, documented as bad input). - A new costing input goes in `CostInputs` (validated in its From cbc838ce01a0a47d15a7a1d74dbc95e85eccab21 Mon Sep 17 00:00:00 2001 From: zzylol <50204836+zzylol@users.noreply.github.com> Date: Sat, 7 Nov 2026 04:15:38 +0000 Subject: [PATCH 11/11] refactor(dag-viewer): consumer and cost wording in the viewer and its tests (#1207 PR 9) --- crates/devtools/src/bin/asap_planner.rs | 2 +- tools/benchmark_tumbling_window_search.py | 2 +- tools/dag-viewer/README.md | 2 +- tools/dag-viewer/stages.js | 4 +-- tools/dag-viewer/test_server.py | 6 ++--- tools/dag-viewer/test_viewer.py | 32 +++++++++++------------ 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/crates/devtools/src/bin/asap_planner.rs b/crates/devtools/src/bin/asap_planner.rs index 374277bda..0bc0d47ba 100644 --- a/crates/devtools/src/bin/asap_planner.rs +++ b/crates/devtools/src/bin/asap_planner.rs @@ -523,7 +523,7 @@ fn lowered(workload: &PlanningWorkload, catalog: &SqlCatalog) -> Resultps`, // none for the newest), a TimeRange of one tumbling window (`npr`) and the // tumbling window's build (`np`), each tumbling window fed by the chain's input and read by -// the chain's readers). Display only: the document keeps the chain. +// the chain's consumers). Display only: the document keeps the chain. function stageLaneElements(dag, options) { const { physical = false, costPerNode = null, queryIds = [], expandedChains = [] } = options || {}; const group = typeof nodeGroup === 'function' ? nodeGroup : () => 'rel'; @@ -663,7 +663,7 @@ function stageLaneElements(dag, options) { const from = expanded.has(e.producer); if (!into && !from) { edge(`e${index}`, `n${e.producer}`, `n${e.consumer}`, e.raw); return; } // An expanded chain's input feeds each tumbling window's TimeRange; each tumbling window feeds - // the chain's readers. + // the chain's consumers. const tumblingWindowCount = (chain) => byId.get(chain).body.tumbling_window_count; if (into) { for (let k = 0; k < tumblingWindowCount(e.consumer); k += 1) { diff --git a/tools/dag-viewer/test_server.py b/tools/dag-viewer/test_server.py index 3c11f72e0..2fcdaacd9 100644 --- a/tools/dag-viewer/test_server.py +++ b/tools/dag-viewer/test_server.py @@ -246,15 +246,15 @@ def fake_run(args, **kwargs): return calls def test_missing_documents_are_written_and_existing_ones_kept(self): - """Only the missing document is planned; an existing one is kept.""" + """Only the missing document is planned; an existing one is left as it is.""" with tempfile.TemporaryDirectory() as tmp: root = Path(tmp) (root / "out").mkdir() - (root / "out" / "a.json").write_text("kept") + (root / "out" / "a.json").write_text("existing") calls = self.run_write(root, force=False) self.assertEqual(calls, [[str(server.BINARY), "--workload", str(root / "workloads" / "b.json"), *STAGE3_JSON, "--ignore-accuracy-guarantees", "--out", str(root / "out" / "b.json")]]) - self.assertEqual((root / "out" / "a.json").read_text(), "kept") + self.assertEqual((root / "out" / "a.json").read_text(), "existing") def test_regenerate_rewrites_every_document(self): """--regenerate plans every entry again.""" diff --git a/tools/dag-viewer/test_viewer.py b/tools/dag-viewer/test_viewer.py index d5de452c4..3f75bf415 100644 --- a/tools/dag-viewer/test_viewer.py +++ b/tools/dag-viewer/test_viewer.py @@ -677,15 +677,15 @@ def test_an_expanded_chain_shows_each_tumbling_window_with_its_time_range_shift_ self.assertIn("shift: 10 s", shift["data"]["label"]) edges = [(e["data"]["source"], e["data"]["target"]) for e in lane_edges(elements)] child = f"n{self.body['child']}" - # The chain's input feeds every tumbling window's TimeRange; every tumbling window feeds the chain's readers. + # The chain's input feeds every tumbling window's TimeRange; every tumbling window feeds the chain's consumers. self.assertIn((child, f"n{chain_id}p0r"), edges) self.assertIn((child, f"n{chain_id}p1s"), edges) self.assertIn((f"n{chain_id}p1s", f"n{chain_id}p1r"), edges) self.assertIn((f"n{chain_id}p1r", f"n{chain_id}p1"), edges) - readers = {c for (p, c) in [(e["producer"], e["consumer"]) for e in self.dag["edges"]] if p == chain_id} - for reader in readers: - self.assertEqual(sum(1 for edge in edges if edge == (f"n{chain_id}p0", f"n{reader}")), 1) - self.assertEqual(sum(1 for (p, c) in edges if c == f"n{reader}" and p.startswith(f"n{chain_id}p") and not p.endswith(("r", "s"))), count) + consumers = {c for (p, c) in [(e["producer"], e["consumer"]) for e in self.dag["edges"]] if p == chain_id} + for consumer in consumers: + self.assertEqual(sum(1 for edge in edges if edge == (f"n{chain_id}p0", f"n{consumer}")), 1) + self.assertEqual(sum(1 for (p, c) in edges if c == f"n{consumer}" and p.startswith(f"n{chain_id}p") and not p.endswith(("r", "s"))), count) def test_each_node_lists_the_queries_reaching_it_and_shared_nodes_say_so(self): """Each node lists the queries reaching it; shared nodes say so.""" @@ -710,23 +710,23 @@ def test_logical_lanes_list_the_queries_reaching_each_node_too(self): def test_a_query_reaches_its_nodes_and_edges_only(self): """Highlighting a query keeps exactly its nodes and edges.""" elements = self.elements() - kept = set(self.js.call("stageQueryElementIds", elements, "q3")) - nodes = {e["data"]["id"] for e in lane_nodes(elements) if e["data"]["id"] in kept} + shown = set(self.js.call("stageQueryElementIds", elements, "q3")) + nodes = {e["data"]["id"] for e in lane_nodes(elements) if e["data"]["id"] in shown} self.assertEqual(nodes, {e["data"]["id"] for e in lane_nodes(elements) if "q3" in e["data"]["reachedBy"]}) for edge in lane_edges(elements): - self.assertEqual(edge["data"]["id"] in kept, edge["data"]["source"] in nodes and edge["data"]["target"] in nodes) - self.assertNotIn(f"n{self.chain['id']}", kept) + self.assertEqual(edge["data"]["id"] in shown, edge["data"]["source"] in nodes and edge["data"]["target"] in nodes) + self.assertNotIn(f"n{self.chain['id']}", shown) def test_a_node_neighborhood_is_everything_upstream_and_downstream(self): """A node's neighborhood is everything upstream and downstream of it.""" elements = self.elements() chain = f"n{self.chain['id']}" - kept = set(self.js.call("stageNeighborhoodIds", elements, chain)) - self.assertIn(chain, kept) - self.assertIn(f"n{self.body['child']}", kept) # upstream: the scan + shown = set(self.js.call("stageNeighborhoodIds", elements, chain)) + self.assertIn(chain, shown) + self.assertIn(f"n{self.body['child']}", shown) # upstream: the scan for root in (self.dag["roots"][0], self.dag["roots"][1]): # downstream: q1's and q2's roots - self.assertIn(f"n{root}", kept) - self.assertNotIn(f"n{self.dag['roots'][2]}", kept) # q3 reads another metric + self.assertIn(f"n{root}", shown) + self.assertNotIn(f"n{self.dag['roots'][2]}", shown) # q3 reads another metric def test_materialized_views_group_by_tumbling_window_chain(self): """Materialized views are grouped by their tumbling-window chain.""" @@ -937,9 +937,9 @@ def test_node_details_without_a_numeric_cost(self): """A per_node entry without a numeric `cost` does not break the details panel.""" js = self.page("?doc=e1.json", {"e1.json": json.dumps(example1())}) js.eval("""__taps['cy2 node']({ target: { data() { return { - kind: 'Scan', nodeId: 0, rootFor: [], timing: 'query_time', cost: { detail: 'not priced' }, + kind: 'Scan', nodeId: 0, rootFor: [], timing: 'query_time', cost: { detail: 'not costed' }, node: { payload: { NonASAP: { Scan: {} } }, guarantee: null } }; } } })""") - self.assertIn("not priced", self.text(js, "details")) + self.assertIn("not costed", self.text(js, "details")) def test_a_workload_document_fills_the_data_workload_and_materialized_views(self): """A planned workload fills the data workload, deployment and views panels."""