pub struct ExternalContext { /* private fields */ }Expand description
A binding whose semantic layer is not reachable from here — held by a service that answers the questions itself, or simply not pulled onto this machine.
It is well-formed, so ContextLoader::is_parseable holds and the compiler’s coarse floor
passes: the binding resolved, there is just no local MDL behind it. Beyond that it answers
nothing. Every precondition against it comes back unanswerable rather than false, which is the
point — a profile bound this way cannot quietly gate on schema facts nobody checked, and an
author who wants such a gate is told to bind a context that can answer it instead.
This is what makes an offline delegating profile honest. Reporting empty collections without
declining the probes would be worse than useless: has_metric would evaluate to a confident
false about a layer this process has never seen.
Implementations§
Trait Implementations§
Source§impl ContextLoader for ExternalContext
impl ContextLoader for ExternalContext
Source§fn is_parseable(&self) -> bool
fn is_parseable(&self) -> bool
mdl_parseable /
wren_project_exists.Source§fn metrics(&self) -> &[MetricInfo]
fn metrics(&self) -> &[MetricInfo]
Source§fn dimensions(&self) -> &[DimensionInfo]
fn dimensions(&self) -> &[DimensionInfo]
Source§fn time_dimensions(&self) -> &[DimensionInfo]
fn time_dimensions(&self) -> &[DimensionInfo]
has_time_dimension.Source§fn lineage(&self) -> &LineageGraph
fn lineage(&self) -> &LineageGraph
lineage_resolvable, and as the graph an impact refers to).Source§fn can_answer(&self, _predicate: &str) -> bool
fn can_answer(&self, _predicate: &str) -> bool
predicate at all? A false here is a
different loud-fail from evaluating the predicate false — it means the semantic format
cannot carry the answer, so the compiler must refuse rather than guess. Read moreSource§fn parse_error(&self) -> Option<&str>
fn parse_error(&self) -> Option<&str>
Self::is_parseable is false and the
adapter has one to offer (e.g. a serde error from the bound project’s manifest). Message-only
enrichment for the mdl_parseable precondition failure — never used for control flow.
Defaults to None (no detail beyond the generic floor message); an adapter that keeps the
real error around overrides it.Source§fn host_analysis(&self) -> Option<HostAnalysis>
fn host_analysis(&self) -> Option<HostAnalysis>
Source§fn source_introspectable(&self) -> Option<bool>
fn source_introspectable(&self) -> Option<bool>
source_introspectable). This inverts the consumer probes
above: a constitutive component’s input is a raw source that has no MDL yet — the component’s
output is the MDL. Some(true) = introspectable, Some(false) = a raw source is bound but
not introspectable, None = this Context cannot answer raw-shape at all (an MDL-only adapter),
which the compiler turns into an unanswerable loud-fail rather than guessing (the same
distinction metric_additive draws). Defaults to None so a semantic-layer loader, which
cannot answer raw-shape at all, is unaffected;
a raw-source adapter overrides it (schema introspection is borrowed — dlt/wren — never built).Source§fn raw_docs_readable(&self) -> Option<bool>
fn raw_docs_readable(&self) -> Option<bool>
raw_docs_readable). Same Some/None semantics as
Self::source_introspectable; defaults to None (MDL-only adapters cannot answer it).Source§fn lineage_diagnostics(&self) -> &[String]
fn lineage_diagnostics(&self) -> &[String]
Source§fn metric_additivity(&self, metric: &str) -> Option<Additivity>
fn metric_additivity(&self, metric: &str) -> Option<Additivity>
None when the metric is not declared or its
additivity is not expressible (⇒ can_answer("metric_additive") is false for it).