Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CustomAnalytics/PVA_Analytics_Export.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name":"PVA_Analytics_Export1","description":"","version":"1.0","culture":"en-US","modifiedTime":"2021-03-17T15:53:39.3636332+00:00","pbi:mashup":{"fastCombine":false,"allowNativeQueries":false,"queriesMetadata":{"botcomponent":{"queryId":"d1c02c27-4fc7-47e3-a623-155fb9c6152d","queryName":"botcomponent","loadEnabled":true},"bot":{"queryId":"8dc931c2-0ac3-4755-ae25-61caf7c91d10","queryName":"bot","loadEnabled":true},"conversationtranscript":{"queryId":"48645ace-1a69-4f7b-b342-b0beaddf201b","queryName":"conversationtranscript","loadEnabled":true}},"document":"section Section1;\r\nshared botcomponent = let\r\n Source = Cds.Entities(\"**Your server url here**\", null),\r\n #\"Navigation 1\" = Source{[Group = \"entities\"]}[Data],\r\n #\"Navigation 2\" = #\"Navigation 1\"{[EntitySetName = \"botcomponents\"]}[Data]\r\nin\r\n #\"Navigation 2\";\r\nshared bot = let\r\n Source = Cds.Entities(\"**Your server url here**\", null),\r\n #\"Navigation 1\" = Source{[Group = \"entities\"]}[Data],\r\n #\"Navigation 2\" = #\"Navigation 1\"{[EntitySetName = \"bots\"]}[Data]\r\nin\r\n #\"Navigation 2\";\r\nshared conversationtranscript = let\r\n Source = Cds.Entities(\"**Your server url here**\", null),\r\n #\"Navigation 1\" = Source{[Group = \"entities\"]}[Data],\r\n #\"Navigation 2\" = #\"Navigation 1\"{[EntitySetName = \"conversationtranscripts\"]}[Data]\r\nin\r\n #\"Navigation 2\";\r\n"},"annotations":[{"name":"pbi:QueryGroups","value":"[]"}],"entities":[{"$type":"LocalEntity","name":"botcomponent","description":"","pbi:refreshPolicy":{"$type":"FullRefreshPolicy","location":"botcomponent.csv"},"attributes":[{"name":"botcomponentid","dataType":"string"},{"name":"category","dataType":"string"},{"name":"componentidunique","dataType":"string"},{"name":"componentstate","dataType":"int64"},{"name":"componentstate_display","dataType":"string"},{"name":"componenttype","dataType":"int64"},{"name":"componenttype_display","dataType":"string"},{"name":"content","dataType":"string"},{"name":"createdby","dataType":"string"},{"name":"createdon","dataType":"dateTimeOffset"},{"name":"createdonbehalfby","dataType":"string"},{"name":"data","dataType":"string"},{"name":"description","dataType":"string"},{"name":"importsequencenumber","dataType":"int64"},{"name":"ismanaged","dataType":"boolean"},{"name":"language","dataType":"int64"},{"name":"language_display","dataType":"string"},{"name":"modifiedby","dataType":"string"},{"name":"modifiedon","dataType":"dateTimeOffset"},{"name":"modifiedonbehalfby","dataType":"string"},{"name":"name","dataType":"string"},{"name":"overriddencreatedon","dataType":"dateTimeOffset"},{"name":"overwritetime","dataType":"dateTimeOffset"},{"name":"ownerid","dataType":"string"},{"name":"owningbusinessunit","dataType":"string"},{"name":"owningteam","dataType":"string"},{"name":"owninguser","dataType":"string"},{"name":"parentbotcomponentid","dataType":"string"},{"name":"schemaname","dataType":"string"},{"name":"solutionid","dataType":"string"},{"name":"statecode","dataType":"int64"},{"name":"statecode_display","dataType":"string"},{"name":"statuscode","dataType":"int64"},{"name":"statuscode_display","dataType":"string"},{"name":"timezoneruleversionnumber","dataType":"int64"},{"name":"utcconversiontimezonecode","dataType":"int64"},{"name":"versionnumber","dataType":"int64"}],"partitions":[]},{"$type":"LocalEntity","name":"bot","description":"","pbi:refreshPolicy":{"$type":"FullRefreshPolicy","location":"bot.csv"},"attributes":[{"name":"accesscontrolpolicy","dataType":"int64"},{"name":"accesscontrolpolicy_display","dataType":"string"},{"name":"applicationmanifestinformation","dataType":"string"},{"name":"authenticationmode","dataType":"int64"},{"name":"authenticationmode_display","dataType":"string"},{"name":"authenticationtrigger","dataType":"int64"},{"name":"authenticationtrigger_display","dataType":"string"},{"name":"authorizedsecuritygroupids","dataType":"string"},{"name":"botid","dataType":"string"},{"name":"componentidunique","dataType":"string"},{"name":"componentstate","dataType":"int64"},{"name":"componentstate_display","dataType":"string"},{"name":"configuration","dataType":"string"},{"name":"createdby","dataType":"string"},{"name":"createdon","dataType":"dateTimeOffset"},{"name":"createdonbehalfby","dataType":"string"},{"name":"iconbase64","dataType":"string"},{"name":"importsequencenumber","dataType":"int64"},{"name":"ismanaged","dataType":"boolean"},{"name":"language","dataType":"int64"},{"name":"language_display","dataType":"string"},{"name":"modifiedby","dataType":"string"},{"name":"modifiedon","dataType":"dateTimeOffset"},{"name":"modifiedonbehalfby","dataType":"string"},{"name":"name","dataType":"string"},{"name":"overriddencreatedon","dataType":"dateTimeOffset"},{"name":"overwritetime","dataType":"dateTimeOffset"},{"name":"ownerid","dataType":"string"},{"name":"owningbusinessunit","dataType":"string"},{"name":"owningteam","dataType":"string"},{"name":"owninguser","dataType":"string"},{"name":"publishedby","dataType":"string"},{"name":"publishedon","dataType":"dateTimeOffset"},{"name":"schemaname","dataType":"string"},{"name":"solutionid","dataType":"string"},{"name":"statecode","dataType":"int64"},{"name":"statecode_display","dataType":"string"},{"name":"statuscode","dataType":"int64"},{"name":"statuscode_display","dataType":"string"},{"name":"timezoneruleversionnumber","dataType":"int64"},{"name":"utcconversiontimezonecode","dataType":"int64"},{"name":"versionnumber","dataType":"int64"}],"partitions":[]},{"$type":"LocalEntity","name":"conversationtranscript","description":"","pbi:refreshPolicy":{"$type":"FullRefreshPolicy","location":"conversationtranscript.csv"},"attributes":[{"name":"bot_conversationtranscriptid","dataType":"string"},{"name":"content","dataType":"string"},{"name":"conversationstarttime","dataType":"dateTimeOffset"},{"name":"conversationtranscriptid","dataType":"string"},{"name":"createdby","dataType":"string"},{"name":"createdon","dataType":"dateTimeOffset"},{"name":"createdonbehalfby","dataType":"string"},{"name":"importsequencenumber","dataType":"int64"},{"name":"metadata","dataType":"string"},{"name":"modifiedby","dataType":"string"},{"name":"modifiedon","dataType":"dateTimeOffset"},{"name":"modifiedonbehalfby","dataType":"string"},{"name":"name","dataType":"string"},{"name":"overriddencreatedon","dataType":"dateTimeOffset"},{"name":"ownerid","dataType":"string"},{"name":"owningbusinessunit","dataType":"string"},{"name":"owningteam","dataType":"string"},{"name":"owninguser","dataType":"string"},{"name":"schematype","dataType":"string"},{"name":"schemaversion","dataType":"string"},{"name":"statecode","dataType":"int64"},{"name":"statecode_display","dataType":"string"},{"name":"statuscode","dataType":"int64"},{"name":"statuscode_display","dataType":"string"},{"name":"timezoneruleversionnumber","dataType":"int64"},{"name":"utcconversiontimezonecode","dataType":"int64"},{"name":"versionnumber","dataType":"int64"}],"partitions":[]}]}
Binary file added CustomAnalytics/PVA_Dashboard.pbit
Binary file not shown.
48 changes: 48 additions & 0 deletions CustomAnalytics/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Custom analytics solution for Power Virtual Agents
This solution allows customers to create a Power BI dashboard for their Power Virtual Agents chatbots

## Solution components
- Microsoft Dataverse
- Microsoft Power BI DataFlows
- Microsoft Power BI Desktop
- (Optional) Azure Data Lake Storage v2

## Solution files
- PVA_Analytics_Export.json - this is the template for a PowerBI DataFlow
- PVA_Dashboard.pbit - Power BI template file

## Installation

# Installation requirements
- One or more Power Virtual Agents bots
- A Power BI account

# Installation steps
1. Edit the DataFlow template
1. FInd the server url associated with your Dataverse environment (it will look like https://yourservice.crm.dynamics.com)
2. Open the file 'PVA Analytics_Export.json' in a text editor
3. Perform a find and replace on the file - swapping the placeholder "**Your server url here**" with your Datverse URL
2. Create the DataFlow from the template
1. Log in to Power BI at http://powerbi.com
2. Select the Workspace you wish to deploy the DataFlow to - or create a new one if you wish (the template defaults to 'PVA_Analytics')
3. Select New - DataFlow
4. Select Import Model
5. Select the edited file 'PVA Analytics_Export.json'. Your DataFlow job should now be ready - test refreshing the data.
3. Create your PowerBI report
1. Open the file PVA_Dashboard.pbit
2. Enter the parameters you are prompted for. These are:
1. The name of the Powe rBI workspace
2. The name of the DataFlow you created
3. The report should pull through the data and render it
4. You can now save the report to share through the Power BI portal

# TBD Connecting Azure Data Lake Storage for data archival
TBD

## Using the report
The report is based on what is shared through the Power Virtual Agents portal, but with some important differences:

- The report includes all bots in your environment
- The report includes a date filter - and can support a range of dates greater than the 30 days supported natively in Dataverse
- The report includes all trace data emitted with the bot, allowing users to build reports on data import to them
- The report can be shared with users and business decision makers without access to Power Virtual Agents