Replies: 7 comments 3 replies
-
|
I think the direction of travel looks sound! could the operator be as simple as |
Beta Was this translation helpful? Give feedback.
-
|
End of day here, but I'll try. I like the concept so long as it's additive. I think there's some non-trivial semantics to consider: Consider coming from Data Ops, vs coming from systems mapping or network graph. Reflection: I personally do like the char arrow syntax. |
Beta Was this translation helpful? Give feedback.
-
|
Love this! A lot of time dependencies are strictly inferred from the FKs to be on the safe side, which isn't always necessary for processing order dependencies, especially in non-enforced FK environments, creating unnecessary delays. If I could have my pick of syntax, I would use ">>" and "<<"; I feel it is a better indication of flow/movement. "upstream" >> "downstream". And if I really want to be pedantic, "->" is one modified key (requires shift) and one regular key (First world problems, I know 😄). Are there any planned visualizations for dependencies? E.g., Dotted lines? |
Beta Was this translation helpful? Give feedback.
-
|
Naming Direction operator Custom / additional attributes For Dep in particular: is there anything you need on top of that thread for a first version, or should Dep stay minimal until custom attributes land? I need to show the data flow, including any calculation or aggregation that occurred between a source table and a dependent table (the transformation and/or filters). In fact, I'm attempting to use DBDiagram.io for this exact purpose to keep a better programmatic version of lineage, and would use this type of capability immediately. |
Beta Was this translation helpful? Give feedback.
-
|
r |
Beta Was this translation helpful? Give feedback.
-
|
Naming: Dep is fine |
Beta Was this translation helpful? Give feedback.
-
|
Naming I am not sure My background is data integration. I tried using dbdiagram for data flow diagrams and mostly failed. Having dependency functionality would make a huge difference for me |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi everyone — we’re exploring a DBML language extension to capture data lineage / transformation dependencies directly in DBML, alongside the existing ER relationships (
Ref). We’d love feedback from the community before we formalize and implement it.Motivation
DBML today is decent for schema modeling (tables, columns, refs). However, in many analytics / data engineering workflows (ELT/ETL, marts, semantic layers), we also need to describe:
raw_orders.user_id→stg_orders.user_id)stg_ordersfeedsfct_orders)This information is usually stored elsewhere (SQL, docs, YAML, pipeline tools), which makes lineage hard to keep in sync with the canonical model.
We want DBML to optionally describe data dependencies without conflating them with foreign key relationships.
Goals
Depseparate fromRef(FK relationships) to avoid overloading meaning.Non-goals (for the initial version)
Proposed syntax
The syntax will contains two parts:
Lineage levels
1) Table-level dependency
Declares a high-level DAG edge between entities:
2) Column-level dependency
Declares a mapping from one output column to one or more input columns.
The simplest form is a single mapping:
For multi-source transforms (many-to-one), you declare multiple mappings that share the same downstream table (typically in long form; see below).
Syntax forms
1) Short form
Best for quickly sketching table-level dependencies:
2) Long form
Long form is useful when:
3) Inline form (on tables/columns)
For teams that prefer keeping lineage near the schema definition, column-level lineage can be expressed inline on the target side (using
<-):Or inline on the source side (using
->):Inline forms don't support note or custom attributes, similar to
Ref.Notes
Compatibility & impact
Depcan either ignore it (best-effort) or treat as unknown (depending on implementation choice; we’ll aim for graceful ignoring where possible).Open questions for feedback
Dep,Dependency, or something else?Depwith->for data flow (upstream → downstream). What operator(s) would you prefer forDep, and why? (e.g. stick with->, or alternatives such as=>,~>, etc.)Depin particular: is there anything you need on top of that thread for a first version, or shouldDepstay minimal until custom attributes land?💬 We’d love your thoughts — especially from folks using DBML for analytics engineering or maintaining large transformation graphs.
Beta Was this translation helpful? Give feedback.
All reactions