{"objects":[{"metadata":{"identifier":{"packageName":"Matillion Exchange","name":"Power BI Data Refresh","revision":4,"type":"DYNAMIC"},"rootJobReference":{"name":"Shared-Job-Refresh-PowerBI","type":"ORCHESTRATION","parameterMetadata":[{"slot":2,"variableName":"GroupId","variableType":"SCALAR","displayName":"GroupId","description":"","defaultValue":[{"values":{"1":""}}],"defaultValueType":"TEXT","required":true},{"slot":3,"variableName":"ClientId","variableType":"SCALAR","displayName":"ClientId","description":"","defaultValue":[{"values":{"1":""}}],"defaultValueType":"TEXT","required":true},{"slot":4,"variableName":"DataSetId","variableType":"SCALAR","displayName":"DataSetId","description":"","defaultValue":[{"values":{"1":""}}],"defaultValueType":"TEXT","required":true},{"slot":5,"variableName":"TennantId","variableType":"SCALAR","displayName":"TennantId","description":"","defaultValue":[{"values":{"1":""}}],"defaultValueType":"TEXT","required":true},{"slot":6,"variableName":"ClientSecret","variableType":"SCALAR","displayName":"ClientSecret","description":"","defaultValue":[{"values":{"1":""}}],"defaultValueType":"TEXT","required":true},{"slot":7,"variableName":"Payload","variableType":"SCALAR","displayName":"Payload","description":"","defaultValue":[{"values":{"1":""}}],"defaultValueType":"TEXT","required":false}]},"orchestrationJobs":["Shared-Job-Refresh-PowerBI"],"transformationJobs":[],"imageMetadata":{"componentIcon":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACKklEQVR4Xu2TzUtUURjG/ZsiqG3tRXBZf0C1c+POVhWSuQrcVAt3SShjHxNkA0YEjWmFEyLE+JEubMya28dMEzG+3d+NS9f3PefcGURt4QMPHM55nuc+555zeuSI0aMnDhvHBboqELV+SXF1XYbnFuRS6ZmcK84kZMwca2i6QUcF6q2WjL2tSP/9x9JbeBQkGrR4OkFugVdbNTkf71J/KI/8Gbx5CBaYWd+QvumiCe+UeMkIwVuA9vv5eLZE6E84C3B+/EIdluWFp7Ny5eW8XC3PJ2O9niVZvjvhLMAl0iEpL78oy0r0VVuSOda0PiWZLpgCPCPfbb9dWZLdXe34B9bQaB8k0/VETQHesjbDoXh3oY+nQINW+yHZGqbA8NxrY4TVeqSlXqDVfki2hilQ+rApk++re/hwZU3LcoFH55CtYQocNv6/Aj/fPZBGeXwPmwt3tSwXeHQO2RqmQDQ9KLXrJwx/f1zWUi/Qaj8kW8MUaL65Z4ywPnHx7xvLQ6xBq/2QbA1ToN34Itujp40Zfi/dCJeI19BoHySTbA1TAHx7cs0EpGR3ruNgzrdzSKYLzgLtxmf5dPOsCcly51afRFMDCRnr9SzJItMFZwHQqj6X2shJE9Y14wyyfPAWAM3Fwv5KxF4yQggWALTPOw4X8YR2niK3AOD8uES+15Hl9uipRNv+4T5zjY4KpKAIbzkqDMrOnf54l2cSMmaONd9l86GrAgeB4wJHXuAPJlN0EtS56Z8AAAAASUVORK5CYII=","smallIcon":"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABFklEQVR4XqWSsUoDQRCG75nyANZaWAvamDdIo++QLpW1hVUamxNSBETENiGQU7AQwSSgyW0aSWT1mOw/MnN7u2mO+2Fgmfn2213YhBomCRt1Ewl+i4Lu3t7p8uGJTtIB14Vbo4dZmIrAbH+oc/9Ix7fp3sIMjB8VwB5ubg+GXKHEv4kKcEWBzt2mbGUUenZr9GQOVqICvFmAbJUrIEFP5mAlKng1az7pJS9PDoMZGLASFdjFlOxsTHY+0WEYzJhxrEQF5qZNn90Wl/0YKyBBT+ZgJSrYjPoKLK8OKxKs0ZM5WEn5D/4s5ddnCv2Ljrj8HhiwscCl+F5GkurmU2b8RF8ZdlwR7/zqHXBhzdf2TpbEgpppLNgBIB6c7yL6DNAAAAAASUVORK5CYII="},"description":"Automate Power BI data set refreshes using a Service Principal. This job is a wrapper over the Power BI data refresh API.","helpHtml":"

Power BI Data Refresh

Automate Power BI data set refreshes using a Service Principal. This job is a wrapper over the Power BI data refresh API.

Properties

PropertyTypeDescription
GroupIdVariable
ClientIdVariable
DataSetIdVariable
TennantIdVariable
ClientSecretVariable
PayloadVariable
","created":1688965106107},"orchestrationJobs":{"Shared-Job-Refresh-PowerBI":{"id":-2,"revision":82,"created":1688964871508,"timestamp":1688964871508,"components":{"21294":{"id":21294,"inputCardinality":"ZERO","outputCardinality":"MANY","connectorHint":"UNCONDITIONAL","executionHint":"FLOW","implementationID":444132438,"x":-160,"y":0,"width":32,"height":32,"inputConnectorIDs":[],"outputSuccessConnectorIDs":[],"outputFailureConnectorIDs":[],"outputUnconditionalConnectorIDs":[21488],"outputTrueConnectorIDs":[],"outputFalseConnectorIDs":[],"exportMappings":{},"parameters":{"1":{"slot":1,"name":"Start","elements":{"1":{"slot":1,"values":{"1":{"slot":1,"type":"STRING","value":"Start 0"}}}},"visible":true,"status":{},"columnNames":[]}},"validationStatus":{},"status":{},"expectedFailure":null,"activationStatus":"ENABLED","outputIterationConnectorIDs":[],"inputIterationConnectorIDs":[]},"21478":{"id":21478,"inputCardinality":"ONE","outputCardinality":"MANY","connectorHint":"SUCCESS_FAIL","executionHint":"EXECUTE","implementationID":-1773186829,"x":0,"y":0,"width":32,"height":32,"inputConnectorIDs":[21488],"outputSuccessConnectorIDs":[29249],"outputFailureConnectorIDs":[],"outputUnconditionalConnectorIDs":[],"outputTrueConnectorIDs":[],"outputFalseConnectorIDs":[],"exportMappings":{"1":{"slot":1,"fromId":null,"fromName":"Message","mapTo":"Message","validationStatus":null,"validationMessage":null}},"parameters":{"1":{"slot":1,"name":"Name","elements":{"1":{"slot":1,"values":{"1":{"slot":1,"type":"STRING","value":"Process Power BI Dataset"}}}},"visible":true,"status":{},"columnNames":[]},"2":{"slot":2,"name":"Script","elements":{"1":{"slot":1,"values":{"1":{"slot":1,"type":"STRING","value":"import requests\nimport base64\nimport json\n\n# Set your Azure Active Directory (AAD) application details\nclient_id = ClientId\nclient_secret = ClientSecret\ntenant_id = TennantId\ndataset_id = DataSetId\ngroup_id = GroupId\npayload = Payload\n\n# Set the Power BI API endpoint and dataset ID\napi_endpoint = f'https://api.powerbi.com/v1.0/myorg/groups/{group_id}/datasets/{dataset_id}/refreshes'\n\n# Set the OAuth 2.0 token endpoint for AAD\ntoken_endpoint = f'https://login.microsoftonline.com/{tenant_id}/oauth2/token'\n\n# Prepare the request body to get the access token\ndata = {\n 'grant_type': 'client_credentials',\n 'client_id': client_id,\n 'client_secret': client_secret,\n 'resource': 'https://analysis.windows.net/powerbi/api'\n}\n\n# Send the POST request to get the access token\nresponse = requests.post(token_endpoint, data=data)\n\n# Check the response status code\nif response.status_code == 200:\n # Extract the access token from the response\n access_token = response.json().get('access_token')\n\n # Prepare the request headers with the access token\n headers = {\n 'Content-Type': 'application/json',\n 'Authorization': f'Bearer {access_token}'\n }\n\n # Validate the payload if it is not blank\n if payload:\n try:\n # Convert the payload to JSON and validate the format\n payload_json = json.loads(payload)\n if not isinstance(payload_json, dict):\n raise ValueError('Error: Invalid JSON payload. The payload should be a JSON object.')\n except ValueError as e:\n print(f'Error: Invalid JSON payload: {e}')\n else:\n # Send the POST request with the payload as the raw body\n response = requests.post(api_endpoint, headers=headers, data=payload)\n\n # Check the response status code\n if response.status_code == 202:\n print(f'Dataset refresh initiated successfully: {payload}')\n else:\n print(f'Error: {response.status_code} - {response.text}')\n else:\n # Send the POST request without a payload\n response = requests.post(api_endpoint, headers=headers)\n\n # Check the response status code\n if response.status_code == 202:\n print('Dataset refresh initiated successfully.')\n else:\n print(f'Error: {response.status_code} - {response.text}')\nelse:\n print(f'Error: {response.status_code} - {response.text}')\n"}}}},"visible":true,"status":{},"columnNames":[]},"3":{"slot":3,"name":"Interpreter","elements":{"1":{"slot":1,"values":{"1":{"slot":1,"type":"STRING","value":"Python 3.8"}}}},"visible":true,"status":{},"columnNames":[]},"4":{"slot":4,"name":"Timeout","elements":{"1":{"slot":1,"values":{"1":{"slot":1,"type":"INTEGER","value":"360"}}}},"visible":true,"status":{},"columnNames":[]},"5":{"slot":5,"name":"User","elements":{"1":{"slot":1,"values":{"1":{"slot":1,"type":"STRING","value":"Restricted"}}}},"visible":false,"status":{},"columnNames":[]}},"validationStatus":{},"status":{},"expectedFailure":null,"activationStatus":"ENABLED","outputIterationConnectorIDs":[],"inputIterationConnectorIDs":[]},"29244":{"id":29244,"inputCardinality":"ONE","outputCardinality":"ZERO","connectorHint":"UNCONDITIONAL","executionHint":"FLOW","implementationID":515156205,"x":320,"y":80,"width":32,"height":32,"inputConnectorIDs":[29303],"outputSuccessConnectorIDs":[],"outputFailureConnectorIDs":[],"outputUnconditionalConnectorIDs":[],"outputTrueConnectorIDs":[],"outputFalseConnectorIDs":[],"exportMappings":{},"parameters":{"1":{"slot":1,"name":"Name","elements":{"1":{"slot":1,"values":{"1":{"slot":1,"type":"STRING","value":"End Failure 0"}}}},"visible":true,"status":{},"columnNames":[]}},"validationStatus":{},"status":{},"expectedFailure":null,"activationStatus":"ENABLED","outputIterationConnectorIDs":[],"inputIterationConnectorIDs":[]},"29246":{"id":29246,"inputCardinality":"ONE","outputCardinality":"ZERO","connectorHint":"UNCONDITIONAL","executionHint":"FLOW","implementationID":-1946388514,"x":320,"y":-80,"width":32,"height":32,"inputConnectorIDs":[29306],"outputSuccessConnectorIDs":[],"outputFailureConnectorIDs":[],"outputUnconditionalConnectorIDs":[],"outputTrueConnectorIDs":[],"outputFalseConnectorIDs":[],"exportMappings":{},"parameters":{"1":{"slot":1,"name":"Name","elements":{"1":{"slot":1,"values":{"1":{"slot":1,"type":"STRING","value":"End Success 0"}}}},"visible":true,"status":{},"columnNames":[]}},"validationStatus":{},"status":{},"expectedFailure":null,"activationStatus":"ENABLED","outputIterationConnectorIDs":[],"inputIterationConnectorIDs":[]},"29248":{"id":29248,"inputCardinality":"ONE","outputCardinality":"MANY","connectorHint":"CONDITIONAL","executionHint":"FLOW","implementationID":-1357378929,"x":160,"y":0,"width":32,"height":32,"inputConnectorIDs":[29249],"outputSuccessConnectorIDs":[],"outputFailureConnectorIDs":[],"outputUnconditionalConnectorIDs":[],"outputTrueConnectorIDs":[29303],"outputFalseConnectorIDs":[29306],"exportMappings":{},"parameters":{"1":{"slot":1,"name":"Name","elements":{"1":{"slot":1,"values":{"1":{"slot":1,"type":"STRING","value":"If 0"}}}},"visible":true,"status":{},"columnNames":[]},"2":{"slot":2,"name":"Mode","elements":{"1":{"slot":1,"values":{"1":{"slot":1,"type":"STRING","value":"Advanced"}}}},"visible":true,"status":{},"columnNames":[]},"3":{"slot":3,"name":"Condition","elements":{"1":{"slot":1,"values":{"1":{"slot":1,"type":"STRING","value":"Message"},"2":{"slot":2,"type":"STRING","value":"Is"},"3":{"slot":3,"type":"STRING","value":"Blank"},"4":{"slot":4,"type":"STRING","value":""}}}},"visible":false,"status":{},"columnNames":[]},"4":{"slot":4,"name":"Combine Conditions","elements":{"1":{"slot":1,"values":{"1":{"slot":1,"type":"STRING","value":"And"}}}},"visible":false,"status":{},"columnNames":[]},"5":{"slot":5,"name":"Condition","elements":{"1":{"slot":1,"values":{"1":{"slot":1,"type":"STRING","value":"Message.contains('Error')"}}}},"visible":true,"status":{},"columnNames":[]}},"validationStatus":{},"status":{},"expectedFailure":null,"activationStatus":"ENABLED","outputIterationConnectorIDs":[],"inputIterationConnectorIDs":[]}},"successConnectors":{"29249":{"id":29249,"sourceID":21478,"targetID":29248}},"failureConnectors":{},"unconditionalConnectors":{"21488":{"id":21488,"sourceID":21294,"targetID":21478}},"trueConnectors":{"29303":{"id":29303,"sourceID":29248,"targetID":29244}},"falseConnectors":{"29306":{"id":29306,"sourceID":29248,"targetID":29246}},"iterationConnectors":{},"noteConnectors":{},"canUndo":true,"undoCommand":"Set Job Variables","undoCreated":1688964813186,"canRedo":false,"redoCommand":"","redoCreated":-1,"notes":{},"variables":{"GroupId":{"definition":{"name":"GroupId","type":"TEXT","scope":"TASKBATCH","description":"","visibility":"PUBLIC"},"value":"fea4ed25-5a8d-4c4c-bed0-7d7f2f4ef182"},"Message":{"definition":{"name":"Message","type":"TEXT","scope":"TASKBATCH","description":"","visibility":"PRIVATE"},"value":""},"Payload":{"definition":{"name":"Payload","type":"TEXT","scope":"TASKBATCH","description":"","visibility":"PUBLIC"},"value":"{ \"type\": \"full\", \"commitMode\": \"transactional\", \"objects\": [ { \"table\": \"Date\" } ], \"applyRefreshPolicy\": \"false\" }"},"ClientId":{"definition":{"name":"ClientId","type":"TEXT","scope":"TASKBATCH","description":"","visibility":"PUBLIC"},"value":"b00a47cc-5f1f-4e88-8de1-79d5537f622e"},"DataSetId":{"definition":{"name":"DataSetId","type":"TEXT","scope":"TASKBATCH","description":"","visibility":"PUBLIC"},"value":"7f896fb3-b374-4ce3-9047-c3cb60f588fb"},"TennantId":{"definition":{"name":"TennantId","type":"TEXT","scope":"TASKBATCH","description":"","visibility":"PUBLIC"},"value":"27a81d7b-b93a-418f-a610-ae4c5080772a"},"ClientSecret":{"definition":{"name":"ClientSecret","type":"TEXT","scope":"TASKBATCH","description":"","visibility":"PUBLIC"},"value":"rEW8Q~I4cOfeLLcgv93g2pvDh5ojb1W3shGYWcrK"}},"grids":{}}},"transformationJobs":{}}],"version":"1.71.1"}