Implementation:TobikoData Sqlmesh ColumnLevel Help
| Knowledge Sources | |
|---|---|
| Domains | Web_UI, Lineage_Visualization |
| Last Updated | 2026-02-07 20:00 GMT |
Overview
Utility functions for processing column-level lineage adjacency lists and calculating column display dimensions.
Description
ColumnLevel_Help provides a collection of pure functions for transforming and analyzing column-level lineage data structures. Key functions include getAdjacencyListKeysFromColumnLineage which extracts all model names from lineage data, getEdgesFromColumnLineage which generates graph edges for column-to-column connections, and getConnectedColumnsIDs which identifies all columns participating in lineage relationships. The module also includes dimension calculation functions for determining node heights based on the number of selected columns, displayed columns, and UI element spacing (borders, separators, padding).
Usage
Use these helper functions when processing column-level lineage data for visualization, when constructing graph structures from adjacency lists, or when calculating dynamic node dimensions based on column counts and UI layout constraints.
Code Reference
Source Location
- Repository: TobikoData_Sqlmesh
- File: web/common/src/components/Lineage/LineageColumnLevel/help.ts
Signature
export const MAX_COLUMNS_TO_DISPLAY = 5
export function getAdjacencyListKeysFromColumnLineage<
TAdjacencyListKey extends string,
TAdjacencyListColumnKey extends string,
TColumnLevelLineageAdjacencyList extends ColumnLevelLineageAdjacencyList<...> = ...
>(columnLineage: TColumnLevelLineageAdjacencyList): TAdjacencyListKey[]
export function getEdgesFromColumnLineage<...>({
columnLineage,
transformEdge,
}): LineageEdge<...>[]
export function getConnectedColumnsIDs<...>(adjacencyList: TColumnLevelLineageAdjacencyList): Set<TColumnID>
export function calculateNodeColumnsCount(columnsCount?: number): number
export function calculateSelectedColumnsHeight(selectedColumnsCount?: number): number
export function calculateColumnsHeight({
columnsCount,
hasColumnsFilter,
}: {
columnsCount: number
hasColumnsFilter?: boolean
}): number
Import
import {
MAX_COLUMNS_TO_DISPLAY,
getAdjacencyListKeysFromColumnLineage,
getEdgesFromColumnLineage,
getConnectedColumnsIDs,
calculateNodeColumnsCount,
calculateSelectedColumnsHeight,
calculateColumnsHeight,
} from '@sqlmesh-common/components/Lineage/LineageColumnLevel/help'
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| columnLineage | TColumnLevelLineageAdjacencyList | Yes | Adjacency list representing column-level lineage |
| transformEdge | TransformEdgeFn | Yes (for getEdgesFromColumnLineage) | Function to transform edge data |
| columnsCount | number | No | Number of columns to calculate dimensions for |
| selectedColumnsCount | number | No | Number of selected columns |
| hasColumnsFilter | boolean | No | Whether column filter UI is present (default: true) |
Outputs
| Name | Type | Description |
|---|---|---|
| adjacencyListKeys | TAdjacencyListKey[] | Array of all model names in lineage |
| edges | LineageEdge[] | Array of graph edges representing column connections |
| connectedColumns | Set<TColumnID> | Set of all column IDs participating in lineage |
| displayCount | number | Limited count of columns to display (max 5) |
| height | number | Calculated height in pixels for UI elements |
Usage Examples
// Extract model names from column lineage
const modelNames = getAdjacencyListKeysFromColumnLineage(columnLineage)
// Returns: ['model1', 'model2', 'model3']
// Generate edges for visualization
const edges = getEdgesFromColumnLineage({
columnLineage: adjacencyList,
transformEdge: (type, id, source, target, sourceHandle, targetHandle) => ({
id,
source,
target,
sourceHandle,
targetHandle,
type,
})
})
// Get all connected columns
const connectedCols = getConnectedColumnsIDs(adjacencyList)
// Returns: Set(['model1.col1', 'model2.col2', ...])
// Calculate display count (limits to 5)
const displayCount = calculateNodeColumnsCount(10) // Returns: 5
// Calculate height for selected columns
const selectedHeight = calculateSelectedColumnsHeight(3)
// Returns: 73 (1 separator + 3 * 24px + 2 * 1px separators)
// Calculate total columns area height
const columnsHeight = calculateColumnsHeight({
columnsCount: 10,
hasColumnsFilter: true
})
// Returns height including padding, separators, and filter