{"id":2201,"date":"2022-12-09T14:28:26","date_gmt":"2022-12-09T13:28:26","guid":{"rendered":"https:\/\/blog.kodono.info\/wordpress\/?p=2201"},"modified":"2022-12-09T15:20:11","modified_gmt":"2022-12-09T14:20:11","slug":"power-automate-execute-a-sql-query-via-on-promise-gateway","status":"publish","type":"post","link":"https:\/\/blog.kodono.info\/wordpress\/2022\/12\/09\/power-automate-execute-a-sql-query-via-on-promise-gateway\/","title":{"rendered":"Power Automate: execute a SQL Query via On-Promise Gateway"},"content":{"rendered":"<p>In Power Automate, when you want to connect to a SQL Server and if you have a On-Promise Gateway, then you cannot use the command <b>&#8220;Execute a SQL Query&#8221;<\/b> because it will say it&#8217;s not currently supported.<\/p>\n<p>There is a workaround with <b>&#8220;Transform data using Power Query&#8221;<\/b> (ATTENTION: you cannot load it from a flow from a Solution\u2026 you&#8217;ll have to go to your Flows and edit the flow from there):<br \/>\n<a href=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/sql_options.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/sql_options.png\" alt=\"\" width=\"603\" height=\"669\" class=\"aligncenter size-full wp-image-2203\" srcset=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/sql_options.png 603w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/sql_options-270x300.png 270w\" sizes=\"auto, (max-width: 603px) 100vw, 603px\" \/><\/a><\/p>\n<p>Let&#8217;s say we have 3 tables: ITEM_CATALOG, CATALOG and CURRENCY. We want to join them and filter them based on a variable found previously in our flow.<\/p>\n<p>First, we can define our <code>where<\/code>. Here I have several values that I want to test using a <code>IN<\/code>:<br \/>\n<a href=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/init_where.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/init_where.png\" alt=\"\" width=\"605\" height=\"178\" class=\"aligncenter size-full wp-image-2205\" srcset=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/init_where.png 605w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/init_where-300x88.png 300w\" sizes=\"auto, (max-width: 605px) 100vw, 605px\" \/><\/a><\/p>\n<p>I create a string with my different values separated by a coma.<\/p>\n<p>Next, we can open the Power Query editor:<br \/>\n<a href=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/power_query.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/power_query.png\" alt=\"\" width=\"619\" height=\"128\" class=\"aligncenter size-full wp-image-2206\" srcset=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/power_query.png 619w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/power_query-300x62.png 300w\" sizes=\"auto, (max-width: 619px) 100vw, 619px\" \/><\/a><\/p>\n<p>In the interface, we choose the 3 tables we need to merge and we add a parameter called &#8220;where&#8221;:<br \/>\n<a href=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/new_parameter.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/new_parameter.png\" alt=\"\" width=\"250\" height=\"352\" class=\"aligncenter size-full wp-image-2207\" srcset=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/new_parameter.png 250w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/new_parameter-213x300.png 213w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/><\/a><\/p>\n<p>We rename it to &#8220;where&#8221; and leave the default settings:<br \/>\n<a href=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/parameter_menu.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/parameter_menu.png\" alt=\"\" width=\"652\" height=\"637\" class=\"aligncenter size-full wp-image-2208\" srcset=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/parameter_menu.png 652w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/parameter_menu-300x293.png 300w\" sizes=\"auto, (max-width: 652px) 100vw, 652px\" \/><\/a><\/p>\n<p>Then we use the <b>&#8220;Advance Editor&#8221;<\/b>:<br \/>\n<a href=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/advanced_editor.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/advanced_editor.png\" alt=\"\" width=\"805\" height=\"318\" class=\"aligncenter size-full wp-image-2209\" srcset=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/advanced_editor.png 805w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/advanced_editor-300x119.png 300w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/advanced_editor-768x303.png 768w\" sizes=\"auto, (max-width: 805px) 100vw, 805px\" \/><\/a><\/p>\n<p>And we wrote the below:<\/p>\n<pre class=\"brush:javascript\">\r\nlet\r\n  where = Text.Split( \"@{variables('where')}\" , \",\")\r\nin\r\n  where\r\n<\/pre>\n<p>It means we want to split the variable &#8220;where&#8221; coming from the flow, based on the coma separator:<br \/>\n<a href=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/editor_value.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/editor_value.png\" alt=\"\" width=\"520\" height=\"175\" class=\"aligncenter size-full wp-image-2210\" srcset=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/editor_value.png 520w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/editor_value-300x101.png 300w\" sizes=\"auto, (max-width: 520px) 100vw, 520px\" \/><\/a><\/p>\n<p>We can now merge the tables and add a filter:<br \/>\n<a href=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/buttons.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/buttons-1024x112.png\" alt=\"\" width=\"1024\" height=\"112\" class=\"aligncenter size-large wp-image-2211\" srcset=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/buttons-1024x112.png 1024w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/buttons-300x33.png 300w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/buttons-768x84.png 768w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/buttons.png 1175w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>And when the step to filter is here, we select <b>&#8220;in&#8221;<\/b> and our query:<br \/>\n<a href=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/filter_rows.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/filter_rows.png\" alt=\"\" width=\"609\" height=\"301\" class=\"aligncenter size-full wp-image-2212\" srcset=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/filter_rows.png 609w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/filter_rows-300x148.png 300w\" sizes=\"auto, (max-width: 609px) 100vw, 609px\" \/><\/a><\/p>\n<p>Last step is to <b>&#8220;Enable Load&#8221;<\/b> to make sure this is what the operation will return to our flow:<br \/>\n<a href=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/enable_load.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/enable_load.png\" alt=\"\" width=\"307\" height=\"437\" class=\"aligncenter size-full wp-image-2213\" srcset=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/enable_load.png 307w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/enable_load-211x300.png 211w\" sizes=\"auto, (max-width: 307px) 100vw, 307px\" \/><\/a><\/p>\n<p>You can run it to test and see if it works.<\/p>\n<p>Then, to get the output from it, we&#8217;ll use a <b>&#8220;Parse JSON&#8221;<\/b>\u2026 The schema is probably something like:<\/p>\n<pre class=\"brush:json\">\r\n{\r\n    \"type\": \"object\",\r\n    \"properties\": {\r\n        \"resultType\": {\r\n            \"type\": \"string\"\r\n        },\r\n        \"value\": {\r\n            \"type\": \"array\",\r\n            \"items\": {\r\n                \"type\": \"object\",\r\n                \"properties\": {\r\n                    \"COLUMN_A\": {\r\n                        \"type\": \"string\"\r\n                    },\r\n                    \"COLUMN_B\": {\r\n                        \"type\": \"integer\"\r\n                    },\r\n                    \"COLUMN_C\": {\r\n                        \"type\": \"string\"\r\n                    }\r\n                },\r\n                \"required\": [\r\n                    \"COLUMN_A\",\r\n                    \"COLUMN_B\",\r\n                    \"COLUMN_C\"\r\n                ]\r\n            }\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<p>You may need to make several tries in order to find the correct schema. You can also use the <b>&#8220;Generate from sample&#8221;<\/b> by pasting the data from the previous step:<br \/>\n<a href=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/parse_json.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/parse_json.png\" alt=\"\" width=\"629\" height=\"437\" class=\"aligncenter size-full wp-image-2214\" srcset=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/parse_json.png 629w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/parse_json-300x208.png 300w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>We use <b>&#8220;value&#8221;<\/b> in the loop:<br \/>\n<a href=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/value.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/value.png\" alt=\"\" width=\"667\" height=\"378\" class=\"aligncenter size-full wp-image-2215\" srcset=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/value.png 667w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/value-300x170.png 300w\" sizes=\"auto, (max-width: 667px) 100vw, 667px\" \/><\/a><\/p>\n<p>And then we can access our columns:<br \/>\n<a href=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/applyeach.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/applyeach.png\" alt=\"\" width=\"670\" height=\"376\" class=\"aligncenter size-full wp-image-2216\" srcset=\"https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/applyeach.png 670w, https:\/\/blog.kodono.info\/wordpress\/wp-content\/uploads\/2022\/12\/applyeach-300x168.png 300w\" sizes=\"auto, (max-width: 670px) 100vw, 670px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Power Automate, when you want to connect to a SQL Server and if you have a On-Promise Gateway, then you cannot use the command &#8220;Execute a SQL Query&#8221; because it will say it&#8217;s not currently supported. There is a workaround with &#8220;Transform data using Power Query&#8221; (ATTENTION: you cannot load it from a flow [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","hide_page_title":"","footnotes":""},"categories":[1,170,20],"tags":[146,123,155],"class_list":["post-2201","post","type-post","status-publish","format-standard","hentry","category-divers","category-english","category-niveau-expert","tag-divers","tag-english","tag-niveau-expert"],"_links":{"self":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/2201","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/comments?post=2201"}],"version-history":[{"count":6,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/2201\/revisions"}],"predecessor-version":[{"id":2220,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/2201\/revisions\/2220"}],"wp:attachment":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/media?parent=2201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/categories?post=2201"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/tags?post=2201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}