├── images ├── aml │ ├── ml1.jpg │ ├── ml10.jpg │ ├── ml11.jpg │ ├── ml12.jpg │ ├── ml13.jpg │ ├── ml14.jpg │ ├── ml15.jpg │ ├── ml16.jpg │ ├── ml17.jpg │ ├── ml2.jpg │ ├── ml3.jpg │ ├── ml4.jpg │ ├── ml5.jpg │ ├── ml6.jpg │ ├── ml7.jpg │ ├── ml8.jpg │ ├── ml9.jpg │ ├── dsMenu.jpg │ ├── ml1bis.jpg │ ├── models.jpg │ ├── synapseDS.jpg │ ├── automated_ml.jpg │ ├── dsSelection.jpg │ ├── mlEndPoints.png │ ├── mlModelsTab.jpg │ ├── newDateTable.jpg │ ├── pbiAzMLIcon.jpg │ ├── pbiMLMapping.jpg │ ├── 02-aml-studio.PNG │ ├── 03-aml-studio.PNG │ ├── 04-aml-studio.PNG │ ├── 05-aml-studio.PNG │ ├── 06-aml-studio.PNG │ ├── 07-aml-studio.PNG │ ├── 08-aml-studio.PNG │ ├── 09-aml-studio.PNG │ ├── 10-aml-studio.PNG │ ├── 11-aml-studio.PNG │ ├── 12-aml-studio.PNG │ ├── 13-aml-studio.PNG │ ├── 14-aml-studio.PNG │ ├── 15-aml-studio.PNG │ ├── 16-aml-studio.PNG │ ├── 17-aml-studio.PNG │ ├── 18-aml-studio.PNG │ ├── 19-aml-studio.PNG │ ├── 20-aml-studio.PNG │ ├── 21-aml-studio.PNG │ ├── 22-aml-studio.PNG │ ├── 23-aml-studio.PNG │ ├── 24-aml-studio.PNG │ ├── 25-aml-studio.PNG │ ├── automated_ml2.jpg │ ├── azure_ml_icon.jpg │ ├── endPointDetails.png │ ├── 01-synapse-query.PNG │ ├── 01a-synapse-query.PNG │ ├── 01b-synapse-query.PNG │ ├── 02a-aml-ws-setup.PNG │ ├── BestModelSummary.jpg │ ├── dateRelationships.jpg │ ├── deployWebService.png │ ├── featureImportance.jpg │ ├── SalesPaymentForecast.jpg │ ├── dataSetFromDataStore.jpg │ └── pbiMLPredPaymentDateColumn.jpg ├── gw │ ├── vm-gw1.jpg │ ├── vm-gw2.jpg │ ├── vm-gw3.jpg │ ├── vm-gw4.jpg │ ├── vm-gw5.jpg │ ├── vm-gw6.jpg │ ├── deployTF1.jpg │ ├── deployTF10.jpg │ ├── deployTF2.jpg │ ├── deployTF3.jpg │ ├── deployTF4.jpg │ ├── deployTF5.jpg │ ├── deployTF6.jpg │ ├── deployTF7.jpg │ ├── deployTF8.jpg │ ├── deployTF9.jpg │ ├── vm-gw-disks.png │ ├── vm-gw-jit1.png │ ├── vm-gw-jit2.png │ ├── vm-gw-jit3.png │ ├── vm-gw-jit4.png │ ├── vm-gw-basics.png │ ├── vm-gw-create.png │ ├── vm-gw-connector.png │ ├── vm-gw-connsetup1.png │ ├── vm-gw-connsetup2.png │ ├── vm-gw-connsetup3.png │ ├── vm-gw-downloads.png │ ├── vm-gw-gwsetup1.png │ ├── vm-gw-gwsetup2.png │ ├── vm-gw-gwsetup3.png │ ├── vm-gw-gwsetup4.png │ ├── vm-gw-management.png │ ├── vm-gw-networking.png │ ├── portal-on-prem-gw1.png │ └── portal-on-prem-gw2.png ├── irt │ ├── syn1.jpg │ ├── gw-irt1.png │ ├── gw-irt2.png │ ├── gw-irt3.png │ ├── syn-irt1.png │ ├── syn-irt2.png │ ├── syn-irt3.png │ ├── syn-irt4-1.png │ ├── syn-irt4.png │ ├── syn-irt5.png │ ├── syn-irt6.png │ ├── syn-irt7.png │ └── syn-irt8.png ├── powerBi │ ├── Merge.jpg │ ├── average.jpg │ ├── getdata.jpg │ ├── relModel.jpg │ ├── reportView.jpg │ ├── sqlendpoint.jpg │ ├── MergeQueries.jpg │ ├── averageOffset.jpg │ ├── dataselection.jpg │ ├── whole_number.jpg │ ├── AddBoxAndWhisker.jpg │ ├── AddCustomColumn.png │ ├── SalesPerRegion.jpg │ ├── SalesRegionLink.jpg │ ├── getMoreVisuals.jpg │ ├── relationalModel.jpg │ ├── BoxAndWhiskerChart.jpg │ ├── SalesCustMatGroup.jpg │ ├── synapseconnection.jpg │ ├── PaymentDateCustGroup.jpg │ ├── SalesPerRegionSetup.jpg │ ├── selectPaymentFields.jpg │ ├── SalesOrderHeadersItemsRel.jpg │ ├── SalesPerYearCustomerGroup.jpg │ ├── SalesPerYearCustomerGroupSetup.jpg │ └── SalesOrderHeadersItemsRelDetails.jpg ├── synapsews │ ├── syn1.jpg │ ├── syn2.jpg │ ├── syn3.jpg │ ├── syn4.jpg │ ├── syn5.jpg │ ├── syn6.jpg │ ├── syn7.jpg │ ├── syn8.jpg │ ├── syn9.jpg │ ├── DFsink.jpg │ ├── SAPCDC.png │ ├── SAPODP.jpg │ ├── syn10.jpg │ ├── syn11.jpg │ ├── DFAction.jpg │ ├── DFAddSink.jpg │ ├── IS_SAPCDC.png │ ├── IS_SAPODP.jpg │ ├── LS_SAPODP.jpg │ ├── LS_SAPRFC.jpg │ ├── SAPTable.jpg │ ├── staging.jpg │ ├── DFAddSource.jpg │ ├── LS_CosmosDB.jpg │ ├── LS_SAPOdata.jpg │ ├── LS_SQLPool.jpg │ ├── copyAction.jpg │ ├── ingestTool.jpg │ ├── rfcMapping.jpg │ ├── triggerNow.jpg │ ├── DFSinkMapping.jpg │ ├── DFSinkSettings.jpg │ ├── DataFlowAction.jpg │ ├── EnableDFDebug.jpg │ ├── LS_ODPDSSetup.jpg │ ├── LinkedServices.jpg │ ├── SAPECCService.jpg │ ├── connectToPool.jpg │ ├── copyDataTool.jpg │ ├── copyDataZView.jpg │ ├── createSQLPool.jpg │ ├── jsonCodeButton.jpg │ ├── paymentMapping.jpg │ ├── pipelineView.jpg │ ├── DFDerivedColumn.jpg │ ├── DFSourceOptions.jpg │ ├── DFSourceSettings.jpg │ ├── LS_ODPDSPreview.jpg │ ├── PaymentsPipeline.jpg │ ├── cosmosDBSSQLapi.jpg │ ├── cosmosPaymentDS.jpg │ ├── createSQLScript.jpg │ ├── pipelineMonitor.jpg │ ├── stagingDirectory.jpg │ ├── synapsewsservice.jpg │ ├── DFImportProjection.jpg │ ├── DFPipelineStaging.jpg │ ├── IntegrationDataSet.jpg │ ├── RFCCopyActionSink.jpg │ ├── RFCCopyActionSource.jpg │ ├── integrationRuntimes.jpg │ ├── openAzureDataStudio.jpg │ ├── openSynapseStudio.jpg │ ├── AzureSynapseAnalytics.jpg │ ├── S4DSalesOrderItemsDS.jpg │ ├── SAPODQMONTransAction.jpg │ ├── SynapseStudioDevelop.jpg │ ├── architectureOverview.png │ ├── DFDerivedColumnSettings.png │ ├── S4DSalesOrderHeadersDS.jpg │ ├── SAPChangeCustReference.jpg │ ├── SalesOrderHeaderPipeline.jpg │ ├── SynSalesOrderHeadersDS.jpg │ ├── salesOrderItemsPipeline.jpg │ ├── synapsewsservice_basics.jpg │ ├── synapsewsservice_security.jpg │ └── SalesOrderHeaderPipelineTableAdapter.jpg ├── cleanup │ ├── removeRG.png │ └── removeTF.png ├── paymentGen │ ├── notebook.jpg │ ├── publish.jpg │ ├── pySpark.jpg │ ├── runAll.jpg │ ├── attachCluster.jpg │ ├── notebookName.jpg │ ├── paymentsDataCSV.jpg │ ├── createNewNoteBook.jpg │ └── salesOrderHeadersCSV.jpg ├── paymentsSetup │ ├── paymentIDS.jpg │ ├── publishDS.jpg │ ├── triggerNow.jpg │ ├── cosmosDB_LS.jpg │ ├── paymentsSink.jpg │ ├── pipelineName.jpg │ ├── azdlDirectory.jpg │ ├── copyDataAction.jpg │ ├── createPipeline.jpg │ ├── paymentsSource.jpg │ ├── cosmosDBContents.jpg │ ├── AzureCosmosDBSQLAPI.jpg │ ├── cosmosDBDataExplorer.jpg │ ├── createIntegrationDS.jpg │ ├── integrationDataset.jpg │ ├── paymentsCosmos_IDS.jpg │ └── newIntegrationDataSet.jpg ├── SAPCALsetup │ ├── 16_setup_se11.jpg │ ├── 17_setup_ddic1.jpg │ ├── 18_setup_ddic3.jpg │ ├── 08_setup_Activate.jpg │ ├── 09_setup_openwith.jpg │ ├── 15_setup_ddicMenu.jpg │ ├── 11_setup_saplogon1.jpg │ ├── 12_setup_saplogon2.jpg │ ├── 13_setup_saplogon3.jpg │ ├── 10_setup_DataPreview.jpg │ ├── 14_setup_standardMenu.jpg │ ├── 19_setup_ddicContents.jpg │ ├── 21_setup_ddicContents2.jpg │ ├── 01_setup_HanaStudioIcon.jpg │ ├── 04_setup_projectexplorer.jpg │ ├── 07_setup_ViewDefinition.jpg │ ├── 02_setup_DefaultWorkspace.jpg │ ├── 03_setup_HANADevPerspective.jpg │ ├── 06_setup_DataDefinitionName.jpg │ ├── 20_setup_databrowserExecute.jpg │ └── 05_setup_CreateDataDefinition.jpg └── overview │ └── ScenarioOverview.jpg ├── SAP-Data-MicroHack.pptx ├── .gitignore ├── terraform ├── output.tf ├── variables.tf ├── CosmosDB.tf.bak ├── MachineLearning.tf ├── GatewayVM.tf ├── Synapse.tf └── main.tf ├── DeployAzureMLWorkspace.md ├── scripts ├── HttpTestScript.http ├── zbd_i_salesdocument_e.asddls ├── zbd_i_salesdocument_e1.asddls ├── MicroHack.postman_collection.json └── testForecast.py ├── SoftwarePrerequisites.md ├── CleanEnvironment.md ├── DeploySynapseWorkspace.md ├── SynapseWorkspace.md ├── README.md ├── setup ├── generatePayments.md ├── paymentsSetup.md └── SAPCALSetup.md ├── ExtractPaymentsUsingCosmosDB.md ├── IntegrateMLPowerBI.md ├── DeployEnvironment.md ├── ExtractSalesOrderLineItemsUsingOData.md ├── PowerBiVisualisation.md ├── ExtractSalesOrderHeadersUsingTableAdapter.md ├── ExtractSalesOrderHeadersUsingODP.md ├── PredictIncomingCashflow.md └── DataFlowConfig.md /images/aml/ml1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml1.jpg -------------------------------------------------------------------------------- /images/aml/ml10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml10.jpg -------------------------------------------------------------------------------- /images/aml/ml11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml11.jpg -------------------------------------------------------------------------------- /images/aml/ml12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml12.jpg -------------------------------------------------------------------------------- /images/aml/ml13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml13.jpg -------------------------------------------------------------------------------- /images/aml/ml14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml14.jpg -------------------------------------------------------------------------------- /images/aml/ml15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml15.jpg -------------------------------------------------------------------------------- /images/aml/ml16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml16.jpg -------------------------------------------------------------------------------- /images/aml/ml17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml17.jpg -------------------------------------------------------------------------------- /images/aml/ml2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml2.jpg -------------------------------------------------------------------------------- /images/aml/ml3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml3.jpg -------------------------------------------------------------------------------- /images/aml/ml4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml4.jpg -------------------------------------------------------------------------------- /images/aml/ml5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml5.jpg -------------------------------------------------------------------------------- /images/aml/ml6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml6.jpg -------------------------------------------------------------------------------- /images/aml/ml7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml7.jpg -------------------------------------------------------------------------------- /images/aml/ml8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml8.jpg -------------------------------------------------------------------------------- /images/aml/ml9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml9.jpg -------------------------------------------------------------------------------- /images/gw/vm-gw1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw1.jpg -------------------------------------------------------------------------------- /images/gw/vm-gw2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw2.jpg -------------------------------------------------------------------------------- /images/gw/vm-gw3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw3.jpg -------------------------------------------------------------------------------- /images/gw/vm-gw4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw4.jpg -------------------------------------------------------------------------------- /images/gw/vm-gw5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw5.jpg -------------------------------------------------------------------------------- /images/gw/vm-gw6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw6.jpg -------------------------------------------------------------------------------- /images/irt/syn1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/irt/syn1.jpg -------------------------------------------------------------------------------- /images/aml/dsMenu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/dsMenu.jpg -------------------------------------------------------------------------------- /images/aml/ml1bis.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/ml1bis.jpg -------------------------------------------------------------------------------- /images/aml/models.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/models.jpg -------------------------------------------------------------------------------- /images/irt/gw-irt1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/irt/gw-irt1.png -------------------------------------------------------------------------------- /images/irt/gw-irt2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/irt/gw-irt2.png -------------------------------------------------------------------------------- /images/irt/gw-irt3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/irt/gw-irt3.png -------------------------------------------------------------------------------- /SAP-Data-MicroHack.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/SAP-Data-MicroHack.pptx -------------------------------------------------------------------------------- /images/aml/synapseDS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/synapseDS.jpg -------------------------------------------------------------------------------- /images/gw/deployTF1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/deployTF1.jpg -------------------------------------------------------------------------------- /images/gw/deployTF10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/deployTF10.jpg -------------------------------------------------------------------------------- /images/gw/deployTF2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/deployTF2.jpg -------------------------------------------------------------------------------- /images/gw/deployTF3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/deployTF3.jpg -------------------------------------------------------------------------------- /images/gw/deployTF4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/deployTF4.jpg -------------------------------------------------------------------------------- /images/gw/deployTF5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/deployTF5.jpg -------------------------------------------------------------------------------- /images/gw/deployTF6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/deployTF6.jpg -------------------------------------------------------------------------------- /images/gw/deployTF7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/deployTF7.jpg -------------------------------------------------------------------------------- /images/gw/deployTF8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/deployTF8.jpg -------------------------------------------------------------------------------- /images/gw/deployTF9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/deployTF9.jpg -------------------------------------------------------------------------------- /images/gw/vm-gw-disks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-disks.png -------------------------------------------------------------------------------- /images/gw/vm-gw-jit1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-jit1.png -------------------------------------------------------------------------------- /images/gw/vm-gw-jit2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-jit2.png -------------------------------------------------------------------------------- /images/gw/vm-gw-jit3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-jit3.png -------------------------------------------------------------------------------- /images/gw/vm-gw-jit4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-jit4.png -------------------------------------------------------------------------------- /images/irt/syn-irt1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/irt/syn-irt1.png -------------------------------------------------------------------------------- /images/irt/syn-irt2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/irt/syn-irt2.png -------------------------------------------------------------------------------- /images/irt/syn-irt3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/irt/syn-irt3.png -------------------------------------------------------------------------------- /images/irt/syn-irt4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/irt/syn-irt4-1.png -------------------------------------------------------------------------------- /images/irt/syn-irt4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/irt/syn-irt4.png -------------------------------------------------------------------------------- /images/irt/syn-irt5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/irt/syn-irt5.png -------------------------------------------------------------------------------- /images/irt/syn-irt6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/irt/syn-irt6.png -------------------------------------------------------------------------------- /images/irt/syn-irt7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/irt/syn-irt7.png -------------------------------------------------------------------------------- /images/irt/syn-irt8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/irt/syn-irt8.png -------------------------------------------------------------------------------- /images/powerBi/Merge.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/Merge.jpg -------------------------------------------------------------------------------- /images/synapsews/syn1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/syn1.jpg -------------------------------------------------------------------------------- /images/synapsews/syn2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/syn2.jpg -------------------------------------------------------------------------------- /images/synapsews/syn3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/syn3.jpg -------------------------------------------------------------------------------- /images/synapsews/syn4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/syn4.jpg -------------------------------------------------------------------------------- /images/synapsews/syn5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/syn5.jpg -------------------------------------------------------------------------------- /images/synapsews/syn6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/syn6.jpg -------------------------------------------------------------------------------- /images/synapsews/syn7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/syn7.jpg -------------------------------------------------------------------------------- /images/synapsews/syn8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/syn8.jpg -------------------------------------------------------------------------------- /images/synapsews/syn9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/syn9.jpg -------------------------------------------------------------------------------- /images/aml/automated_ml.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/automated_ml.jpg -------------------------------------------------------------------------------- /images/aml/dsSelection.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/dsSelection.jpg -------------------------------------------------------------------------------- /images/aml/mlEndPoints.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/mlEndPoints.png -------------------------------------------------------------------------------- /images/aml/mlModelsTab.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/mlModelsTab.jpg -------------------------------------------------------------------------------- /images/aml/newDateTable.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/newDateTable.jpg -------------------------------------------------------------------------------- /images/aml/pbiAzMLIcon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/pbiAzMLIcon.jpg -------------------------------------------------------------------------------- /images/aml/pbiMLMapping.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/pbiMLMapping.jpg -------------------------------------------------------------------------------- /images/cleanup/removeRG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/cleanup/removeRG.png -------------------------------------------------------------------------------- /images/cleanup/removeTF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/cleanup/removeTF.png -------------------------------------------------------------------------------- /images/gw/vm-gw-basics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-basics.png -------------------------------------------------------------------------------- /images/gw/vm-gw-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-create.png -------------------------------------------------------------------------------- /images/powerBi/average.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/average.jpg -------------------------------------------------------------------------------- /images/powerBi/getdata.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/getdata.jpg -------------------------------------------------------------------------------- /images/powerBi/relModel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/relModel.jpg -------------------------------------------------------------------------------- /images/synapsews/DFsink.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/DFsink.jpg -------------------------------------------------------------------------------- /images/synapsews/SAPCDC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/SAPCDC.png -------------------------------------------------------------------------------- /images/synapsews/SAPODP.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/SAPODP.jpg -------------------------------------------------------------------------------- /images/synapsews/syn10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/syn10.jpg -------------------------------------------------------------------------------- /images/synapsews/syn11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/syn11.jpg -------------------------------------------------------------------------------- /images/aml/02-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/02-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/03-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/03-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/04-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/04-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/05-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/05-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/06-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/06-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/07-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/07-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/08-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/08-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/09-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/09-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/10-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/10-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/11-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/11-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/12-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/12-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/13-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/13-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/14-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/14-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/15-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/15-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/16-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/16-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/17-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/17-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/18-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/18-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/19-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/19-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/20-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/20-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/21-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/21-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/22-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/22-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/23-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/23-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/24-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/24-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/25-aml-studio.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/25-aml-studio.PNG -------------------------------------------------------------------------------- /images/aml/automated_ml2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/automated_ml2.jpg -------------------------------------------------------------------------------- /images/aml/azure_ml_icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/azure_ml_icon.jpg -------------------------------------------------------------------------------- /images/aml/endPointDetails.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/endPointDetails.png -------------------------------------------------------------------------------- /images/gw/vm-gw-connector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-connector.png -------------------------------------------------------------------------------- /images/gw/vm-gw-connsetup1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-connsetup1.png -------------------------------------------------------------------------------- /images/gw/vm-gw-connsetup2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-connsetup2.png -------------------------------------------------------------------------------- /images/gw/vm-gw-connsetup3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-connsetup3.png -------------------------------------------------------------------------------- /images/gw/vm-gw-downloads.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-downloads.png -------------------------------------------------------------------------------- /images/gw/vm-gw-gwsetup1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-gwsetup1.png -------------------------------------------------------------------------------- /images/gw/vm-gw-gwsetup2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-gwsetup2.png -------------------------------------------------------------------------------- /images/gw/vm-gw-gwsetup3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-gwsetup3.png -------------------------------------------------------------------------------- /images/gw/vm-gw-gwsetup4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-gwsetup4.png -------------------------------------------------------------------------------- /images/gw/vm-gw-management.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-management.png -------------------------------------------------------------------------------- /images/gw/vm-gw-networking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/vm-gw-networking.png -------------------------------------------------------------------------------- /images/paymentGen/notebook.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentGen/notebook.jpg -------------------------------------------------------------------------------- /images/paymentGen/publish.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentGen/publish.jpg -------------------------------------------------------------------------------- /images/paymentGen/pySpark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentGen/pySpark.jpg -------------------------------------------------------------------------------- /images/paymentGen/runAll.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentGen/runAll.jpg -------------------------------------------------------------------------------- /images/powerBi/reportView.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/reportView.jpg -------------------------------------------------------------------------------- /images/powerBi/sqlendpoint.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/sqlendpoint.jpg -------------------------------------------------------------------------------- /images/synapsews/DFAction.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/DFAction.jpg -------------------------------------------------------------------------------- /images/synapsews/DFAddSink.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/DFAddSink.jpg -------------------------------------------------------------------------------- /images/synapsews/IS_SAPCDC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/IS_SAPCDC.png -------------------------------------------------------------------------------- /images/synapsews/IS_SAPODP.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/IS_SAPODP.jpg -------------------------------------------------------------------------------- /images/synapsews/LS_SAPODP.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/LS_SAPODP.jpg -------------------------------------------------------------------------------- /images/synapsews/LS_SAPRFC.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/LS_SAPRFC.jpg -------------------------------------------------------------------------------- /images/synapsews/SAPTable.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/SAPTable.jpg -------------------------------------------------------------------------------- /images/synapsews/staging.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/staging.jpg -------------------------------------------------------------------------------- /images/aml/01-synapse-query.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/01-synapse-query.PNG -------------------------------------------------------------------------------- /images/aml/01a-synapse-query.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/01a-synapse-query.PNG -------------------------------------------------------------------------------- /images/aml/01b-synapse-query.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/01b-synapse-query.PNG -------------------------------------------------------------------------------- /images/aml/02a-aml-ws-setup.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/02a-aml-ws-setup.PNG -------------------------------------------------------------------------------- /images/aml/BestModelSummary.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/BestModelSummary.jpg -------------------------------------------------------------------------------- /images/aml/dateRelationships.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/dateRelationships.jpg -------------------------------------------------------------------------------- /images/aml/deployWebService.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/deployWebService.png -------------------------------------------------------------------------------- /images/aml/featureImportance.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/featureImportance.jpg -------------------------------------------------------------------------------- /images/gw/portal-on-prem-gw1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/portal-on-prem-gw1.png -------------------------------------------------------------------------------- /images/gw/portal-on-prem-gw2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/gw/portal-on-prem-gw2.png -------------------------------------------------------------------------------- /images/powerBi/MergeQueries.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/MergeQueries.jpg -------------------------------------------------------------------------------- /images/powerBi/averageOffset.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/averageOffset.jpg -------------------------------------------------------------------------------- /images/powerBi/dataselection.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/dataselection.jpg -------------------------------------------------------------------------------- /images/powerBi/whole_number.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/whole_number.jpg -------------------------------------------------------------------------------- /images/synapsews/DFAddSource.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/DFAddSource.jpg -------------------------------------------------------------------------------- /images/synapsews/LS_CosmosDB.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/LS_CosmosDB.jpg -------------------------------------------------------------------------------- /images/synapsews/LS_SAPOdata.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/LS_SAPOdata.jpg -------------------------------------------------------------------------------- /images/synapsews/LS_SQLPool.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/LS_SQLPool.jpg -------------------------------------------------------------------------------- /images/synapsews/copyAction.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/copyAction.jpg -------------------------------------------------------------------------------- /images/synapsews/ingestTool.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/ingestTool.jpg -------------------------------------------------------------------------------- /images/synapsews/rfcMapping.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/rfcMapping.jpg -------------------------------------------------------------------------------- /images/synapsews/triggerNow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/triggerNow.jpg -------------------------------------------------------------------------------- /images/aml/SalesPaymentForecast.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/SalesPaymentForecast.jpg -------------------------------------------------------------------------------- /images/aml/dataSetFromDataStore.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/dataSetFromDataStore.jpg -------------------------------------------------------------------------------- /images/paymentGen/attachCluster.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentGen/attachCluster.jpg -------------------------------------------------------------------------------- /images/paymentGen/notebookName.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentGen/notebookName.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/paymentIDS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/paymentIDS.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/publishDS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/publishDS.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/triggerNow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/triggerNow.jpg -------------------------------------------------------------------------------- /images/powerBi/AddBoxAndWhisker.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/AddBoxAndWhisker.jpg -------------------------------------------------------------------------------- /images/powerBi/AddCustomColumn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/AddCustomColumn.png -------------------------------------------------------------------------------- /images/powerBi/SalesPerRegion.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/SalesPerRegion.jpg -------------------------------------------------------------------------------- /images/powerBi/SalesRegionLink.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/SalesRegionLink.jpg -------------------------------------------------------------------------------- /images/powerBi/getMoreVisuals.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/getMoreVisuals.jpg -------------------------------------------------------------------------------- /images/powerBi/relationalModel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/relationalModel.jpg -------------------------------------------------------------------------------- /images/synapsews/DFSinkMapping.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/DFSinkMapping.jpg -------------------------------------------------------------------------------- /images/synapsews/DFSinkSettings.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/DFSinkSettings.jpg -------------------------------------------------------------------------------- /images/synapsews/DataFlowAction.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/DataFlowAction.jpg -------------------------------------------------------------------------------- /images/synapsews/EnableDFDebug.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/EnableDFDebug.jpg -------------------------------------------------------------------------------- /images/synapsews/LS_ODPDSSetup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/LS_ODPDSSetup.jpg -------------------------------------------------------------------------------- /images/synapsews/LinkedServices.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/LinkedServices.jpg -------------------------------------------------------------------------------- /images/synapsews/SAPECCService.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/SAPECCService.jpg -------------------------------------------------------------------------------- /images/synapsews/connectToPool.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/connectToPool.jpg -------------------------------------------------------------------------------- /images/synapsews/copyDataTool.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/copyDataTool.jpg -------------------------------------------------------------------------------- /images/synapsews/copyDataZView.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/copyDataZView.jpg -------------------------------------------------------------------------------- /images/synapsews/createSQLPool.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/createSQLPool.jpg -------------------------------------------------------------------------------- /images/synapsews/jsonCodeButton.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/jsonCodeButton.jpg -------------------------------------------------------------------------------- /images/synapsews/paymentMapping.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/paymentMapping.jpg -------------------------------------------------------------------------------- /images/synapsews/pipelineView.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/pipelineView.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/16_setup_se11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/16_setup_se11.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/17_setup_ddic1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/17_setup_ddic1.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/18_setup_ddic3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/18_setup_ddic3.jpg -------------------------------------------------------------------------------- /images/overview/ScenarioOverview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/overview/ScenarioOverview.jpg -------------------------------------------------------------------------------- /images/paymentGen/paymentsDataCSV.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentGen/paymentsDataCSV.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/cosmosDB_LS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/cosmosDB_LS.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/paymentsSink.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/paymentsSink.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/pipelineName.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/pipelineName.jpg -------------------------------------------------------------------------------- /images/powerBi/BoxAndWhiskerChart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/BoxAndWhiskerChart.jpg -------------------------------------------------------------------------------- /images/powerBi/SalesCustMatGroup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/SalesCustMatGroup.jpg -------------------------------------------------------------------------------- /images/powerBi/synapseconnection.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/synapseconnection.jpg -------------------------------------------------------------------------------- /images/synapsews/DFDerivedColumn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/DFDerivedColumn.jpg -------------------------------------------------------------------------------- /images/synapsews/DFSourceOptions.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/DFSourceOptions.jpg -------------------------------------------------------------------------------- /images/synapsews/DFSourceSettings.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/DFSourceSettings.jpg -------------------------------------------------------------------------------- /images/synapsews/LS_ODPDSPreview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/LS_ODPDSPreview.jpg -------------------------------------------------------------------------------- /images/synapsews/PaymentsPipeline.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/PaymentsPipeline.jpg -------------------------------------------------------------------------------- /images/synapsews/cosmosDBSSQLapi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/cosmosDBSSQLapi.jpg -------------------------------------------------------------------------------- /images/synapsews/cosmosPaymentDS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/cosmosPaymentDS.jpg -------------------------------------------------------------------------------- /images/synapsews/createSQLScript.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/createSQLScript.jpg -------------------------------------------------------------------------------- /images/synapsews/pipelineMonitor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/pipelineMonitor.jpg -------------------------------------------------------------------------------- /images/synapsews/stagingDirectory.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/stagingDirectory.jpg -------------------------------------------------------------------------------- /images/synapsews/synapsewsservice.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/synapsewsservice.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/08_setup_Activate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/08_setup_Activate.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/09_setup_openwith.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/09_setup_openwith.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/15_setup_ddicMenu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/15_setup_ddicMenu.jpg -------------------------------------------------------------------------------- /images/paymentGen/createNewNoteBook.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentGen/createNewNoteBook.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/azdlDirectory.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/azdlDirectory.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/copyDataAction.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/copyDataAction.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/createPipeline.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/createPipeline.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/paymentsSource.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/paymentsSource.jpg -------------------------------------------------------------------------------- /images/powerBi/PaymentDateCustGroup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/PaymentDateCustGroup.jpg -------------------------------------------------------------------------------- /images/powerBi/SalesPerRegionSetup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/SalesPerRegionSetup.jpg -------------------------------------------------------------------------------- /images/powerBi/selectPaymentFields.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/selectPaymentFields.jpg -------------------------------------------------------------------------------- /images/synapsews/DFImportProjection.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/DFImportProjection.jpg -------------------------------------------------------------------------------- /images/synapsews/DFPipelineStaging.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/DFPipelineStaging.jpg -------------------------------------------------------------------------------- /images/synapsews/IntegrationDataSet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/IntegrationDataSet.jpg -------------------------------------------------------------------------------- /images/synapsews/RFCCopyActionSink.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/RFCCopyActionSink.jpg -------------------------------------------------------------------------------- /images/synapsews/RFCCopyActionSource.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/RFCCopyActionSource.jpg -------------------------------------------------------------------------------- /images/synapsews/integrationRuntimes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/integrationRuntimes.jpg -------------------------------------------------------------------------------- /images/synapsews/openAzureDataStudio.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/openAzureDataStudio.jpg -------------------------------------------------------------------------------- /images/synapsews/openSynapseStudio.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/openSynapseStudio.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/11_setup_saplogon1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/11_setup_saplogon1.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/12_setup_saplogon2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/12_setup_saplogon2.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/13_setup_saplogon3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/13_setup_saplogon3.jpg -------------------------------------------------------------------------------- /images/aml/pbiMLPredPaymentDateColumn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/aml/pbiMLPredPaymentDateColumn.jpg -------------------------------------------------------------------------------- /images/paymentGen/salesOrderHeadersCSV.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentGen/salesOrderHeadersCSV.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/cosmosDBContents.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/cosmosDBContents.jpg -------------------------------------------------------------------------------- /images/synapsews/AzureSynapseAnalytics.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/AzureSynapseAnalytics.jpg -------------------------------------------------------------------------------- /images/synapsews/S4DSalesOrderItemsDS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/S4DSalesOrderItemsDS.jpg -------------------------------------------------------------------------------- /images/synapsews/SAPODQMONTransAction.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/SAPODQMONTransAction.jpg -------------------------------------------------------------------------------- /images/synapsews/SynapseStudioDevelop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/SynapseStudioDevelop.jpg -------------------------------------------------------------------------------- /images/synapsews/architectureOverview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/architectureOverview.png -------------------------------------------------------------------------------- /images/SAPCALsetup/10_setup_DataPreview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/10_setup_DataPreview.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/14_setup_standardMenu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/14_setup_standardMenu.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/19_setup_ddicContents.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/19_setup_ddicContents.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/21_setup_ddicContents2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/21_setup_ddicContents2.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/AzureCosmosDBSQLAPI.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/AzureCosmosDBSQLAPI.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/cosmosDBDataExplorer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/cosmosDBDataExplorer.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/createIntegrationDS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/createIntegrationDS.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/integrationDataset.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/integrationDataset.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/paymentsCosmos_IDS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/paymentsCosmos_IDS.jpg -------------------------------------------------------------------------------- /images/powerBi/SalesOrderHeadersItemsRel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/SalesOrderHeadersItemsRel.jpg -------------------------------------------------------------------------------- /images/powerBi/SalesPerYearCustomerGroup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/SalesPerYearCustomerGroup.jpg -------------------------------------------------------------------------------- /images/synapsews/DFDerivedColumnSettings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/DFDerivedColumnSettings.png -------------------------------------------------------------------------------- /images/synapsews/S4DSalesOrderHeadersDS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/S4DSalesOrderHeadersDS.jpg -------------------------------------------------------------------------------- /images/synapsews/SAPChangeCustReference.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/SAPChangeCustReference.jpg -------------------------------------------------------------------------------- /images/synapsews/SalesOrderHeaderPipeline.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/SalesOrderHeaderPipeline.jpg -------------------------------------------------------------------------------- /images/synapsews/SynSalesOrderHeadersDS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/SynSalesOrderHeadersDS.jpg -------------------------------------------------------------------------------- /images/synapsews/salesOrderItemsPipeline.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/salesOrderItemsPipeline.jpg -------------------------------------------------------------------------------- /images/synapsews/synapsewsservice_basics.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/synapsewsservice_basics.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/01_setup_HanaStudioIcon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/01_setup_HanaStudioIcon.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/04_setup_projectexplorer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/04_setup_projectexplorer.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/07_setup_ViewDefinition.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/07_setup_ViewDefinition.jpg -------------------------------------------------------------------------------- /images/paymentsSetup/newIntegrationDataSet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/paymentsSetup/newIntegrationDataSet.jpg -------------------------------------------------------------------------------- /images/synapsews/synapsewsservice_security.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/synapsewsservice_security.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/02_setup_DefaultWorkspace.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/02_setup_DefaultWorkspace.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/03_setup_HANADevPerspective.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/03_setup_HANADevPerspective.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/06_setup_DataDefinitionName.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/06_setup_DataDefinitionName.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/20_setup_databrowserExecute.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/20_setup_databrowserExecute.jpg -------------------------------------------------------------------------------- /images/powerBi/SalesPerYearCustomerGroupSetup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/SalesPerYearCustomerGroupSetup.jpg -------------------------------------------------------------------------------- /images/SAPCALsetup/05_setup_CreateDataDefinition.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/SAPCALsetup/05_setup_CreateDataDefinition.jpg -------------------------------------------------------------------------------- /images/powerBi/SalesOrderHeadersItemsRelDetails.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/powerBi/SalesOrderHeadersItemsRelDetails.jpg -------------------------------------------------------------------------------- /images/synapsews/SalesOrderHeaderPipelineTableAdapter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thzandvl/microhack-sap-data/HEAD/images/synapsews/SalesOrderHeaderPipelineTableAdapter.jpg -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | scripts/.ipynb_checkpoints 2 | *.pptx 3 | 4 | # ignore powerBi files 5 | pbi/* 6 | pbi/** 7 | 8 | # ignore terraform meta files 9 | **/.terraform/* 10 | *.terraform.* 11 | *.tfstate 12 | *.tfstate.* 13 | *.tfvars -------------------------------------------------------------------------------- /terraform/output.tf: -------------------------------------------------------------------------------- 1 | ####################################################################### 2 | ## Values to print at the end of the execution 3 | ####################################################################### 4 | 5 | output "public_ip_address" { 6 | value = data.azurerm_public_ip.gw-ip.ip_address 7 | } -------------------------------------------------------------------------------- /DeployAzureMLWorkspace.md: -------------------------------------------------------------------------------- 1 | ## Deploy Azure Machine Learning Workspace 2 | 3 | * In the azure portal search for `Azure Machine Learning`and select `create` 4 | 5 | 6 | 7 | 8 | 9 | * Enter the 'Resource Group' you've been using before or create a new one. 10 | * Enter a `Workspace Name` 11 | * Select the `Region` you've been using -------------------------------------------------------------------------------- /scripts/HttpTestScript.http: -------------------------------------------------------------------------------- 1 | //HTTP test functions for the SAP Data & AI MicroHack 2 | @SAPIP = 20.120.208.19 3 | @InstanceNr = 40 4 | @user = ADFUSER 5 | @password = Appl1ance 6 | 7 | ### GetMetaData 8 | // see https://learn.microsoft.com/en-us/odata/concepts/url-components?source=recommendations 9 | http://{{SAPIP}}:5{{InstanceNr}}00/sap/opu/odata/sap/sd_f1814_so_fs_srv/$metadata 10 | Authorization: Basic {{user}}:{{password}} 11 | 12 | ### Get Top 5 Sales Order Items 13 | http://{{SAPIP}}:5{{InstanceNr}}00/sap/opu/odata/sap/sd_f1814_so_fs_srv/C_Salesorderitemfs?$top=5 14 | Authorization: Basic {{user}}:{{password}} -------------------------------------------------------------------------------- /SoftwarePrerequisites.md: -------------------------------------------------------------------------------- 1 | # Software Prerequisites 2 | 3 | Please have the following software installed on your computer : 4 | * PowerBI Desktop, see [Download PowerBI Desktop](https://powerbi.microsoft.com/en-us/desktop/) 5 | * [Optional] Azure Data Studio, see [Download and install Azure Data Studio](https://docs.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio) 6 | * [Optional] Microsoft Azure Storage Explorer, see [Azure Storage Explorer](https://azure.microsoft.com/en-us/features/storage-explorer/) 7 | 8 | > SQL Statements and Azure Data Lake interaction can also be executed via Synapse Studio in your browser. 9 | 10 | [Go to Deploy and Prepare the Microhack Environment](DeployEnvironment.md) -------------------------------------------------------------------------------- /CleanEnvironment.md: -------------------------------------------------------------------------------- 1 | # Remove the Microhack environment with Terraform 2 | Once you are finished with the Microhack environment it is best to remove the environment. You can do this by removing the Resource Group. 3 | 4 | ## Remove the Resource Group 5 | * Click on the Resource Group and choose the option `Delete resource group`. You will need to type the name of the resource group in a textbox for confirmation, this is by default `microhack-sap-data-rg`. 6 | 7 | 8 | 9 | * Make sure you are in your home folder 10 | ``` 11 | cd ~ 12 | ``` 13 | * Remove the `microhack-sap-data` folder and the hidden `.terraform.d` folder 14 | ``` 15 | rm -rf microhack-sap-data 16 | rm -rf .terraform.d 17 | ``` 18 | 19 | -------------------------------------------------------------------------------- /DeploySynapseWorkspace.md: -------------------------------------------------------------------------------- 1 | # Deploy Synapse Workspace 2 | 3 | ## Introduction 4 | In this part we'll create the Synapse Workspace. 5 | 6 | ## Creation 7 | * Create a Synapse Analytics Workspace 8 | 9 | 10 | 11 | Enter the following settings : 12 | ### Basics : 13 | * Resource Group 14 | * Workspace Name 15 | * Data Lake Storage : Select an existing Data Lake or create a new one 16 | * File System Name : Select an exising File System or create a new one 17 | 18 | 19 | 20 | ### Security : 21 | * Admin Username & Password : this will be there userId and password for the related SQL Pools. 22 | 23 | 24 | 25 | Other settings can remain as default. 26 | 27 | # After deployment : 28 | * Create a `staging` directory within the Synapse Azure Data Lake container. This directory is used for storage of temporary files during data upload to Synapse. 29 | 30 | 31 | 32 | * Create a new SQL Pool\ 33 | Choose `DW100c` as performance level (to save on costs). 34 | 35 | 36 | 37 | Continue to the [Synapse configuration](SynapseWorkspace.md) -------------------------------------------------------------------------------- /terraform/variables.tf: -------------------------------------------------------------------------------- 1 | variable "location" { 2 | description = "Location to deploy resources" 3 | type = string 4 | default = "eastus" 5 | } 6 | 7 | variable "tags" { 8 | type = map 9 | 10 | default = { 11 | environment = "landingzone" 12 | deployment = "terraform" 13 | microhack = "sap-data" 14 | } 15 | } 16 | 17 | variable "prefix" { 18 | type = string 19 | default = "sap-data" 20 | } 21 | 22 | variable "address_space" { 23 | description = "The address space that is used by the virtual network." 24 | type = list(string) 25 | default = ["10.20.0.0/16"] 26 | } 27 | 28 | variable "subnet_prefixes" { 29 | description = "The address prefix to use for the subnet." 30 | type = list(string) 31 | default = ["10.20.1.0/24"] 32 | } 33 | 34 | variable "username" { 35 | description = "Administrator user name for virtual machine" 36 | type = string 37 | default = "azureadmin" 38 | } 39 | 40 | variable "password" { 41 | description = "Password must meet Azure complexity requirements" 42 | type = string 43 | default = "Sapdata!pass123" 44 | } 45 | 46 | variable "SID" { 47 | description = "The SAP SID name" 48 | type = string 49 | default = "S4D" 50 | } 51 | 52 | variable "vmsize" { 53 | description = "Size of the VMs" 54 | default = "Standard_B2s" 55 | } 56 | -------------------------------------------------------------------------------- /scripts/zbd_i_salesdocument_e.asddls: -------------------------------------------------------------------------------- 1 | @AbapCatalog.sqlViewName: 'ZBD_ISALESDOC_E' 2 | @AbapCatalog.compiler.compareFilter: true 3 | @AbapCatalog.preserveKey: true 4 | @AccessControl.authorizationCheck: #CHECK 5 | @EndUserText.label: 'Expanded CDS for Extraction I_Salesdocument' 6 | define view ZBD_I_Salesdocument_E as select from I_SalesDocument { 7 | key SalesDocument, 8 | //Category 9 | SDDocumentCategory, 10 | SalesDocumentType, 11 | SalesDocumentProcessingType, 12 | 13 | CreationDate, 14 | CreationTime, 15 | LastChangeDate, 16 | //@Semantics.systemDate.lastChangedAt: true 17 | LastChangeDateTime, 18 | 19 | //Organization 20 | SalesOrganization, 21 | DistributionChannel, 22 | OrganizationDivision, 23 | SalesGroup, 24 | SalesOffice, 25 | 26 | //SoldTo 27 | SoldToParty, 28 | _SoldToParty.CustomerName, 29 | _SoldToParty.Country, 30 | _SoldToParty.CityName, 31 | _SoldToParty.PostalCode, 32 | _SoldToParty.CustomerAccountGroup, 33 | 34 | //SalesDistrict 35 | SalesDistrict, 36 | 37 | CustomerGroup, 38 | CreditControlArea, 39 | PurchaseOrderByCustomer, 40 | 41 | //Pricing 42 | TotalNetAmount, 43 | TransactionCurrency, 44 | PricingDate, 45 | //RetailPromotion, 46 | //PriceDetnExchangeRate, 47 | //SalesDocumentCondition, 48 | 49 | //Billing 50 | BillingDocumentDate, 51 | BillingCompanyCode 52 | } where SDDocumentCategory = 'C' -------------------------------------------------------------------------------- /scripts/zbd_i_salesdocument_e1.asddls: -------------------------------------------------------------------------------- 1 | @AbapCatalog.sqlViewName: 'ZBD_ISALESDOC_E1' 2 | @AbapCatalog.compiler.compareFilter: true 3 | @AbapCatalog.preserveKey: true 4 | @AccessControl.authorizationCheck: #CHECK 5 | @EndUserText.label: 'Expanded CDS for Extraction I_Salesdocument' 6 | 7 | @Analytics.dataExtraction.enabled: true 8 | @Analytics.dataExtraction.delta.byElement.name:'LastChangeDateTime' 9 | 10 | define view ZBD_I_Salesdocument_E1 as select from I_SalesDocument { 11 | key SalesDocument, 12 | //Category 13 | SDDocumentCategory, 14 | SalesDocumentType, 15 | SalesDocumentProcessingType, 16 | 17 | CreationDate, 18 | CreationTime, 19 | LastChangeDate, 20 | //@Semantics.systemDate.lastChangedAt: true 21 | LastChangeDateTime, 22 | 23 | //Organization 24 | SalesOrganization, 25 | DistributionChannel, 26 | OrganizationDivision, 27 | SalesGroup, 28 | SalesOffice, 29 | 30 | //SoldTo 31 | SoldToParty, 32 | _SoldToParty.CustomerName, 33 | _SoldToParty.Country, 34 | _SoldToParty.CityName, 35 | _SoldToParty.PostalCode, 36 | _SoldToParty.CustomerAccountGroup, 37 | 38 | //SalesDistrict 39 | SalesDistrict, 40 | 41 | CustomerGroup, 42 | CreditControlArea, 43 | PurchaseOrderByCustomer, 44 | 45 | //Pricing 46 | TotalNetAmount, 47 | TransactionCurrency, 48 | PricingDate, 49 | //RetailPromotion, 50 | //PriceDetnExchangeRate, 51 | //SalesDocumentCondition, 52 | 53 | //Billing 54 | BillingDocumentDate, 55 | BillingCompanyCode 56 | } where SDDocumentCategory = 'C' 57 | -------------------------------------------------------------------------------- /scripts/MicroHack.postman_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "_postman_id": "bd1e7e18-0170-48dd-80a6-390a03b22327", 4 | "name": "MicroHack", 5 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" 6 | }, 7 | "item": [ 8 | { 9 | "name": "Test CashForeCast", 10 | "request": { 11 | "method": "POST", 12 | "header": [], 13 | "body": { 14 | "mode": "raw", 15 | "raw": "{\"data\": [ \r\n { \r\n \"CUSTOMERNAME\": \"Westend Cycles\",\r\n \"CUSTOMERGROUP\": \"Z1\",\r\n \"BILLINGCOMPANYCODE\": 1710,\r\n \"CUSTOMERACCOUNTGROUP\": \"KUNA\",\r\n \"CREDITCONTROLAREA\": \"A000\",\r\n \"DISTRIBUTIONCHANNEL\": 10,\r\n \"ORGANIZATIONDIVISION\": 0,\r\n \"SALESDISTRICT\": \"US0003\",\r\n \"SALESORGANIZATION\": 1710,\r\n \"SDDOCUMENTCATEGORY\": \"C\",\r\n \"CITYNAME\": \"RALEIGH\",\r\n \"POSTALCODE\": \"27603\"\r\n },\r\n { \r\n \"CUSTOMERNAME\": \"Skymart Corp\",\r\n \"CUSTOMERGROUP\": \"Z2\",\r\n \"BILLINGCOMPANYCODE\": 1710,\r\n \"CUSTOMERACCOUNTGROUP\": \"KUNA\",\r\n \"CREDITCONTROLAREA\": \"A000\",\r\n \"DISTRIBUTIONCHANNEL\": 10,\r\n \"ORGANIZATIONDIVISION\": 0,\r\n \"SALESDISTRICT\": \"US0004\",\r\n \"SALESORGANIZATION\": 1710,\r\n \"SDDOCUMENTCATEGORY\": \"C\",\r\n \"CITYNAME\": \"New York\",\r\n \"POSTALCODE\": \"10007\"\r\n }\r\n]}", 16 | "options": { 17 | "raw": { 18 | "language": "json" 19 | } 20 | } 21 | }, 22 | "url": { 23 | "raw": "http://xxx.westeurope.azurecontainer.io/score", 24 | "protocol": "http", 25 | "host": [ 26 | "xxx", 27 | "westeurope", 28 | "azurecontainer", 29 | "io" 30 | ], 31 | "path": [ 32 | "score" 33 | ] 34 | }, 35 | "description": "Test ML Cash Forecast" 36 | }, 37 | "response": [] 38 | } 39 | ] 40 | } -------------------------------------------------------------------------------- /terraform/CosmosDB.tf.bak: -------------------------------------------------------------------------------- 1 | ####################################################################### 2 | ## Create CosmosDB Account 3 | ####################################################################### 4 | 5 | resource "azurerm_cosmosdb_account" "cosmos" { 6 | name = "${var.prefix}-cosmos-${lower(random_id.id.hex)}" 7 | resource_group_name = azurerm_resource_group.rg.name 8 | location = azurerm_resource_group.rg.location 9 | offer_type = "Standard" 10 | kind = "GlobalDocumentDB" 11 | enable_automatic_failover = false 12 | 13 | consistency_policy { 14 | consistency_level = "Session" 15 | max_interval_in_seconds = 5 16 | max_staleness_prefix = 100 17 | } 18 | 19 | geo_location { 20 | location = azurerm_resource_group.rg.location 21 | failover_priority = 0 22 | } 23 | } 24 | 25 | ####################################################################### 26 | ## Create CosmosDB SQL DB 27 | ####################################################################### 28 | 29 | resource "azurerm_cosmosdb_sql_database" "db" { 30 | name = "SAP${var.SID}" 31 | resource_group_name = azurerm_cosmosdb_account.cosmos.resource_group_name 32 | account_name = azurerm_cosmosdb_account.cosmos.name 33 | throughput = 400 34 | } 35 | 36 | ####################################################################### 37 | ## Create CosmosDB SQL Container 38 | ####################################################################### 39 | 40 | resource "azurerm_cosmosdb_sql_container" "container" { 41 | name = "paymentData" 42 | resource_group_name = azurerm_cosmosdb_account.cosmos.resource_group_name 43 | account_name = azurerm_cosmosdb_account.cosmos.name 44 | database_name = azurerm_cosmosdb_sql_database.db.name 45 | partition_key_path = "/CustomerNr" 46 | partition_key_version = 1 47 | throughput = 400 48 | } 49 | -------------------------------------------------------------------------------- /terraform/MachineLearning.tf: -------------------------------------------------------------------------------- 1 | ####################################################################### 2 | ## Create Application Insights 3 | ####################################################################### 4 | 5 | resource "azurerm_log_analytics_workspace" "laws" { 6 | name = "${var.prefix}-la-ws" 7 | resource_group_name = azurerm_resource_group.rg.name 8 | location = azurerm_resource_group.rg.location 9 | sku = "PerGB2018" 10 | retention_in_days = 30 11 | } 12 | 13 | resource "azurerm_application_insights" "insights" { 14 | name = "${var.prefix}-insights" 15 | resource_group_name = azurerm_resource_group.rg.name 16 | location = azurerm_resource_group.rg.location 17 | workspace_id = azurerm_log_analytics_workspace.laws.id 18 | application_type = "web" 19 | tags = var.tags 20 | } 21 | 22 | ####################################################################### 23 | ## Create Blob Storage Account 24 | ####################################################################### 25 | 26 | resource "azurerm_storage_account" "blobaccount" { 27 | name = "sapblob${lower(random_id.id.hex)}" 28 | resource_group_name = azurerm_resource_group.rg.name 29 | location = azurerm_resource_group.rg.location 30 | account_tier = "Standard" 31 | account_replication_type = "LRS" 32 | tags = var.tags 33 | } 34 | 35 | ####################################################################### 36 | ## Create Machine Learning Workspace 37 | ####################################################################### 38 | 39 | resource "azurerm_machine_learning_workspace" "mlws" { 40 | name = "${var.prefix}-ml-ws" 41 | resource_group_name = azurerm_resource_group.rg.name 42 | location = azurerm_resource_group.rg.location 43 | application_insights_id = azurerm_application_insights.insights.id 44 | key_vault_id = azurerm_key_vault.keyvault.id 45 | storage_account_id = azurerm_storage_account.blobaccount.id 46 | tags = var.tags 47 | 48 | identity { 49 | type = "SystemAssigned" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /SynapseWorkspace.md: -------------------------------------------------------------------------------- 1 | # Configure Synapse Workspace 2 | 3 | ## Introduction 4 | In this part we'll configure the Synapse Workspace and install the Ingration Runtime on our Azure Virtual Machine. If you didn't install the Synapse workspace with the Terraform script (included by default) earlier you can deploy the Synapse Workspace following [these](DeploySynapseWorkspace.md) steps. 5 | 6 | # Synapse Configuration 7 | ## Register Integration Runtime 8 | The rest of the configuration is done via `Synapse Studio` which is shown on the `Overview` page:\ 9 | 10 | 11 | To register the integration runtime click on manage: 12 | 13 | 14 | 15 | * Click on `Integration runtimes`: 16 | 17 | 18 | * Click on `+ New`: 19 | 20 | 21 | 22 | 23 | * Choose `Azure, Self-Hosted`: 24 | 25 | 26 | 27 | * Choose `Self-Hosted`: 28 | 29 | 30 | 31 | * Choose a name for the runtime installation: 32 | 33 | 34 | 35 | * You will receive two key values. Make sure to note these down, in the next step you need one of these keys 36 | 37 | 38 | 39 | * In `Option 2: Manual setup` you can download the integration runtime via `Step 1`. Click on the link and copy the URL from the URL bar. Paste this URL in `Microsoft Edge` on your Gateway VM. 40 | 41 | Choose `Download` 42 | 43 | 44 | 45 | Select the latest version available: 46 | 47 | 48 | 49 | Choose `Next`. The download will start. 50 | 51 | * Execute the MSI package and press `Next`, `Install` and `Finish`, after that you get the question for the `authentication key`: 52 | 53 | 54 | 55 | * Enter one of the keys you noted down earlier from the integration runtime setup and choose `Register`. 56 | 57 | * Enter the name of the integration runtime node configured earlier, this is already completed by default 58 | 59 | 60 | 61 | * Choose `Finish`, this can take a few minutes. 62 | 63 | 64 | 65 | The installation is done and the node is connected and can be used. 66 | You can now proceed with the [next](DataFlowConfig.md) step. 67 | -------------------------------------------------------------------------------- /scripts/testForecast.py: -------------------------------------------------------------------------------- 1 | import urllib.request 2 | import json 3 | import os 4 | import ssl 5 | 6 | def allowSelfSignedHttps(allowed): 7 | # bypass the server certificate verification on client side 8 | if allowed and not os.environ.get('PYTHONHTTPSVERIFY', '') and getattr(ssl, '_create_unverified_context', None): 9 | ssl._create_default_https_context = ssl._create_unverified_context 10 | 11 | allowSelfSignedHttps(True) # this line is needed if you use self-signed certificate in your scoring service. 12 | 13 | data = { 14 | "data": 15 | [ 16 | { 17 | "CUSTOMERNAME": "Westend Cycles", 18 | "CUSTOMERGROUP": "Z1", 19 | "BILLINGCOMPANYCODE": 1710, 20 | "CUSTOMERACCOUNTGROUP": "KUNA", 21 | "CREDITCONTROLAREA": "A000", 22 | "DISTRIBUTIONCHANNEL": 10, 23 | "ORGANIZATIONDIVISION": 0, 24 | "SALESDISTRICT": "US0003", 25 | "SALESORGANIZATION": 1710, 26 | "SDDOCUMENTCATEGORY": "C", 27 | "CITYNAME": "RALEIGH", 28 | "POSTALCODE": "27603" 29 | }, 30 | { 31 | "CUSTOMERNAME": "Skymart Corp", 32 | "CUSTOMERGROUP": "Z2", 33 | "BILLINGCOMPANYCODE": 1710, 34 | "CUSTOMERACCOUNTGROUP": "KUNA", 35 | "CREDITCONTROLAREA": "A000", 36 | "DISTRIBUTIONCHANNEL": 10, 37 | "ORGANIZATIONDIVISION": 0, 38 | "SALESDISTRICT": "US0004", 39 | "SALESORGANIZATION": 1710, 40 | "SDDOCUMENTCATEGORY": "C", 41 | "CITYNAME": "New York", 42 | "POSTALCODE": "10007" 43 | } 44 | ], 45 | } 46 | 47 | body = str.encode(json.dumps(data)) 48 | 49 | #Replace with your own url 50 | url = 'http://2fe78f13-726c-43d0-9182-7e0b084a295b.westeurope.azurecontainer.io/score' 51 | api_key = '' # Replace this with the API key for the web service if needed 52 | headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)} 53 | 54 | req = urllib.request.Request(url, body, headers) 55 | 56 | try: 57 | response = urllib.request.urlopen(req) 58 | 59 | result = response.read() 60 | print(result) 61 | except urllib.error.HTTPError as error: 62 | print("The request failed with status code: " + str(error.code)) 63 | 64 | # Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure 65 | print(error.info()) 66 | print(json.loads(error.read().decode("utf8", 'ignore'))) 67 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SAP Microhack: CashFlow Prediction 2 | ## Summary 3 | In this Microhack we will: 4 | * Extract (Historical) Sales Orders from SAP S/4HANA and load this in Synapse 5 | * Upload historical payments from a non-SAP system, in this example Cosmos DB, to Synapse 6 | * Visualize the extracted Sales Orders and invoice data with Power BI 7 | * Predict incoming cash flow forSales Orders 8 | 9 | ## Scenario Description 10 | When customers buy goods, the corresponding payments are not done immediatly. Some customers will pay directly and other customers will pay at end of the payment terms. This makes it diffucult for companies to predict the incoming cashflow. In this simplified exercise we'll use Azure tooling to predict the incoming cashflow. For this we need data on past Sales Orders and past payments. The Sales Order information we'll retrieve from an S/4HANA system. For the payments we assume these are kept in a non SAP system. This non-SAP System is represented by a Cosmos DB. 11 | 12 | 13 | 14 | ## Setup 15 | The implementation steps beneath assume you've setup a S/4HANA system based upon a `SAP S/4HANA Fully Activated Appliance` 1909 or 2020 image from [SAP CAL](http://cal.sap.com). Also a Cosmos DB were the corresponding payment data is uploaded is assumed to be available. 16 | If you want to setup your own SAP CAL system and Cosmos DB, follow the steps at [MicroHack Setup](setup/SAPCALSetup.md). 17 | 18 | ## Implementation 19 | To execute the Microhack follow the steps below: 20 | 21 | 0. [Software Prerequisites](SoftwarePrerequisites.md) 22 | 1. [Deploy and Prepare the Microhack Environment](DeployEnvironment.md) 23 | 2. [Synapse Workspace Setup](SynapseWorkspace.md) 24 | 3. [DataFlow Config](DataFlowConfig.md) 25 | 4. [PowerBI Visualisation](PowerBiVisualisation.md) 26 | 5. [Predict Cash Flow](PredictIncomingCashflow.md) 27 | 6. [Integrate ML and PowerBI](IntegrateMLPowerBI.md) 28 | 7. [Cleanup the Microhack Environment](CleanEnvironment.md) 29 | 30 | ## Additional Documentation 31 | * [Overview and architecture of the SAP CDC capabilities (preview)](https://learn.microsoft.com/en-us/azure/data-factory/sap-change-data-capture-introduction-architecture) 32 | * [Copy data from an SAP table using Azure Data Factory](https://docs.microsoft.com/en-us/azure/data-factory/connector-sap-table) 33 | * [Copy data from SAP using oData and Azure Data Factory](https://docs.microsoft.com/en-us/azure/data-factory/connector-sap-ecc) 34 | * [SAP Data Integration using Azure Data Factory](https://github.com/Azure/Azure-DataFactory/blob/main/whitepaper/SAP%20Data%20Integration%20using%20Azure%20Data%20Factory.pdf) 35 | * [What is Azure Machine Learning](https://docs.microsoft.com/en-us/azure/machine-learning/overview-what-is-azure-ml) -------------------------------------------------------------------------------- /setup/generatePayments.md: -------------------------------------------------------------------------------- 1 | # Payment Generation 2 | 3 | The payments are generated based on the extracted Sales Order Headers. 4 | The underlying logic we used : 5 | 6 | `paymentDate = BillingdocumentDate + PayOffset +/- random(PayOffsetVariance)`. 7 | 8 | In our example the Payment Offset and Payment Offset Variance is depending on the CustomerGroup in the Sales Order Header. 9 | 10 | An example SPARK program is provided at [example Payment Generation](../scripts/CreatePaymentsFromCSV.ipynb). 11 | You can off course create your own program in python, jupiter notebooks, xls, ... . 12 | 13 | The spark program starts by reading the exported Sales Order Headers from a csv file on Azure Data Lake. So you need to create an Azure pipeline to extract the Sales Order Headers to a csv file. 14 | 15 | ## Sales Order Extraction 16 | You can reuse the Linked Service and Integration DataSet to export the Sales Order Headers from your SAP system towards Synapse. You can find the description [here](../DataFlowConfig.md). 17 | 18 | > Note : In this pipeline json make sure to add paramaters `convertDateToDateTime` and `convertTimeToTimespan` in order to have dates converted to data format. (Similar to the extraction towards Synapse) 19 | 20 | As sink for your pipeline, you need to create a Integration DataSet towards Azure DataLake. 21 | 22 | 23 | 24 | ## Payment Generation 25 | * In the development tab, create a new Notebook 26 | 27 | 28 | 29 | * Give a name to the Notebook 30 | 31 | 32 | * Verify the notebook language is set to `PySPark` 33 | 34 | 35 | * Copy paste the code from [sample payment generation](../scripts/CreatePaymentsFromCSV.ipynb) 36 | 37 | 38 | 39 | * Attach the `SampleSpark` cluster to the Notebook or create your own cluster 40 | 41 | 42 | * Adjust the program, eg. to include your file paths, if necessary 43 | 44 | * Publish the Notebook 45 | 46 | 47 | 48 | * Execute `Run-All` or execute cell-by-cell by using Shift-Enter 49 | 50 | 51 | > Note : on the first run the cluster needs to start up, so this will take some time 52 | 53 | * You can see the result in the `Data` tab under `Linked Data` 54 | 55 | 56 | 57 | * The resulting csv file can be uploaded to cosmos DB. For pipeline setup you can refer to Pipeline Setup paragraph at [Payment Generation](paymentsSetup.md). 58 | 191 | 192 | 193 | * In the `Settings` blade, `enable staging` and use the existing Linked Service to the Synapse Data Lake. 194 | 195 | * Enter the path to the staging directory of your Azure Data Lake. The staging directory `sap-data-adls/staging`, was already created by the Terraform script. 196 | 197 | 198 | 199 | * Now `Publish all` and once this is successfull trigger the pipeline, use `Add trigger` -> `Trigger now` -> `OK` 200 | 201 | 202 | 203 | 204 | 205 | * Swith to the `Monitor`view to monitor the pipeline run 206 | 207 | 208 | 209 | * Check the result in Synapse using SQL. You can do this via the `Develop` view and create a new SQL script. 210 | 211 | ```sql 212 | select count(*) from SalesOrderHeaders 213 | select * from SalesOrderHeaders 214 | ``` 215 | -------------------------------------------------------------------------------- /ExtractSalesOrderHeadersUsingODP.md: -------------------------------------------------------------------------------- 1 | # Extract Sales Order Headers using the SAP ODP Adapter 2 | 3 | In this section we'll extract the Sales Headers using an ABAP CDS View and the SAP ODP Adapter. 4 | 5 | The ABAP CDS View can be found [here](scripts/zbd_i_salesdocument_e1.asddls). 6 | Note the annotations by which the CDS View can be found in the SAP Data Dictionary (transaction SE11 or SE11n) and the annotations for Data Extraction and Delta Enablement. 7 | Here you can see that the field 'LastChangeDateTime' is used for Delta retrievals by the ODP adapter. 8 | 9 | ``` 10 | @AbapCatalog.sqlViewName: 'ZBD_ISALESDOC_E1' 11 | @Analytics.dataExtraction.enabled: true 12 | @Analytics.dataExtraction.delta.byElement.name:'LastChangeDateTime' 13 | ``` 14 | 15 | ## Synapse SQL Table to receive the Sales Order Headers 16 | The extracted Sales Order headers will be saved in a SQL Table within the Synapse SQL Pool. 17 | We will begin with creating this table using an SQL Script. 18 | 19 | * In the Azure Portal, select your Synapse Workspace. 20 | * Select `Open Synapse Studio` 21 | 22 | 23 | * Select 'Develop' 24 | 25 | 26 | * Create SQL Script 27 | 28 | 29 | > Note: Make sure to change the "Connect to" value from 'builtin' to your own SQL pool as shown in the screenshot below. As by default it will be connected to the 'builtin' SQL pool of Synapse. 30 | 31 | > 32 | 33 | ```sql 34 | CREATE TABLE SalesOrderHeaders( 35 | BILLINGCOMPANYCODE nvarchar(4), 36 | BILLINGDOCUMENTDATE date, 37 | COUNTRY nvarchar(3), 38 | CREATIONDATE date, 39 | CREATIONTIME time, 40 | CREDITCONTROLAREA nvarchar(4), 41 | CUSTOMERACCOUNTGROUP nvarchar(4), 42 | CUSTOMERGROUP nvarchar(2), 43 | CUSTOMERNAME nvarchar(80), 44 | DISTRIBUTIONCHANNEL nvarchar(2), 45 | LASTCHANGEDATE date, 46 | LASTCHANGEDATETIME decimal(21,0), 47 | -- MANDT int, 48 | ORGANIZATIONDIVISION nvarchar(2), 49 | PRICINGDATE date, 50 | PURCHASEORDERBYCUSTOMER nvarchar(35), 51 | SALESDISTRICT nvarchar(6), 52 | SALESDOCUMENT nvarchar(10) NOT NULL, 53 | SALESDOCUMENTPROCESSINGTYPE nvarchar(1), 54 | SALESDOCUMENTTYPE nvarchar(4), 55 | SALESGROUP nvarchar(3), 56 | SALESOFFICE nvarchar(4), 57 | SALESORGANIZATION nvarchar(4), 58 | SDDOCUMENTCATEGORY nvarchar(4), 59 | SOLDTOPARTY nvarchar(10), 60 | TOTALNETAMOUNT decimal(15, 2), 61 | TRANSACTIONCURRENCY nvarchar(5), 62 | CITYNAME nvarchar(35), 63 | POSTALCODE nvarchar(10) 64 | ) 65 | ``` 66 | 67 | # Implement the Sales Order Header Pipeline 68 | 69 | 70 | 71 | The sales order headers are extracted from SAP using the SAP ODP Adapter which uses an RFC. 72 | The CDS View to extract from is : `ZBD_ISALESDOC_E`. 73 | >Note: You can have a look in the SAP system to check the contents. Use the Data Dictionary, transaction `SE11`. 74 | 75 | ## Create a Linked Service to the SAP System 76 | * In Synapse Studio, go to the `Manage` View 77 | 78 | 79 | 80 | * Select `Linked Services` 81 | 82 | 83 | 84 | * Create a new `Linked Service` of type `SAP CDC Connector` 85 | 86 | 87 | 88 | * Enter the connection details for the SAP System, we used the name `S4SCLNT100ODP`. Use the username and password for the SAP system provided to you at the start of the Microhack. 89 | * Use the Integration Runtime which you installed in the previous steps 90 | * Enter a Subscriber Name. This name will also be used by ODP in the SAP System. 91 | 92 | 93 | 94 | >Note : use `Test Connection` to verify your settings 95 | 96 | >Note : SAP Connection Details will be handed out before the MicroHack 97 | 98 | ## Select the data to extract 99 | Create an Integration DataSet based on the previously created `Linked Service`. 100 | This dataset will act as the source. 101 | * Switch to the `Data` View 102 | * Create a new `Integration Dataset` 103 | 104 | 105 | 106 | * Use type `SAP CDC` 107 | 108 | 109 | 110 | * As a name we used `S4SalesOrderHeadersODP` and for the linked service we used the one we just created `S4DCLNT100ODP` 111 | * Since we'll be extracting from a CDS View, use `ABAP_CDS` as ODP context 112 | * Use `ZBD_ISALESDOC_E1$E` as ODP name, it can take some time before the list of tables is loaded 113 | 114 | 115 | 116 | * Use `Preview Data` to check if the data can be retrieved 117 | 118 | 119 | 120 | * Once the information is entered successfully and the data can be retrieved, leave the tab as-is. We will publish the changes after the rest of the components of this data flow are done. 121 | 122 | > Note : the source code of the CDS View can be found [here](scripts/zbd_i_salesdocument_e.asddls) 123 | 124 | ## Create a Linked Service to the Synapse SQL Pool 125 | * This will represent the target/sink of the pipeline 126 | 127 | * Switch to the `Manage` view 128 | 129 | * Create a new Linked Service of type `Azure Synapse Analytics`, as name we used `SynMicroHackPool` 130 | 131 | 132 | 133 | 134 | 135 | >Note: Since this linked service represents the Synapse SQL pool, it will be re-used in the `SalesOrderItems`and `Payments` pipeline. 136 | 137 | ### Create an Integration DataSet for the Synapse Sales Orders 138 | This dataset will act as the `sink` in our pipeline. 139 | * Switch to the `Data`View 140 | 141 | * Create a new `Integration DataSet` for the Synapse Sales Orders 142 | 143 | 144 | 145 | * As a name we used `SynSalesOrderHeaders` and for the linked service we used the one we just created `SynMicroHackPool` 146 | 147 | * Select the `SalesOrderHeaders` table 148 | 149 | 150 | 151 | * Again leave the information on the tab as-is and move to the next step 152 | 153 | ## Create an Integration pipeline 154 | 155 | * Create a new `Pipeline`, we used `ExtractSalesOrderHeaders` as a name 156 | 157 | 158 | 159 | * Use the `DataFlow` action (within `Move & transform` by dragging it onto the pipeline canvas 160 | 161 | 162 | 163 | * In the `General` tab, change the `Name`. We used `ExtractSalesOrderHeaders` as a name 164 | * In the `Settings`tab, change the `Run on Azure IR` to `AutoResolveIntegrationRuntime` 165 | * Enable `Staging`and enter the path to the staging directory of your Azure Data Lake. The staging directory `sap-data-adls/staging`, was already created by the Terraform script. 166 | 167 | 168 | 169 | * Press `+New` to create a new DataFlow 170 | 171 | 172 | 173 | * In the DataFlow, change the name. We used `ExtractSalesOrderHeadersDF` 174 | * Select `Add Source` 175 | 176 | 177 | 178 | * In `Source settings`: 179 | * change `Output stream name`. We used `S4SSalesOrderHeaders` 180 | * As `Dataset`, select the ODP dataset you create previously 181 | 182 | 183 | 184 | * Turn on `Data Flow Debug` 185 | 186 | 187 | 188 | * In `Source options`: 189 | * `Key Columns`: `SALESDOCUMENT` (Use the `Refresh` button) 190 | 191 | 192 | 193 | * In `Projection`, select `Import projection` 194 | 195 | 196 | 197 | >Note : Date fields like `CREATIONDATE`are detected as string. 198 | >Note : Under "Data 199 | 200 | * Now we need to do some date transformations. We'll do this by adding a `DerivedColumn` step 201 | ** Use `+` and then select `Derived Column` 202 | 203 | 204 | * In `Derived column's settings` 205 | * OutputStream Name = S4SSalesOrderHeadersUpd 206 | * Add `Derived Columns` using the formulas beneath. 207 | 208 | ``` 209 | CREATIONDATE = toDate(CREATIONDATE, "yyyyMMdd") 210 | PRICINGDATE = toDate(PRICINGDATE, "yyyyMMdd") 211 | BILLINGDOCUMENTDATE = toDate(BILLINGDOCUMENTDATE, "yyyyMMdd") 212 | LASTCHANGEDATE = toDate(LASTCHANGEDATE, "yyyyMMdd") 213 | CREATIONTIME = toTimestamp(concatWS(" ", CREATIONDATE, CREATIONTIME), "yyyyMMdd HHmmss") 214 | ``` 215 | 216 | 217 | * Use the `+` button to be able to add a next step to the dataflow 218 | * Select `Sink` 219 | 220 | 221 | 222 | * In the `Sink` tab 223 | * change the `Output stream name`, we used `SynSalesOrderHeaders` 224 | * Point the `Dataset`to your DataSet linked to the Synapse Sales Order Headers 225 | 226 | 227 | 228 | * In the `Settings`tab 229 | * Verify `Allow insert`, `Allow delete`, `Allow upsert`, `Allow update` is checked 230 | * KeyColums : select `SalesDocument`, this is the key column of the SalesOrderHeader Table in Synapse. 231 | 232 | 233 | 234 | * In the 'Mapping` tab 235 | ** Disable `Auto Mapping` to cross check the suggested mapping 236 | 237 | 238 | 239 | * Now `Publish all` and once this is successful trigger the pipeline, use `Add trigger` -> `Trigger now` -> `OK` 240 | 241 | 242 | 243 | 244 | 245 | * Swith to the `Monitor`view to monitor the pipeline run 246 | 247 | 248 | 249 | * Check the result in Synapse using SQL. You can do this via the `Develop` view and create a new SQL script. 250 | 251 | ```sql 252 | select count(*) from SalesOrderHeaders 253 | select * from SalesOrderHeaders 254 | ``` 255 | 256 | >Note : In the SAP BackEnd you can use transaction `ODQMON - Monitor for Operational Delta Queue` to monitor the ODP extractions. 257 | 258 | 259 | 260 | You can now continue with [Extracting Sales Order Line items](ExtractSalesOrderLineItemsUsingOData.md) 261 | 262 | ## Optional - Delta Changes 263 | Since our ODP connector (and CDS View) allows for delta changes, you can change a Sales Order. 264 | * Use Transaction `VA02 - Change Sales Order` 265 | * Change the `Cust. Reference`field in the Sales Order Header 266 | 267 | 268 | 269 | * Rerun the extraction pipeline 270 | * Change the `SalesDocument`in the sql script beneath to the changed Sales Order 271 | 272 | ```sql 273 | select PURCHASEORDERBYCUSTOMER from SalesOrderHeaders WHERE SalesDocument = '0000000004' 274 | ``` 275 | 276 | * Verify the result by running the sql script 277 | 278 | You can now continue with [Extracting Sales Order Line items](ExtractSalesOrderLineItemsUsingOData.md) 279 | -------------------------------------------------------------------------------- /PredictIncomingCashflow.md: -------------------------------------------------------------------------------- 1 | # Predict Incoming Cashflow 2 | In this section we'll create a model to predict incoming cashflow based on historical payment delays for previous sales. 3 | 4 | We'll be using [Azure Machine Learning](https://ml.azure.com) for this. 5 | 6 | ## Setup in Synapse 7 | In Synapse Studio, we will create a view joining data coming from `SalesOrderHeaders` and `Payments` tables that will be used for the prediction. 8 | You can create this view either via Synapse Studio or via Azure Data Studio. 9 | 10 | * Choose the `Develop` tab, select `SQL Scripts` and click on `Actions` then `New SQL Script` 11 | 12 | 13 | > Note : Ensure to connect to your SQL Pool 14 | 15 | * In the newly created script tab, copy paste the following SQL Query that will execute a join between `SalesOrderHeaders` and `Payments` to create a new view. 16 | 17 | ```sql 18 | CREATE VIEW [dbo].[SalesPaymentsFull] 19 | AS SELECT s.[SALESDOCUMENT] 20 | , s.[CUSTOMERNAME] 21 | , s.[CUSTOMERGROUP] 22 | , s.[BILLINGCOMPANYCODE] 23 | , s.[BILLINGDOCUMENTDATE] 24 | , p.[PaymentDate] as PAYMENTDATE 25 | , s.[CUSTOMERACCOUNTGROUP] 26 | , s.[CREDITCONTROLAREA] 27 | , s.[DISTRIBUTIONCHANNEL] 28 | , s.[ORGANIZATIONDIVISION] 29 | , s.[SALESDISTRICT] 30 | , s.[SALESGROUP] 31 | , s.[SALESOFFICE] 32 | , s.[SALESORGANIZATION] 33 | , s.[SDDOCUMENTCATEGORY] 34 | , s.[CITYNAME] 35 | , s.[POSTALCODE] 36 | , DATEDIFF(dayofyear, s.BILLINGDOCUMENTDATE, p.PaymentDate) as PAYMENTDELAYINDAYS 37 | FROM [dbo].[SalesOrderHeaders] as s 38 | JOIN [dbo].[Payments] as p ON REPLACE(LTRIM(REPLACE(s.[SALESDOCUMENT], '0', ' ')), ' ', '0') = p.[SalesOrderNr] 39 | ``` 40 | 41 | After `Refresh`the view will appear under `Views` when using Azure Data Studio. 42 | 43 | 44 | 45 | You can now test the view by executing the SQL: 46 | 47 | ```sql 48 | select * from SalesPaymentsFull 49 | ``` 50 | 51 | 52 | 53 | 54 | ## Azure Machine Learning 55 | 56 | The Azure Machine Learning Workspace is automatically deployed with the Terraform script from the first steps. If you didn't use the Terraform option you will first have to create an Azure Machine Learning Workspace via [these](DeployAzureMLWorkspace.md) instructions. 57 | 58 | For more info on Azure ML, pleae have a look at [What is automated machine learning (AutoML)](https://docs.microsoft.com/en-us/azure/machine-learning/concept-automated-ml). 59 | 60 | ### Open the ML Studio 61 | By default the name for the ML Workspace is `sap-data-ml-ws`. Go to this workspace via your resource group or using the search bar. You can now open the ML Studio via `Launch studio` from here or alternatively sign in via https://ml.azure.com. 62 | 63 | 64 | 65 | ### DataStore Creation 66 | First you have to point the ML studio to the location of your data, which is the Synapse SQL Pool. For this you have to create a `DataStore`. 67 | 68 | Go to the `Datastores` view and choose `New datastore`. As name we use `sap_data_ml_ds`. Connect to the Synapse database. 69 | 70 | * Datastore name : `sap_data_ml_ds` 71 | * Use Data store type : `Azure SQL Database` 72 | * Use Account Selection method : `Enter Manually` 73 | * Use your Synapse Workspace name as `Server Name` 74 | * Use your Synapse SQL Pool as Database Name, in our case this is `sapdatasynsql` 75 | * Select your Subscription 76 | * Enter your resource group name, in our case this is `microhack-sap-data-rg` 77 | * Authentication Type : `SQL Authentication` 78 | * Enter UserId and Password 79 | 80 | 81 | 82 | ### Automated ML 83 | We'll be using `Automated Machine Learning` to predict when customers will pay for their Sales Orders 84 | 85 | * On the left menu, click on `Automated ML` 86 | 87 | 88 | 89 | * Select `New Automated ML Run` 90 | * Select `Create Dataset` > `From datastore` 91 | 92 | 93 | A Guided Procedure will appear : 94 | * Basic info : Provide a Name for the `Dataset`. We use `SalesPaymentsView`. `Next`. 95 | 96 | 97 | 98 | * DataStore Selection : Select your datastore. 99 | 100 | 101 | 102 | 103 | * Use the following SQL query to get all the data from the view defined above. 104 | ```sql 105 | select * from SalesPaymentsFull 106 | ``` 107 | 108 | * Settings and Preview : To Ensure that your query is working fine you are able to visualize the data in the next window. 109 | 110 | 111 | * Schema : In order to get a model we have to do some cleaning of the data. 112 | 113 | 114 | 115 | 116 | 1. Uncheck the date fields (`BILLINGDOCUMENTDATE`, `PAYMENTDATE`) (We will not use these in our the model.) 117 | 118 | 119 | 2. Uncheck the fields that do not contain any data or which are not relevant for the forecast. Eg. `SALESDOCUMENT`, `SALESGROUP`, `SALESOFFICE` 120 | 121 | 122 | * Confirm details 123 | Create the dataset 124 | 125 | 126 | 127 | ## Configure the Automated ML Run 128 | * Select the newly created `Dataset` and create a new experiment. 129 | 130 | 131 | 1. Specify a name, we use `sap-data-ml-experiment` 132 | 2. Select the `Target Column` : in our case we will use `PAYMENTDELAYINDAYS` to predict the forecast. 133 | 134 | 135 | 136 | 3. Create a new compute that will be used to train your model. As name we use `sap-data-ml-vm`. In this example we use a maximum of 3 nodes to increase the processing power. 137 | 138 | 139 | 140 | 141 | 142 | > Note : Create a cluster of for example 3 nodes. Azure ML can then run multiple trainings in parallel. This will reduce the runtime of the Automated ML run. 143 | 144 | * We can now select the ML task type we want to use for this experiment, as we want to build prediction on a numeric value we will select the `Regression` task type. 145 | 146 | 147 | 148 | * Then we need to configure the `Regression` using `Additional Configuration settings`. 149 | 1. Select `Normalized root mean squared error` as Primary metric. 150 | 151 | 152 | 2. In order to reduce the runtime of our 'Automated ML Run', we'll deselect some algorithms : `ElasticNet, GradientBoosting, KNN, LassoLars, SGD, RandomForest, ExtremeRandomTrees, LightGBM, FastLinearRegressor, OnlineGradientDescentRegressor` 153 | > Note : If you have time you can include these algorithms. 154 | 155 | 156 | 157 | 3. `Save`, `Next`, skip the optional steps and click on `Finish` 158 | 159 | 160 | 161 | 162 | 4. During the run you can follow-up on the tested models via the `Models` tab 163 | 164 | 165 | 166 | 167 | ## Deploy the best model 168 | In this step we will deploy the best model that has been trained by AutoML and test it. 169 | >Note : the best model is selected based on the error between the predicted Payment Offset and the Actual offset. The model with the least error is selected. For more info on this, see [How automated ML works](https://docs.microsoft.com/en-us/azure/machine-learning/concept-automated-ml#how-automated-ml-works) 170 | 171 | * When the training is over, you can see the `Best model summary` section filled with the best algorithm, click on it. 172 | 173 | 174 | * You can navigate into the different sections and visualize the information about this algorithm, then click on deploy. 175 | 176 | 177 | * Specify a name for your deployment, we used `sap-data-ml-model`, and select `Azure Container Instance` as compute type. 178 | 179 | 180 | 181 | >Note: Select `Deploy to WebService` 182 | 183 | 184 | 185 | 186 | * Validate and wait for the completion of the deployment. This can take a few minutes. 187 | 188 | 189 | 190 | * When completed, click on the link to the `Deploy status` of the deployed model. 191 | 192 | 193 | 194 | * In this page, you will have access to information on your endpoint. It provides code samples to consume it from Python or C# but also a page to directly test your model. 195 | 196 | 197 | 198 | >Note: for a sample Python program, have a look at [testForecast.py](scripts/testForecast.py) 199 | 200 | * The Azure ML can also be called as a REST Interface. You could use this REST Interace in a custom Fiori App or ABAP code to execute a `Payment Prediction` when creating a Sales Order. 201 | 202 | ## Test the Payment Delay/Offset Prediction 203 | Select the `Test` tab and insert values coming from the `SalesPaymentsFull` view created at the beginning to replace the `example_value` value for the different fields and run the model. 204 | 205 | 206 | 207 | > Note : Experiment with CustomerGroup `Z1` and `Z2` and note the Payment Delay/Offset. You can also compare with the actual value in powerBI or in Synapse. 208 | 209 | You can now proceed with the [next](IntegrateMLPowerBI.md) step. 210 | 211 | ## [Optional] Test the ML Endpoint via HTTP 212 | You can also test the ML model via http. You can find the URL to use via the ML `endpoint` menu. 213 | 214 | 215 | 216 | Select your ML Model 217 | 218 | 219 | 220 | >Note : you can have a look at the API definition using the Swagger UI 221 | 222 | You can test the ML model via a HTTP post request on the Endpoint URI. Below you can find a sample request. 223 | 224 | HTTP Header 225 | ``` 226 | Content-Type : application/json 227 | ``` 228 | HTTP Body 229 | ``` 230 | {"data": [ 231 | { 232 | "CUSTOMERNAME": "Westend Cycles", 233 | "CUSTOMERGROUP": "Z1", 234 | "BILLINGCOMPANYCODE": 1710, 235 | "CUSTOMERACCOUNTGROUP": "KUNA", 236 | "CREDITCONTROLAREA": "A000", 237 | "DISTRIBUTIONCHANNEL": 10, 238 | "ORGANIZATIONDIVISION": 0, 239 | "SALESDISTRICT": "US0003", 240 | "SALESORGANIZATION": 1710, 241 | "SDDOCUMENTCATEGORY": "C", 242 | "CITYNAME": "RALEIGH", 243 | "POSTALCODE": "27603" 244 | }, 245 | { 246 | "CUSTOMERNAME": "Skymart Corp", 247 | "CUSTOMERGROUP": "Z2", 248 | "BILLINGCOMPANYCODE": 1710, 249 | "CUSTOMERACCOUNTGROUP": "KUNA", 250 | "CREDITCONTROLAREA": "A000", 251 | "DISTRIBUTIONCHANNEL": 10, 252 | "ORGANIZATIONDIVISION": 0, 253 | "SALESDISTRICT": "US0004", 254 | "SALESORGANIZATION": 1710, 255 | "SDDOCUMENTCATEGORY": "C", 256 | "CITYNAME": "New York", 257 | "POSTALCODE": "10007" 258 | } 259 | ]} 260 | ``` 261 | 262 | The HTTP response will looks as follows : 263 | ``` 264 | "{ "result": [30.966167923963926, 70.18799357457902]}" 265 | ``` 266 | 267 | >Note : if you're using `Postman`, you can find a sample test at [Postman Sample Test](scripts/MicroHack.postman_collection.json) 268 | 269 | You can now proceed with the [next](IntegrateMLPowerBI.md) step. 270 | 271 | ## [Optional] Automated ML - Best Model - Additional Info 272 | If you're interested in the 'Best Model' Auto ML selected, return to your 'Automated ML Run'. 273 | 274 | 275 | 276 | Under Model Summary you can see the Algorithm which was selected as best and the corresponding error. 277 | 278 | 279 | 280 | Under Models, you can see all the algorithms which were evaluated during the Auto ML run. 281 | 282 | 283 | 284 | Select your Best Model, and select `View Explanation`. Select an `Explanation ID` and `Aggregate Feature Importance`. 285 | 286 | 287 | 288 | From this view, you can see that `CUSTOMERGROUP` was the most important feature to determine the offset. -------------------------------------------------------------------------------- /DataFlowConfig.md: -------------------------------------------------------------------------------- 1 | # Configure the DataFlow 2 | ## Introduction 3 | In this step we'll setup the dataflows from the SAP System and Cosmos DB towards the Synapse DB. Sales OrderHeaders will be extracted via the first Synapse pipeline using the SAP ODP connector (Optionally you can use the SAP Table Connector), Sales Order Items will be extracted via a second Synapse Pipeline using the SAP ECC (oData) connector. 4 | Payment data will be extracted from CosmosDB using a third pipeline. 5 | 6 | 7 | Todo : Update picture 8 | 9 | ## Data Flow setup 10 | Please follow the sections beneath to setup the dataflows. 11 | ### Sales Order Header Dataflow 12 | See [Extracting Sales Order Headers using ODP Adapter](ExtractSalesOrderHeadersUsingODP.md) 13 | 14 | >Note: you can also use the SAP Table Adapter to extract the Sales Order Header, see [Extracting Sales Order Headers using the SAP Table Adapter](ExtractSalesOrderHeadersUsingTableAdapter.md) 15 | 16 | ### Sales Order Line ItemsDataflow 17 | See [Extracting Sales Order Line items](ExtractSalesOrderLineItemsUsingOData.md) 18 | 19 | ## Payment Dataflow 20 | See [Extracting Payments](ExtractPaymentsUsingCosmosDB.md) 21 | 22 | After setting up the Dataflows and extracting the data, you can continue with the [PowerBi Visualisation](PowerBiVisualisation.md) 23 | 24 | 25 | 26 | 27 | 28 | 296 | 297 | --------------------------------------------------------------------------------