1.4. REDLIN - Exploring Lineage Graphs¶
In all examples a view TEST_S.TEST_V is releated to a given sql. The lineage is given as diagram and as csv.
1.4.1. Simple SQL¶
1select a,a as b, a as "b", a as c, a as d, a as e, a as f, a as g
2from test_s.test_t
3where b=10
4group by b
5order by b
1.4.1.1. Diagram¶
graph LR
TEST_T.A --> TEST_V.A["TEST_V.A<br> <i><small>TEST_T.A AS A</small></i>"]
TEST_T.A --> TEST_V.C["TEST_V.C<br> <i><small>TEST_T.A AS C</small></i>"]
TEST_T.A --> TEST_V.D["TEST_V.D<br> <i><small>TEST_T.A AS D</small></i>"]
TEST_T.A --> TEST_V.E["TEST_V.E<br> <i><small>TEST_T.A AS E</small></i>"]
TEST_T.A --> TEST_V.F["TEST_V.F<br> <i><small>TEST_T.A AS F</small></i>"]
TEST_T.A --> TEST_V.G["TEST_V.G<br> <i><small>TEST_T.A AS G</small></i>"]
TEST_T.A --> TEST_V.b["TEST_V.b<br> <i><small>TEST_T.A AS b</small></i>"]
1.4.1.2. Table¶
TABLE |
NAME |
REFERENCED_TABLE |
REFERENCED_NAME |
EXPRESSION |
SCHEMA |
REFERENCED_SCHEMA |
REFERENCED_ITEM_ID |
REFERENCED_INSTANCE |
REFERENCED_SYSTEM_NAME |
REFERENCED_COLUMN_DATATYPE |
REFERENCED_OBJECT_TYPE |
VERSION_ID |
ITEM_ID |
EXPRESSION_ID |
INSTANCE |
SYSTEM_NAME |
COLUMN_DATATYPE |
OBJECT_TYPE |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TEST_V |
A |
TEST_T |
A |
TEST_T.A AS A |
TEST_S |
TEST_S |
1e2d9a2ab50f614669a0970ae4eafa1d |
test |
test |
VARCHAR(10) |
TABLE |
2026-06-30 |
13ec829ae54fba0abef07a01f1c63054 |
20a9976e546e97d5567b729d757c5fb8 |
test |
test |
VARCHAR(10) |
VIEW |
TEST_V |
C |
TEST_T |
A |
TEST_T.A AS C |
TEST_S |
TEST_S |
1e2d9a2ab50f614669a0970ae4eafa1d |
test |
test |
VARCHAR(10) |
TABLE |
2026-06-30 |
d2361f1201028d81fd4cd0e52f1a0707 |
f1dedafe724ca0b1af3c0de0cac9332a |
test |
test |
DECIMAL(2,0) |
VIEW |
TEST_V |
D |
TEST_T |
A |
TEST_T.A AS D |
TEST_S |
TEST_S |
1e2d9a2ab50f614669a0970ae4eafa1d |
test |
test |
VARCHAR(10) |
TABLE |
2026-06-30 |
008c32f57c4ebd8b58ac08bdc72aa64b |
65ce126b70c1205d8ffb573975a5316b |
test |
test |
DECIMAL(2,0) |
VIEW |
TEST_V |
E |
TEST_T |
A |
TEST_T.A AS E |
TEST_S |
TEST_S |
1e2d9a2ab50f614669a0970ae4eafa1d |
test |
test |
VARCHAR(10) |
TABLE |
2026-06-30 |
c11bf10cd272b845f506ff898a0f4a28 |
535ae1b55b1af28b7632b408acc20c20 |
test |
test |
DATE |
VIEW |
TEST_V |
F |
TEST_T |
A |
TEST_T.A AS F |
TEST_S |
TEST_S |
1e2d9a2ab50f614669a0970ae4eafa1d |
test |
test |
VARCHAR(10) |
TABLE |
2026-06-30 |
4decc2ba35f6c74cedd22c9e90091c89 |
ce73922b146af340994f2206b27b01e8 |
test |
test |
DATE |
VIEW |
TEST_V |
G |
TEST_T |
A |
TEST_T.A AS G |
TEST_S |
TEST_S |
1e2d9a2ab50f614669a0970ae4eafa1d |
test |
test |
VARCHAR(10) |
TABLE |
2026-06-30 |
763b3871b6b5d7fa5b91748aa719d946 |
c88ce7772672deecea8ec2ac6630a146 |
test |
test |
DATE |
VIEW |
TEST_V |
b |
TEST_T |
A |
TEST_T.A AS “b” |
TEST_S |
TEST_S |
1e2d9a2ab50f614669a0970ae4eafa1d |
test |
test |
VARCHAR(10) |
TABLE |
2026-06-30 |
5e70bf215d57a883e3ef2eb53f4a9122 |
2136e31f00e42149333a9e666980dab5 |
test |
test |
VARCHAR(10) |
VIEW |
1.4.1.3. Explanations/Remarks¶
For each column in the view test_s.test.v a row was generated pointing to test_s.test_t.a.
Lower case column name was propagated correctly.
Columns from where, group by or order by are not part of the lineage.
1.4.2. Analytic Functions¶
1select max(a) over(partition by b order by c) as a,
2 b as "b",a as c,a as d,a as e,b as f,b as g
3from test_t
1.4.2.1. Diagram¶
graph LR
TEST_T.A --> TEST_V.A["TEST_V.A<br> <i><small>MAX(TEST_T.A) OVER (PARTITION BY TEST_T.B ORDER BY C NULLS LAST) AS A</small></i>"]
TEST_T.B --> TEST_V.A["TEST_V.A<br> <i><small>MAX(TEST_T.A) OVER (PARTITION BY TEST_T.B ORDER BY C NULLS LAST) AS A</small></i>"]
TEST_V.C --> TEST_V.A["TEST_V.A<br> <i><small>MAX(TEST_T.A) OVER (PARTITION BY TEST_T.B ORDER BY C NULLS LAST) AS A</small></i>"]
TEST_T.A --> TEST_V.C["TEST_V.C<br> <i><small>TEST_T.A AS C</small></i>"]
TEST_T.A --> TEST_V.D["TEST_V.D<br> <i><small>TEST_T.A AS D</small></i>"]
TEST_T.A --> TEST_V.E["TEST_V.E<br> <i><small>TEST_T.A AS E</small></i>"]
TEST_T.B --> TEST_V.F["TEST_V.F<br> <i><small>TEST_T.B AS F</small></i>"]
TEST_T.B --> TEST_V.G["TEST_V.G<br> <i><small>TEST_T.B AS G</small></i>"]
TEST_T.B --> TEST_V.b["TEST_V.b<br> <i><small>TEST_T.B AS b</small></i>"]
1.4.2.2. Table¶
TABLE |
NAME |
REFERENCED_TABLE |
REFERENCED_NAME |
EXPRESSION |
|---|---|---|---|---|
TABLE |
NAME |
REFERENCED_TABLE |
REFERENCED_NAME |
EXPRESSION |
TEST_V |
A |
TEST_T |
A |
MAX(TEST_T.A) OVER (PARTITION BY TEST_T.B ORDER BY C NULLS LAST) AS A |
TEST_V |
A |
TEST_T |
B |
MAX(TEST_T.A) OVER (PARTITION BY TEST_T.B ORDER BY C NULLS LAST) AS A |
TEST_V |
A |
TEST_V |
C |
MAX(TEST_T.A) OVER (PARTITION BY TEST_T.B ORDER BY C NULLS LAST) AS A |
TEST_V |
C |
TEST_T |
A |
TEST_T.A AS C |
TEST_V |
D |
TEST_T |
A |
TEST_T.A AS D |
TEST_V |
E |
TEST_T |
A |
TEST_T.A AS E |
TEST_V |
F |
TEST_T |
B |
TEST_T.B AS F |
TEST_V |
G |
TEST_T |
B |
TEST_T.B AS G |
TEST_V |
b |
TEST_T |
B |
TEST_T.B AS “b” |
1.4.2.3. Explanations/Remarks¶
TEST_V.A depends on A,B,C