Skip to content

Commit d06980f

Browse files
authored
fix(ingest/snowflake): handle empty snowflake column upstreams (#12207)
1 parent 0562c7a commit d06980f

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

metadata-ingestion/src/datahub/ingestion/source/snowflake/snowflake_lineage_v2.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from datetime import datetime
55
from typing import Any, Collection, Iterable, List, Optional, Set, Tuple, Type
66

7-
from pydantic import BaseModel, validator
7+
from pydantic import BaseModel, Field, validator
88

99
from datahub.configuration.datetimes import parse_absolute_time
1010
from datahub.ingestion.api.closeable import Closeable
@@ -72,8 +72,8 @@ class ColumnUpstreamJob(BaseModel):
7272

7373

7474
class ColumnUpstreamLineage(BaseModel):
75-
column_name: str
76-
upstreams: List[ColumnUpstreamJob]
75+
column_name: Optional[str]
76+
upstreams: List[ColumnUpstreamJob] = Field(default_factory=list)
7777

7878

7979
class UpstreamTableNode(BaseModel):

metadata-ingestion/tests/unit/snowflake/test_snowflake_source.py

+24
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
DEFAULT_TEMP_TABLES_PATTERNS,
1919
SnowflakeV2Config,
2020
)
21+
from datahub.ingestion.source.snowflake.snowflake_lineage_v2 import UpstreamLineageEdge
2122
from datahub.ingestion.source.snowflake.snowflake_query import (
2223
SnowflakeQuery,
2324
create_deny_regex_sql_filter,
@@ -664,3 +665,26 @@ def test_create_snowsight_base_url_ap_northeast_1():
664665

665666
def test_snowflake_utils() -> None:
666667
assert_doctest(datahub.ingestion.source.snowflake.snowflake_utils)
668+
669+
670+
def test_snowflake_query_result_parsing():
671+
db_row = {
672+
"DOWNSTREAM_TABLE_NAME": "db.schema.downstream_table",
673+
"DOWNSTREAM_TABLE_DOMAIN": "Table",
674+
"UPSTREAM_TABLES": [
675+
{
676+
"query_id": "01b92f61-0611-c826-000d-0103cf9b5db7",
677+
"upstream_object_domain": "Table",
678+
"upstream_object_name": "db.schema.upstream_table",
679+
}
680+
],
681+
"UPSTREAM_COLUMNS": [{}],
682+
"QUERIES": [
683+
{
684+
"query_id": "01b92f61-0611-c826-000d-0103cf9b5db7",
685+
"query_text": "Query test",
686+
"start_time": "2022-12-01 19:56:34",
687+
}
688+
],
689+
}
690+
assert UpstreamLineageEdge.parse_obj(db_row)

0 commit comments

Comments
 (0)