11from dataikuapi .utils import DataikuException
22from rest_api_client import RestAPIClient
33from safe_logger import SafeLogger
4- from dku_utils import parse_keys_for_json
4+ from dku_utils import parse_keys_for_json , get_value_from_path
55from dku_constants import DKUConstants
66import copy
77import json
@@ -23,6 +23,7 @@ def __init__(self, custom_key_values, credential_parameters, endpoint_parameters
2323 self .display_metadata = display_metadata
2424 self .maximum_number_rows = maximum_number_rows
2525 self .is_row_limit = (self .maximum_number_rows > 0 )
26+ self .can_raise = False
2627
2728 @staticmethod
2829 def get_column_to_parameter_dict (parameter_columns , parameter_renamings ):
@@ -68,9 +69,13 @@ def retrieve_next_page(self, is_raw_output):
6869 metadata = self .client .get_metadata () if self .display_metadata else {}
6970 is_api_returning_dict = True
7071 if self .extraction_key :
71- data_rows = json_response . get ( self .extraction_key , [ json_response ] )
72+ data_rows = get_value_from_path ( json_response , self .extraction_key . split ( "." ), can_raise = False )
7273 if data_rows is None :
73- raise DataikuException ("Extraction key '{}' was not found in the incoming data" .format (self .extraction_key ))
74+ error_message = "Extraction key '{}' was not found in the incoming data" .format (self .extraction_key )
75+ if self .can_raise :
76+ raise DataikuException (error_message )
77+ else :
78+ return [{"error" : error_message }]
7479 page_rows .extend (self .format_page_rows (data_rows , is_raw_output , metadata ))
7580 else :
7681 # Todo: check api_response key is free and add something overwise
0 commit comments