{"id":3504,"date":"2022-02-16T09:38:21","date_gmt":"2022-02-16T08:38:21","guid":{"rendered":"https:\/\/devstage.bix-consulting.com\/?p=3504"},"modified":"2023-05-24T09:42:53","modified_gmt":"2023-05-24T07:42:53","slug":"sap-data-intelligence-geo-enrichment-per-api","status":"publish","type":"post","link":"https:\/\/teststage.bix-consulting.com\/en\/sap-data-intelligence-geo-enrichment-per-api\/","title":{"rendered":"SAP DATA Intelligence: GEO-Enrichment through API"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8220;1&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<p style=\"text-align: justify;\">This blog explains how to use the OpenAPI client in an SAP Data Intelligence data flow. Information about a specific location (point of interest), e.g. geo-coordinates, opening hours, websites are to be obtained with the help of GoogleMaps. It is thus shown how data can be enriched with additional information with the help of APIs.<\/p>\n<p style=\"text-align: justify;\">This blog follows the following structure:<\/p>\n<ol>\n<li style=\"text-align: justify;\">Scenario in SAP Data Intelligence<\/li>\n<li style=\"text-align: justify;\">Requirements<\/li>\n<li style=\"text-align: justify;\">Structure<\/li>\n<li style=\"text-align: justify;\">Execution<\/li>\n<li style=\"text-align: justify;\">Outlook<\/li>\n<\/ol>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<h5>Scenario in SAP Data Intelligence<\/h5>\n<p style=\"text-align: justify;\">SAP Data Intelligence (formerly Data Hub) is offered as a data management and pipeline solution. Data flows for orchestrating and monitoring data can be created flexibly and offer insights into the entire IT landscape through various connection options. In addition, these data flows can be cleansed, filtered, enriched, operationalized and optimized, leaving a solid database that can be leveraged by ML scenarios.<\/p>\n<p style=\"text-align: justify;\">In Pipelines, there are many different operators that can perform the functions mentioned above. A large part of the operators is self-explanatory and easy to handle. However, there are other operators that are not so self-explanatory. One such case is the standard operator \"OpenAPI Client\". We will describe this in more detail with the GeoEnrichment use case.<\/p>\n<p>&nbsp;<\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8220;https:\/\/teststage.bix-consulting.com\/wp-content\/uploads\/2022\/02\/sapdi_1.png&#8220; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][\/et_pb_image][et_pb_text module_id=&#8220;anker-sapdiblog1&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">For this blog, the Google Places API (Application Programming Interface) is to be used with the OpenAPI client. This can provide detailed information for a Place Id (Google internal unique ID).<a href=\"https:\/\/teststage.bix-consulting.com\/en\/sap-data-intelligence-geo-enrichment-per-api\/#anker-sapdiblog\">[1]<\/a><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text module_id=&#8220;anker-sapdiblog2&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<h5>Requirements<\/h5>\n<p style=\"text-align: justify;\">In order to call a Google API, you first need a so-called API Key, with which you identify yourself for each call and are billed via the Google Account after a certain number of calls.<a href=\"https:\/\/teststage.bix-consulting.com\/en\/sap-data-intelligence-geo-enrichment-per-api\/#anker-sapdiblog\">[2],[3]<\/a><\/p>\n<p style=\"text-align: justify;\">In addition, a Place ID must be available. This ID represents a specific location. This can be read with the Google Geocoding API from names and addresses or an example is taken from the documentation. In our case we take a Place ID from the official documentation.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<h5>Structure of the graph<\/h5>\n<p>The structure of the graph takes place as follows:<\/p>\n<ul>\n<li>Python (Alternatively: JavaScript) operator to prepare the input parameters for the OpenAPI client operator.<\/li>\n<li>Optional wiretap to review the input parameters for the OpenAPI Client Operator<\/li>\n<li>OpenAPI Client Operator is the actual heart with the API call<\/li>\n<li>Optional wiretap to review the result of the API call<\/li>\n<\/ul>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_image src=&#8220;https:\/\/teststage.bix-consulting.com\/wp-content\/uploads\/2022\/02\/sapdi_2.png&#8220; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text module_id=&#8220;anker-sapdiblog4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<h5>Calling the OpenAPI Client Operator<\/h5>\n<p style=\"text-align: justify;\">The first step is to configure the OpenAPI Client Operator. We select \"manual\" as the Connection Type to be able to maintain it directly. In productive operation, the connection parameters should be stored in the Connection Manager.<a href=\"https:\/\/teststage.bix-consulting.com\/en\/sap-data-intelligence-geo-enrichment-per-api\/#anker-sapdiblog\">[4]<\/a> In the configuration area of the OpenAPI Client we have to fill Host, Schemes, Base Path, Method and Produces.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_image src=&#8220;https:\/\/teststage.bix-consulting.com\/wp-content\/uploads\/2022\/02\/sapdi_3.png&#8220; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<p style=\"text-align: justify;\">The filling of these fields can be understood with the documentation of the Google Place API already linked above. The figure below reflects an excerpt of the documentation, from which the areas of the URL with their corresponding meaning can be taken.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_image src=&#8220;https:\/\/teststage.bix-consulting.com\/wp-content\/uploads\/2022\/02\/sapdi_4.png&#8220; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][\/et_pb_image][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; text_font_size=&#8220;10px&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<p><span style=\"color: #999999;\"><em>Abbildung 1: Eigene Darstellung in Anlehnung an Google Places Documentation<\/em><\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<p style=\"text-align: justify;\">The \"mandatory field\" API Key Value is not filled directly in the OpenAPI client operator in this example. This is filled in the Python operator so that the input can also be scheduled as a parameter when starting the graph. The API Key Name can be freely chosen and \"header\" must be selected as API Key Type.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text module_id=&#8220;anker-sapdiblog5&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<h5>Python Operator<\/h5>\n<p style=\"text-align: justify;\">This now leads to the Python operator. This operator does not have to be configured or linked to a Dockerfile, but only adapted in the coding.<\/p>\n<p style=\"text-align: justify;\">The OpenAPI client operator processes an input message. This is created in the code of the Python operator with the help of the \"header\" dictionary. The dictionary contains the API key and the place ID that are passed to the OpenAPI client.<\/p>\n<p style=\"text-align: justify;\">The labels...<\/p>\n<p style=\"text-align: justify;\">header[\u201copenapi.query_params.key\u201c] or<br \/>header[\u201copenapi.query_params.place_id\u201c]<\/p>\n<p style=\"text-align: justify;\">follow a certain logic, which can be found in the OpenAPI Client Operator documentation.<a href=\"https:\/\/teststage.bix-consulting.com\/en\/sap-data-intelligence-geo-enrichment-per-api\/#anker-sapdiblog\">[5]<\/a><\/p>\n<p style=\"text-align: justify;\" class=\" translation-block\">Additional header attributes can be used to pass more information for later processing. For example, we passed user and roles. The additional attributes have no influence on the result of the OpenAPI Client Operator and are therefore only passed on, but not processed.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_image src=&#8220;https:\/\/teststage.bix-consulting.com\/wp-content\/uploads\/2022\/02\/sapdi_5.png&#8220; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<p>After realization of the configuration and implementation, the graph can be executed.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<h5>Execution<\/h5>\n<p style=\"text-align: justify;\">Once the graph has been executed, wiretaps can be used to view the various processing steps. The Python operator passes a message to the OpenAPI client operator, which was created from a dictionary in Python (see below). This message is the input to the OpenAPI Client Operator. The wiretap illustrates which information is passed and how. Also, it shows what can help with potential problems.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_image src=&#8220;https:\/\/teststage.bix-consulting.com\/wp-content\/uploads\/2022\/02\/sapdi_6.png&#8220; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<p>Result:<br \/><em>[2022-01-29 13:24:15,480] <\/em><\/p>\n<p><em>{\u201cRole\u201c:\u201cConsultant\u201c, <\/em><em>\u201cUser\u201c:\u201cNordhues\u201d, \u201dopenapi.query_params.key\u201d:\u201dmy_api_key\u201d, \u201dopenapi.query_params.place_id\u201d:\u201dChIJgUbEo8cfqokR5lP9_wh_DaM\u201d}<\/em><\/p>\n<p><em>\u00a0<\/em><\/p>\n<p style=\"text-align: justify;\">The OpenAPI client processes these results and outputs them in the final wiretap. The figure below shows only a small part of the delivered data.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_image src=&#8220;https:\/\/teststage.bix-consulting.com\/wp-content\/uploads\/2022\/02\/sapdi_7.png&#8220; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text module_id=&#8220;anker-sapdiblog6&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<h5>Outlook<\/h5>\n<p style=\"text-align: justify;\">This example should be used as an example for further API's. The structure, after which API's are called, often does not differ. Accordingly, this example can also be used for other API's, for example What3Words.<a href=\"https:\/\/teststage.bix-consulting.com\/en\/sap-data-intelligence-geo-enrichment-per-api\/#anker-sapdiblog\">[6]<\/a> It remains to be said that API guidelines are to be studied in detail, which defaults there are regarding storage and further processing of the API results.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<h5>Error handling<\/h5>\n<p style=\"text-align: justify;\">Further processing of the output string is more complex if we have a scenario where many API calls have to be made. Each OpenAPI client operator processes only single calls at a time, accordingly more operators need to be added in the graph. In addition, error handling functions must be implemented in case the OpenAPI client operator does not find a result.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<h5>Package processing<\/h5>\n<p style=\"text-align: justify;\">In a scenario where a simple graph is to process multiple records, it is necessary to wait until all records are processed before taking further steps. The Python operator initiates an API call for each record (through the OpenAPI Client operator). The step after the OpenAPI Client Operator is thus started for each row individually. Creativity is now required to ensure that all records have been processed and recollected before further steps follow.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<h5>Examples and scenarios<\/h5>\n<p style=\"text-align: justify;\">When using GeoEnrichment API's, you end up with a dataset that has been enriched with geo-data and other information about a specific location. This results in many different use cases. For example, the use of the map functionality in the SAC or distance calculations between different stores.<\/p>\n<p style=\"text-align: justify;\">For example, in the figure below, longitude, latitude, and type of location were read for the three locations. This allows data sets to be built and filtered more granularly, so that sales can be reported by type, for example.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_image src=&#8220;https:\/\/teststage.bix-consulting.com\/wp-content\/uploads\/2022\/02\/sapdi_8.png&#8220; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<p>If you have any questions regarding the conception or implementation of SAP DI, please do not hesitate to contact us.<\/p>\n<p>More information:<\/p>\n<ul>\n<li>Blog SAP Data Intelligence Cloud \u2013 OpenAPI Client Basics: <a href=\"https:\/\/blogs.sap.com\/2021\/09\/13\/sap-data-intelligence-cloud-openapi-client-basics\/\" target=\"_blank\" rel=\"noopener\">https:\/\/blogs.sap.com\/2021\/09\/13\/sap-data-intelligence-cloud-openapi-client-basics\/<\/a><\/li>\n<li>Documentation OpenAPI Client: <a href=\"https:\/\/help.sap.com\/doc\/de49c012b53d476eae7af14497eac256\/2.4.latest\/en-US\/8a70738566e6466eb8d0f7d68be80247.html\" target=\"_blank\" rel=\"noopener\">https:\/\/help.sap.com\/doc\/de49c012b53d476eae7af14497eac256\/2.4.latest\/en-US\/8a70738566e6466eb8d0f7d68be80247.html<\/a><\/li>\n<\/ul>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; border_width_bottom=&#8220;1px&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<p><em>Footnotes<\/em><\/p>\n<p>[\/et_pb_text][et_pb_text module_id=&#8220;anker-sapdiblog&#8220; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<p>1: <a href=\"https:\/\/developers.google.com\/maps\/documentation\/places\/web-service\/details?hl=de\" target=\"_blank\" rel=\"noopener\">https:\/\/developers.google.com\/maps\/documentation\/places\/web-service\/details?hl=de<\/a> (<span style=\"color: #808080;\"><em><a href=\"https:\/\/teststage.bix-consulting.com\/en\/sap-data-intelligence-geo-enrichment-per-api\/#anker-sapdiblog1\" style=\"color: #808080;\">go to section<\/a><\/em><\/span>)<\/p>\n<p>2: Prices can only be found after logging into the Google Cloud Platform. They vary depending on the API and information requested. (<span style=\"color: #808080;\"><em><a href=\"https:\/\/teststage.bix-consulting.com\/en\/sap-data-intelligence-geo-enrichment-per-api\/#anker-sapdiblog2\" style=\"color: #808080;\">go to section<\/a><\/em><\/span>)<\/p>\n<p>3: <a href=\"https:\/\/developers.google.com\/maps\" target=\"_blank\" rel=\"noopener\">https:\/\/developers.google.com\/maps<\/a> (<span style=\"color: #808080;\"><em><a href=\"https:\/\/teststage.bix-consulting.com\/en\/sap-data-intelligence-geo-enrichment-per-api\/#anker-sapdiblog2\" style=\"color: #808080;\">go to section<\/a><\/em><\/span>)<\/p>\n<p>4: <a href=\"https:\/\/help.sap.com\/viewer\/b13b5722c8ff4bf9bb097251310031d0\/3.0.2\/en-US\/974be4fbb13a48eda16f7b061508eb59.html\" target=\"_blank\" rel=\"noopener\">https:\/\/help.sap.com\/viewer\/b13b5722c8ff4bf9bb097251310031d0\/3.0.2\/en-US\/974be4fbb13a48eda16f7b061508eb59.html<\/a> (<span style=\"color: #808080;\"><em><a href=\"https:\/\/teststage.bix-consulting.com\/en\/sap-data-intelligence-geo-enrichment-per-api\/#anker-sapdiblog4\" style=\"color: #808080;\">go to section<\/a><\/em><\/span>)<\/p>\n<p>5: <a href=\"https:\/\/help.sap.com\/viewer\/97fce0b6d93e490fadec7e7021e9016e\/Cloud\/en-US\/8a70738566e6466eb8d0f7d68be80247.html\" target=\"_blank\" rel=\"noopener\">https:\/\/help.sap.com\/viewer\/97fce0b6d93e490fadec7e7021e9016e\/Cloud\/en-US\/8a70738566e6466eb8d0f7d68be80247.html<\/a> (<span style=\"color: #808080;\"><em><a href=\"https:\/\/teststage.bix-consulting.com\/en\/sap-data-intelligence-geo-enrichment-per-api\/#anker-sapdiblog5\" style=\"color: #808080;\">go to section<\/a><\/em><\/span>)<\/p>\n<p>6: <a href=\"https:\/\/developer.what3words.com\/public-api\" target=\"_blank\" rel=\"noopener\">https:\/\/developer.what3words.com\/public-api<\/a> (<span style=\"color: #808080;\"><em><a href=\"https:\/\/teststage.bix-consulting.com\/en\/sap-data-intelligence-geo-enrichment-per-api\/#anker-sapdiblog6\" style=\"color: #808080;\">go to section<\/a><\/em><\/span>)<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; locked=&#8220;off&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; text_font=&#8220;Roboto|300|||||||&#8220; text_font_size=&#8220;30px&#8220; locked=&#8220;off&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #000000;\">Contact Person<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8220;https:\/\/teststage.bix-consulting.com\/wp-content\/uploads\/2021\/05\/Julius_RUND.jpg&#8220; title_text=&#8220;Julius_RUND&#8220; align=&#8220;center&#8220; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; transform_scale=&#8220;86%|86%&#8220; transform_translate=&#8220;-4px|22px&#8220; locked=&#8220;off&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][\/et_pb_image][et_pb_text _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; text_font=&#8220;Roboto|300|||||||&#8220; text_font_size=&#8220;16px&#8220; transform_translate=&#8220;1px|-33px&#8220; locked=&#8220;off&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;]<\/p>\n<div class=\"elementor-element elementor-element-d95ca40 elementor-widget elementor-widget-heading\" data-id=\"d95ca40\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<h3 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\">Julius Nordhues<\/h3>\n<\/div>\n<\/div>\n<div class=\"elementor-element elementor-element-c4afb6c elementor-widget elementor-widget-heading\" data-id=\"c4afb6c\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n<div class=\"elementor-widget-container\">\n<p class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\">Consultant<\/p>\n<\/div>\n<\/div>\n<p>[\/et_pb_text][et_pb_social_media_follow _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; text_orientation=&#8220;center&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220;][et_pb_social_media_follow_network url=&#8220;mailto:julius.nordhues@bix-consulting.de?cc=vertrieb@bix-consulting.de&#8220; _builder_version=&#8220;4.16&#8243; _module_preset=&#8220;default&#8220; background_image=&#8220;https:\/\/teststage.bix-consulting.com\/wp-content\/uploads\/2020\/08\/E-Mail.png&#8220; background_enable_image=&#8220;on&#8220; background_size=&#8220;contain&#8220; global_colors_info=&#8220;{}&#8220; theme_builder_area=&#8220;post_content&#8220; follow_button=&#8220;off&#8220; url_new_window=&#8220;on&#8220;][\/et_pb_social_media_follow_network][\/et_pb_social_media_follow][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>","protected":false},"excerpt":{"rendered":"<p>In diesem Blog wird die Verwendung des OpenAPI Clients in einem SAP Data Intelligence Datenfluss erkl\u00e4rt. Es sollen mit Hilfe von GoogleMaps Informationen zu einem bestimmten Ort (Point of Interest), z.B. Geokoordinaten, \u00d6ffnungszeiten, Websiten eingeholt werden. Es wird somit gezeigt, wie mit Hilfe von API\u2019s Daten um zus\u00e4tzliche Informationen angereichert werden k\u00f6nnen. Dieser Blog richtet [&hellip;]<\/p>","protected":false},"author":6,"featured_media":3506,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[18],"tags":[],"modified_by":"admin","_links":{"self":[{"href":"https:\/\/teststage.bix-consulting.com\/en\/wp-json\/wp\/v2\/posts\/3504"}],"collection":[{"href":"https:\/\/teststage.bix-consulting.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/teststage.bix-consulting.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/teststage.bix-consulting.com\/en\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/teststage.bix-consulting.com\/en\/wp-json\/wp\/v2\/comments?post=3504"}],"version-history":[{"count":0,"href":"https:\/\/teststage.bix-consulting.com\/en\/wp-json\/wp\/v2\/posts\/3504\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/teststage.bix-consulting.com\/en\/wp-json\/wp\/v2\/media\/3506"}],"wp:attachment":[{"href":"https:\/\/teststage.bix-consulting.com\/en\/wp-json\/wp\/v2\/media?parent=3504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/teststage.bix-consulting.com\/en\/wp-json\/wp\/v2\/categories?post=3504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/teststage.bix-consulting.com\/en\/wp-json\/wp\/v2\/tags?post=3504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}