From 55b6fca9c9bc989b7f15e900e8b66b6047e3afd8 Mon Sep 17 00:00:00 2001 From: Milan Bariya <52292922+MilanBariya@users.noreply.github.com> Date: Fri, 13 May 2022 16:11:43 +0530 Subject: [PATCH] Fix #4924: Clickhouse view lineage (#4929) * Fix: Clickhouse view lineage * Fix: Clickhouse view lineage * Fix: Clickhouse view lineage --- .../metadata/ingestion/source/clickhouse.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/ingestion/src/metadata/ingestion/source/clickhouse.py b/ingestion/src/metadata/ingestion/source/clickhouse.py index 21fd1a24d45..f818864f3e4 100644 --- a/ingestion/src/metadata/ingestion/source/clickhouse.py +++ b/ingestion/src/metadata/ingestion/source/clickhouse.py @@ -19,6 +19,9 @@ from sqlalchemy import util as sa_util from sqlalchemy.engine import reflection from sqlalchemy.util import warn +from metadata.generated.schema.entity.services.connections.database.clickhouseConnection import ( + ClickhouseConnection, +) from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import ( OpenMetadataConnection, ) @@ -136,15 +139,23 @@ def get_table_comment(self, connection, table_name, schema=None, **kw): return {"text": None} +@reflection.cache +def get_view_definition(self, connection, view_name, schema=None, **kw): + try: + query = f"select create_table_query from system.tables where engine = 'View' and name='{view_name}' and database='{schema}'" + result = connection.execute(query) + view_definition = result.fetchone() + return view_definition[0] if view_definition else "" + except Exception: + return "" + + ClickHouseDialect.get_unique_constraints = get_unique_constraints ClickHouseDialect.get_pk_constraint = get_pk_constraint ClickHouseDialect._get_column_type = _get_column_type ClickHouseDialect.get_table_comment = get_table_comment RequestsTransport.execute = execute - -from metadata.generated.schema.entity.services.connections.database.clickhouseConnection import ( - ClickhouseConnection, -) +ClickHouseDialect.get_view_definition = get_view_definition class ClickhouseSource(SQLSource):