A very quick tip today: When using an Azure Logic App in combination with an Azure SQL Database, filtering rows can be done like here.

As example: A T-SQL query as this one…

 SELECT - FROM [dbo].[Customers] WHERE [StorageDataSentDate] IS NULL ORDER BY [Id]   

…will be formulated as filter expression with an OData query as here.

image

The definition for the Get_rows_(V2) action looks similar as here:

 … "Get_rows_(V2)": {  
"inputs": {  
"host": {"connection": {"name": "@parameters('$connections')['sql']['connectionId']"} },  
"method": "get",  
"path": "/v2/datasets/@{encodeURIComponent(encodeURIComponent('[someserver].database.windows.net'))},  
  @{encodeURIComponent(encodeURIComponent('governancetoolkit365'))}/tables/  
  @{encodeURIComponent(encodeURIComponent('[dbo].[Customers]'))}/items",  
  "queries": {"$filter": "(StorageDataSentDate eq null)", $orderby": "Id"}  
},  
"runAfter": {"Initialize_variable": ["Succeeded"]},  
"runtimeConfiguration": {  
  "paginationPolicy": {"minimumItemCount": 5}  
},  
"type": "ApiConnection"  
}, …   

Depending on the data size, remember to configure pagination.

The output can be processed in an ForEach action as needed.

 …"For_each": {  
 "actions": {  
 "Append_to_string_variable": {  
 "inputs": {  
   "name": "Helper",  
   "value": "@{items('For_each')?['StorageDataSentDate']}, @{items('For_each')?['Domain']}"  
 },  
 "runAfter": {},  
 "type": "AppendToStringVariable"  
 }  
 },  
 "foreach": "@body('Get_rows_(V2)')?['value']",  
 "runAfter": { "Get_rows_(V2)": ["Succeeded"] },  
 "type": "Foreach"  
 },…   

Happy developing Azure Logic Apps!