99DATABASE_PARENT_ID = os .environ ['DATABASE_PARENT_ID' ]
1010DATABASE_NAME = os .environ ['DATABASE_NAME' ]
1111NOTION_TOKEN = os .environ ['NOTION_TOKEN' ]
12+ NUMERIC_ZERO_VALUE = - 1
1213
1314
1415def make_request (endpoint , querystring = '' , method = 'GET' , ** request_kwargs ):
@@ -40,6 +41,38 @@ def get_path_or_empty(parent_object, path_array, zero_value=''):
4041 return obj
4142
4243
44+ def get_num_rows (catalog_nodes , model_name ):
45+ zero_value = NUMERIC_ZERO_VALUE
46+ keys = ['num_rows' , 'row_count' ]
47+ for key in keys :
48+ num_rows = get_path_or_empty (catalog_nodes , [model_name , 'stats' , key , 'value' ], NUMERIC_ZERO_VALUE )
49+ if num_rows != NUMERIC_ZERO_VALUE :
50+ return num_rows
51+
52+ return NUMERIC_ZERO_VALUE
53+
54+
55+ def get_bytes (catalog_nodes , model_name ):
56+ zero_value = NUMERIC_ZERO_VALUE
57+ keys = ['num_bytes' , 'bytes' ]
58+ for key in keys :
59+ num_rows = get_path_or_empty (catalog_nodes , [model_name , 'stats' , key , 'value' ], NUMERIC_ZERO_VALUE )
60+ if num_rows != NUMERIC_ZERO_VALUE :
61+ return num_rows
62+
63+ return NUMERIC_ZERO_VALUE
64+
65+
66+ def get_owner (data , catalog_nodes , model_name ):
67+ # Check for an owner field explicitly named in the DBT Config
68+ # If none present, fall back to database table owner
69+ owner = get_path_or_empty (data , ['config' , 'meta' , 'owner' ], None )
70+ if owner != None :
71+ return owner
72+
73+ return get_path_or_empty (catalog_nodes , [model_name , 'metadata' , 'owner' ], '' )
74+
75+
4376def main ():
4477 model_records_to_write = sys .argv [1 :] # 'all' or list of model names
4578 print (f'Model records to write: { model_records_to_write } ' )
@@ -378,7 +411,7 @@ def main():
378411 {
379412 "text" : {
380413 "content" : str (
381- get_path_or_empty ( catalog_nodes , [ model_name , 'metadata' , 'owner' ], '' )
414+ get_owner ( data , catalog_nodes , model_name )
382415 )[:2000 ]
383416 }
384417 }
@@ -394,10 +427,10 @@ def main():
394427 ]
395428 },
396429 "Approx Rows" : {
397- "number" : get_path_or_empty (catalog_nodes , [ model_name , 'stats' , 'num_rows' , 'value' ], - 1 )
430+ "number" : get_num_rows (catalog_nodes , model_name )
398431 },
399432 "Approx GB" : {
400- "number" : get_path_or_empty (catalog_nodes , [ model_name , 'stats' , 'num_bytes' , 'value' ], - 1 ) / 1e9
433+ "number" :get_bytes (catalog_nodes , model_name ) / 1e9
401434 },
402435 "Depends On" : {
403436 "rich_text" : [
0 commit comments