You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"""A property to extract entity relationships from a SQL Server database."""
76
-
return"""SELECT
77
-
tc.table_schema AS EntitySchema,
78
-
tc.table_name AS Entity,
79
-
rc.unique_constraint_schema AS ForeignEntitySchema,
80
-
rc.unique_constraint_name AS ForeignEntityConstraint,
81
-
rc.constraint_name AS ForeignKeyConstraint
75
+
"""A property to extract entity relationships from Databricks Unity Catalog."""
76
+
returnf"""SELECT
77
+
fk_schema.TABLE_SCHEMA AS EntitySchema,
78
+
fk_tab.TABLE_NAME AS Entity,
79
+
pk_schema.TABLE_SCHEMA AS ForeignEntitySchema,
80
+
pk_tab.TABLE_NAME AS ForeignEntity,
81
+
fk_col.COLUMN_NAME AS [Column],
82
+
pk_col.COLUMN_NAME AS ForeignColumn
82
83
FROM
83
-
information_schema.referential_constraints rc
84
-
JOIN
85
-
information_schema.table_constraints tc
86
-
ON rc.constraint_schema = tc.constraint_schema
87
-
AND rc.constraint_name = tc.constraint_name
84
+
INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS fk
85
+
INNER JOIN
86
+
INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS fkc
87
+
ON fk.constraint_name = fkc.constraint_name
88
+
INNER JOIN
89
+
INFORMATION_SCHEMA.TABLES AS fk_tab
90
+
ON fk_tab.TABLE_NAME = fkc.TABLE_NAME AND fk_tab.TABLE_SCHEMA = fkc.TABLE_SCHEMA
91
+
INNER JOIN
92
+
INFORMATION_SCHEMA.SCHEMATA AS fk_schema
93
+
ON fk_tab.TABLE_SCHEMA = fk_schema.TABLE_SCHEMA
94
+
INNER JOIN
95
+
INFORMATION_SCHEMA.TABLES AS pk_tab
96
+
ON pk_tab.TABLE_NAME = fkc.referenced_TABLE_NAME AND pk_tab.TABLE_SCHEMA = fkc.referenced_TABLE_SCHEMA
97
+
INNER JOIN
98
+
INFORMATION_SCHEMA.SCHEMATA AS pk_schema
99
+
ON pk_tab.TABLE_SCHEMA = pk_schema.TABLE_SCHEMA
100
+
INNER JOIN
101
+
INFORMATION_SCHEMA.COLUMNS AS fk_col
102
+
ON fkc.COLUMN_NAME = fk_col.COLUMN_NAME AND fkc.TABLE_NAME = fk_col.TABLE_NAME AND fkc.TABLE_SCHEMA = fk_col.TABLE_SCHEMA
103
+
INNER JOIN
104
+
INFORMATION_SCHEMA.COLUMNS AS pk_col
105
+
ON fkc.referenced_COLUMN_NAME = pk_col.COLUMN_NAME AND fkc.referenced_TABLE_NAME = pk_col.TABLE_NAME AND fkc.referenced_TABLE_SCHEMA = pk_col.TABLE_SCHEMA
"""A property to extract entity relationships from a SQL Server database."""
88
88
return"""SELECT
89
-
fk_schema.name AS EntitySchema,
90
-
fk_tab.name AS Entity,
91
-
pk_schema.name AS ForeignEntitySchema,
92
-
pk_tab.name AS ForeignEntity,
93
-
fk_col.name AS [Column],
94
-
pk_col.name AS ForeignColumn
89
+
fk_schema.schema_name AS EntitySchema,
90
+
fk_tab.table_name AS Entity,
91
+
pk_schema.schema_name AS ForeignEntitySchema,
92
+
pk_tab.table_name AS ForeignEntity,
93
+
fk_col.column_name AS [Column],
94
+
pk_col.column_name AS ForeignColumn
95
95
FROM
96
-
sys.foreign_keys AS fk
96
+
INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS fk
97
97
INNER JOIN
98
-
sys.foreign_key_columns AS fkc ON fk.object_id = fkc.constraint_object_id
98
+
INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS fkc
99
+
ON fk.constraint_name = fkc.constraint_name
99
100
INNER JOIN
100
-
sys.tables AS fk_tab ON fk_tab.object_id = fk.parent_object_id
101
+
INFORMATION_SCHEMA.TABLES AS fk_tab
102
+
ON fk_tab.table_name = fkc.table_name AND fk_tab.table_schema = fkc.table_schema
101
103
INNER JOIN
102
-
sys.schemas AS fk_schema ON fk_tab.schema_id = fk_schema.schema_id
104
+
INFORMATION_SCHEMA.SCHEMATA AS fk_schema
105
+
ON fk_tab.table_schema = fk_schema.schema_name
103
106
INNER JOIN
104
-
sys.tables AS pk_tab ON pk_tab.object_id = fk.referenced_object_id
107
+
INFORMATION_SCHEMA.TABLES AS pk_tab
108
+
ON pk_tab.table_name = fkc.referenced_table_name AND pk_tab.table_schema = fkc.referenced_table_schema
105
109
INNER JOIN
106
-
sys.schemas AS pk_schema ON pk_tab.schema_id = pk_schema.schema_id
110
+
INFORMATION_SCHEMA.SCHEMATA AS pk_schema
111
+
ON pk_tab.table_schema = pk_schema.schema_name
107
112
INNER JOIN
108
-
sys.columns AS fk_col ON fkc.parent_object_id = fk_col.object_id AND fkc.parent_column_id = fk_col.column_id
113
+
INFORMATION_SCHEMA.COLUMNS AS fk_col
114
+
ON fkc.column_name = fk_col.column_name AND fkc.table_name = fk_col.table_name AND fkc.table_schema = fk_col.table_schema
109
115
INNER JOIN
110
-
sys.columns AS pk_col ON fkc.referenced_object_id = pk_col.object_id AND fkc.referenced_column_id = pk_col.column_id
116
+
INFORMATION_SCHEMA.COLUMNS AS pk_col
117
+
ON fkc.referenced_column_name = pk_col.column_name AND fkc.referenced_table_name = pk_col.table_name AND fkc.referenced_table_schema = pk_col.table_schema
0 commit comments