Repository navigation
v0.10.0
Changelog
Added
-
A key part can be a constant.
key: {marketplace: {const: Ozon}, order_id: {from: …}}
keys each mapping's rows by a value fixed for that mapping beside the source's own id,
so two sources feeding one merged entity land as distinct rows where their ids overlap,
and the collision audit stays silent on them. It is typed and lowered as a field's
constant is, and a quarantined row replays with it. A mapping that sets every key
column of the entity as a constant is refused, since every row of it would carry one
key. (#380) -
A plan change says what happened, and to which column, as values.
Changegains
action(added,removed,renamed,retypedorchanged, the newChangeAction
enum),member(the column, measure, dimension column or judged field, wheresubject
names the mart or entity holding it) andadvice(per-target advice as
(target, sentence)pairs). A program showing a plan in another language, or grouped by
column, no longer reads them offdetail's English, and a new mart column reported as a
flattened column and as a dimension carries onememberin both.bloomery plan --format jsoncarries the three fields. (#383)
Changed
-
A
per_unitfield can be read through a chain of many-to-one relationships, not
only one: a marketplace sale reading the product's unit cost through its item compiles,
and each mart reads the column it flattened the cost into. A hop read one-to-many, from
a parent to its children, anywhere in the chain still refuses it, and a refusal now
names the chain it was reached by rather than "no declared relationship". (#382) -
Change.detailno longer carries the dbt full-refresh advice. A field added to,
dropped from or renamed on an incremental entity used to end itsdetailwith; on dbt, run …; that sentence is now inadviceunderdbt, so a project shipped to SQLMesh is
not told to run a dbt command. A reader matching the olddetailtext must read
advice.bloomery plan's text output still prints it after the sentence. A flattened
mart column whose type alone moved now readsflattened column '…' retyped, with the two
types inold/new, and a newquarantine:block readsquarantine block added;
both readchangedbefore. (#383)
Fixed
-
Lineage through a step no longer shows a column named after the step's output.
Given the step registry, a step feeds only the columns its manifest produces, so a
walk or a rendered graph no longer carriescustomer_profile.profilebeside
customer_profile.segment. Without a registry, as inbloomery lineage, that node
is still the step's one out-edge, standing for the whole relation it writes. In
timeline(), a change to aquality:rule a wiring declares on its output is now
reported on the step's node. (#381) -
A field one mapping reads and another sets as a constant no longer refuses the merge.
On a merged entity in the quality system, the reading mapping's implicitcoercible
rule was taken for aquality:disagreement with the constant, which has no rule to
agree with, and nothing either mapping declared could fix it. The rule now applies to
the reading source's rows only. (#386)