@@ -84,17 +84,21 @@ def _query(self, query: str) -> List[Dict]:
84
84
query = sqlglot .parse_one (query , dialect = "snowflake" ).sql (
85
85
dialect = self .fivetran_log_config .destination_platform , pretty = True
86
86
)
87
- logger .debug (f"Query : { query } " )
87
+ logger .info (f"Executing query : { query } " )
88
88
resp = self .engine .execute (query )
89
89
return [row for row in resp ]
90
90
91
- def _get_column_lineage_metadata (self ) -> Dict [Tuple [str , str ], List ]:
91
+ def _get_column_lineage_metadata (
92
+ self , connector_ids : List [str ]
93
+ ) -> Dict [Tuple [str , str ], List ]:
92
94
"""
93
95
Returns dict of column lineage metadata with key as (<SOURCE_TABLE_ID>, <DESTINATION_TABLE_ID>)
94
96
"""
95
97
all_column_lineage = defaultdict (list )
96
98
column_lineage_result = self ._query (
97
- self .fivetran_log_query .get_column_lineage_query ()
99
+ self .fivetran_log_query .get_column_lineage_query (
100
+ connector_ids = connector_ids
101
+ )
98
102
)
99
103
for column_lineage in column_lineage_result :
100
104
key = (
@@ -104,13 +108,13 @@ def _get_column_lineage_metadata(self) -> Dict[Tuple[str, str], List]:
104
108
all_column_lineage [key ].append (column_lineage )
105
109
return dict (all_column_lineage )
106
110
107
- def _get_table_lineage_metadata (self ) -> Dict [str , List ]:
111
+ def _get_table_lineage_metadata (self , connector_ids : List [ str ] ) -> Dict [str , List ]:
108
112
"""
109
113
Returns dict of table lineage metadata with key as 'CONNECTOR_ID'
110
114
"""
111
115
connectors_table_lineage_metadata = defaultdict (list )
112
116
table_lineage_result = self ._query (
113
- self .fivetran_log_query .get_table_lineage_query ()
117
+ self .fivetran_log_query .get_table_lineage_query (connector_ids = connector_ids )
114
118
)
115
119
for table_lineage in table_lineage_result :
116
120
connectors_table_lineage_metadata [
@@ -224,8 +228,9 @@ def get_user_email(self, user_id: str) -> Optional[str]:
224
228
return self ._get_users ().get (user_id )
225
229
226
230
def _fill_connectors_lineage (self , connectors : List [Connector ]) -> None :
227
- table_lineage_metadata = self ._get_table_lineage_metadata ()
228
- column_lineage_metadata = self ._get_column_lineage_metadata ()
231
+ connector_ids = [connector .connector_id for connector in connectors ]
232
+ table_lineage_metadata = self ._get_table_lineage_metadata (connector_ids )
233
+ column_lineage_metadata = self ._get_column_lineage_metadata (connector_ids )
229
234
for connector in connectors :
230
235
connector .lineage = self ._extract_connector_lineage (
231
236
table_lineage_result = table_lineage_metadata .get (connector .connector_id ),
@@ -254,20 +259,25 @@ def get_allowed_connectors_list(
254
259
logger .info ("Fetching connector list" )
255
260
connector_list = self ._query (self .fivetran_log_query .get_connectors_query ())
256
261
for connector in connector_list :
257
- if not connector_patterns .allowed (connector [Constant .CONNECTOR_NAME ]):
258
- report .report_connectors_dropped (connector [Constant .CONNECTOR_NAME ])
262
+ connector_name = connector [Constant .CONNECTOR_NAME ]
263
+ if not connector_patterns .allowed (connector_name ):
264
+ report .report_connectors_dropped (connector_name )
259
265
continue
260
- if not destination_patterns .allowed (connector [Constant .DESTINATION_ID ]):
261
- report .report_connectors_dropped (connector [Constant .CONNECTOR_NAME ])
266
+ if not destination_patterns .allowed (
267
+ destination_id := connector [Constant .DESTINATION_ID ]
268
+ ):
269
+ report .report_connectors_dropped (
270
+ f"{ connector_name } (destination_id: { destination_id } )"
271
+ )
262
272
continue
263
273
connectors .append (
264
274
Connector (
265
275
connector_id = connector [Constant .CONNECTOR_ID ],
266
- connector_name = connector [ Constant . CONNECTOR_NAME ] ,
276
+ connector_name = connector_name ,
267
277
connector_type = connector [Constant .CONNECTOR_TYPE_ID ],
268
278
paused = connector [Constant .PAUSED ],
269
279
sync_frequency = connector [Constant .SYNC_FREQUENCY ],
270
- destination_id = connector [ Constant . DESTINATION_ID ] ,
280
+ destination_id = destination_id ,
271
281
user_id = connector [Constant .CONNECTING_USER_ID ],
272
282
lineage = [], # filled later
273
283
jobs = [], # filled later
@@ -279,6 +289,7 @@ def get_allowed_connectors_list(
279
289
# we push down connector id filters.
280
290
logger .info ("No allowed connectors found" )
281
291
return []
292
+ logger .info (f"Found { len (connectors )} allowed connectors" )
282
293
283
294
with report .metadata_extraction_perf .connectors_lineage_extraction_sec :
284
295
logger .info ("Fetching connector lineage" )
0 commit comments