├── 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 |
--------------------------------------------------------------------------------