{"version":21,"variables":[{"version":2,"key":"Application","type":"query","visible":true,"editable":true,"input":"fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == \"Events - Query\"\n| summarize distinctApps=collectDistinct(client.application_context)\n| fields values = arrayFlatten(arrayRemoveNulls(distinctApps))","multiple":true,"defaultValue":["3420b2ac-f1cf-4b24-b62d-61ba1ba8ed05*"]},{"version":2,"key":"User","type":"query","visible":true,"editable":true,"input":"fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == \"Events - Query\"\n| summarize distinctUsers=collectDistinct(user.email)\n| fields values = arrayFlatten(arrayRemoveNulls(distinctUsers))\n","multiple":true,"defaultValue":["3420b2ac-f1cf-4b24-b62d-61ba1ba8ed05*"]},{"version":2,"key":"Price","type":"text","visible":true,"defaultValue":"0.00"}],"tiles":{"0":{"title":"Bizevents query count","type":"data","query":"fetch dt.system.query_executions\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| makeTimeseries query_count=count(), time:timestamp, bins:40","visualization":"barChart","visualizationSettings":{"chartSettings":{"truncationMode":"middle","legend":{"hidden":true},"xAxisLabel":"timeframe","xAxisScaling":"analyzedTimeframe","colorPalette":"swamps","fieldMapping":{"leftAxisValues":["query_count"],"timestamp":"timeframe"}},"coloring":{"colorRules":[{"field":"DT.name","comparator":"= *value*","value":"","type":"string","colorMode":"color-palette","colorPalette":"swamps"}]},"unitsOverrides":[{"identifier":"query_count","unitCategory":"amount","baseUnit":"one","displayUnit":null,"decimals":0,"suffix":"","delimiter":false,"added":1717404430040}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"componentState":{"selectedAnalyzerName":"dt.statistics.ui.ForecastAnalyzer","inputData":{"dt.statistics.ui.ForecastAnalyzer":{"generalParameters":{"timeframe":{"startTime":"now-2h","endTime":"now"},"resolveDimensionalQueryData":true,"logVerbosity":"INFO"},"forecastHorizon":100,"forecastOffset":1,"query":"fetch dt.system.events, from:now()-7d, to:now()\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == \"Log Management & Analytics - Query\"\n| filter event.version == \"1.0\"\n//| makeTimeseries query_count=count(), query_volume=sum(billed_bytes / 1024 / 1024 / 1024.0), interval:1h\n| makeTimeseries query_count=count(), interval:1h\n| fieldsAdd query_count=arrayMovingAvg(query_count, 5)"}}},"davisVisualization":{"isAvailable":true,"selectedOutputs":["1667436935","-1273383542"]}}},"5":{"type":"markdown","content":"\n##### Top 25 queries by billable volume\n💡 **Optimization opportunity**: Events - Retain with dedicated buckets can help control query costs.\n[Learn how to configure your bucket](https://docs.dynatrace.com/docs/analyze-explore-automate/logs/lma-use-cases/lma-e2e-included-log-queries)\n\n---\n---"},"10":{"type":"markdown","content":"##### Event queries not following best practices\nMonitor DQL queries fetching business events which don't utilize [best practices](https://docs.dynatrace.com/docs/shortlink/dql-best-practices) for query performance and costs. Following queries are missing commands/parameters like `filter`, `scanLimit`, `samplingRatio`, and `limit` and have default timeframe.\n\n💡 **Optimization opportunity**: for frequently executed queries, suggest users to filter, limit, or sample data to avoid reoccurring high-volume queries.\n\n---"},"17":{"title":"Yesterday (cost)","type":"data","query":"fetch dt.system.events, from: -14d@d, to: @d\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == \"Events - Query\"\n| makeTimeseries daily=sum(billed_bytes), interval:1d\n| fieldsAdd daily_cost=(daily[]/1024/1024/1024*toDouble($Price))\n| fieldsAdd yesterday_cost = arrayLast(daily_cost)","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","label":"yesterday_cost","recordField":"yesterday_cost","isIconVisible":true,"prefixIcon":"MoneyIcon","sparklineSettings":{"record":"daily_cost"},"trend":{"isVisible":true}},"unitsOverrides":[{"identifier":"daily_cost","unitCategory":"unspecified","baseUnit":"count","displayUnit":null,"decimals":2,"suffix":"","delimiter":false,"added":1718620268306},{"identifier":"yesterday_cost","unitCategory":"unspecified","baseUnit":"count","displayUnit":null,"decimals":2,"suffix":"","delimiter":false,"added":1718807904460}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"20":{"type":"markdown","content":"### Bucket utilization\nValidate your bucket segmentation strategy:\n* **\"Current volumes per bizevents bucket\" pie chart** references total event volume per bucket since created.\n* **\"Queries across Grail bizevents buckets\" donut chart** shows which buckets your users have queried in the selected timeframe.\n\n💡 **Optimization opportunity**: If most of your queries address a single/default bucket, you could improve query performance and costs by segmenting data into multiple buckets.\n\n---"},"24":{"type":"markdown","content":"#### Additional resources\n**Usage and costs data in Account Management**\n* [User account](https://myaccount.dynatrace.com) > Recent accounts > (Choose your account) > Subscription > Overview > Cost and usage details: Events - Query > View details\n**Optimize DQL usage**\n* [DQL Best practices](https://docs.dynatrace.com/docs/shortlink/dql-best-practices) (docs)\n* [The value of business events: How IT can increase business agility](https://www.dynatrace.com/news/blog/the-value-of-business-events-how-it-can-increase-business-agility/) (blog)\n* [Extract metrics from business events to increase the value of Business Analytics](https://www.dynatrace.com/news/blog/extract-metrics-from-business-events-to-increase-the-value-of-business-analytics/) (blog)\n**Manage your Dynatrace Platform Subscription budget**\n* [Avoid billing surprises with smart Dynatrace cost monitors](https://www.dynatrace.com/news/blog/avoid-billing-surprises-with-smart-dynatrace-cost-monitors/) (blog)\n* [How to use DPS cost monitors](https://docs.dynatrace.com/docs/shortlink/cost-monitors) (docs)\n* [Set up and get alerted with custom budgets with DPS](https://docs.dynatrace.com/docs/shortlink/dps-budgets) (docs)\n**Business Observability**\n* [Business events end-to-end example](https://docs.dynatrace.com/docs/shortlink/bo-use-case) (docs)\n* [Business event capture](https://docs.dynatrace.com/docs/observe/business-observability/bo-events-capturing) (docs)\n* [Business event processing with OpenPipeline](https://docs.dynatrace.com/docs/observe/business-observability/bo-event-processing) (docs)\n* [Restrict users to query only data they need](https://docs.dynatrace.com/docs/shortlink/grail-data-model) (docs)\n#\n---\n---\n\n#### About this dashboard\n**User access**\n* This dashboard uses data in `dt.system` tables about billing usage events and query execution events.\n* Assign or remove [default access policies](https://docs.dynatrace.com/docs/shortlink/built-in-policies#access-to-data) with `storage:system:read` permission to provide or restrict access to this data.\n**Price**\n* Fill in the Price field with custom figure to measure cost per queried gibibyte (see [Events - Query pricing](https://docs.dynatrace.com/docs/license/capabilities/events/dps-events-query)).\n* Please note that consecutive or parallel DPS contracts can have different price points. Thus, cost calculated in this dashboard might differ from official cost as shown in the Account Management portal.\n\nRelease v1.0"},"27":{"type":"markdown","content":"##### Query volume statistics, trends, and costs\nFor Events - Retain costs, go to Account Management Portal."},"35":{"title":"Last 7d (total)","type":"data","query":"fetch dt.system.query_executions, from:-28d@d, to:@d\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| makeTimeseries weekly=sum(scanned_bytes), interval:7d\n| fieldsAdd lastweek = arrayLast(weekly)","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","label":"lastweek","recordField":"lastweek","prefixIcon":"","sparklineSettings":{"record":"weekly"},"trend":{"isVisible":true}},"unitsOverrides":[{"identifier":"lastweek","unitCategory":"data","baseUnit":"byte","displayUnit":null,"decimals":1,"suffix":"","delimiter":true,"added":1718620268306}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"36":{"title":"Last 28d (billable)","type":"data","query":"fetch dt.system.events, from:-84d@d, to:@d\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == \"Events - Query\"\n| makeTimeseries monthly=sum(billed_bytes), interval:28d\n| fieldsAdd lastmonth = arrayLast(monthly)","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","label":"lastmonth","recordField":"lastmonth","prefixIcon":"","sparklineSettings":{"record":"monthly"},"trend":{"isVisible":true}},"unitsOverrides":[{"identifier":"lastmonth","unitCategory":"data","baseUnit":"byte","displayUnit":null,"decimals":1,"suffix":"","delimiter":true,"added":1718620268306}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"37":{"title":"Yesterday (billable)","type":"data","query":"fetch dt.system.events, from: -14d@d, to: @d\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == \"Events - Query\"\n| makeTimeseries daily=sum(billed_bytes), interval:1d\n| fieldsAdd yesterday = arrayLast(daily)","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","label":"yesterday","recordField":"yesterday","prefixIcon":"","sparklineSettings":{"record":"daily"},"trend":{"isVisible":true}},"unitsOverrides":[{"identifier":"yesterday","unitCategory":"data","baseUnit":"byte","displayUnit":null,"decimals":1,"suffix":"","delimiter":true,"added":1718620268306}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"38":{"title":"Last 7d (cost)","type":"data","query":"fetch dt.system.events, from:-28d@d, to:@d\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == \"Events - Query\"\n| makeTimeseries daily=sum(billed_bytes), interval:7d\n| fieldsAdd daily_cost=(daily[]/1024/1024/1024*toDouble($Price))\n| fieldsAdd yesterday_cost = arrayLast(daily_cost)","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","label":"yesterday_cost","recordField":"yesterday_cost","isIconVisible":true,"prefixIcon":"MoneyIcon","sparklineSettings":{"record":"daily_cost"},"trend":{"isVisible":true}},"unitsOverrides":[{"identifier":"daily_cost","unitCategory":"unspecified","baseUnit":"count","displayUnit":null,"decimals":2,"suffix":"","delimiter":false,"added":1718620268306},{"identifier":"yesterday_cost","unitCategory":"unspecified","baseUnit":"count","displayUnit":null,"decimals":2,"suffix":"","delimiter":false,"added":1718807904460}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"39":{"title":"Last 28d (cost)","type":"data","query":"fetch dt.system.events, from:-84d@d, to:@d\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == \"Events - Query\"\n| makeTimeseries daily=sum(billed_bytes), interval:28d\n| fieldsAdd daily_cost=(daily[]/1024/1024/1024*toDouble($Price))\n| fieldsAdd yesterday_cost = arrayLast(daily_cost)","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","label":"yesterday_cost","recordField":"yesterday_cost","isIconVisible":true,"prefixIcon":"MoneyIcon","sparklineSettings":{"record":"daily_cost"},"trend":{"isVisible":true}},"unitsOverrides":[{"identifier":"daily_cost","unitCategory":"unspecified","baseUnit":"count","displayUnit":null,"decimals":0,"suffix":"","delimiter":false,"added":1718620268306},{"identifier":"yesterday_cost","unitCategory":"unspecified","baseUnit":"count","displayUnit":null,"decimals":2,"suffix":"","delimiter":false,"added":1718807904460}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"40":{"type":"markdown","content":"##### Event queries in Dashboards\nEvent queries (`fetch bizevents`) in Dashboards are a convenient way to observe business data, but frequent dashboard reloads by multiple users can drastically increase event query costs.\n💡 **Optimization opportunity**: for very frequently accessed event dashboards, [extract metrics from business events during ingest with OpenPipeline](https://docs.dynatrace.com/docs/shortlink/lma-log-dashboards). By replacing event queries with metric queries, you may increase performance and reduce costs.\n\n---\n---"},"45":{"type":"markdown","content":"##### Dashboards can include event queries that auto-refresh every minute\n💡 **Optimization opportunity**: if you see results here, double check with the user if there is a valid use case for querying business events on a dashboard every minute, or manual refresh is enough.\n\n---\n---"},"46":{"title":"","type":"data","query":"fetch dt.system.query_executions\n| filter status == \"SUCCEEDED\" and startsWith(query_string, \"fetch bizevents\") and (client.application_context==\"dynatrace.dashboards\" or client.application_context == \"dynatrace.classic.dashboard\")\n| filter in(\"ALL\", $User) OR in(user.email, $User)\n| dedup query_id\n| summarize {\n    query_count=count(),\n    queries = collectDistinct(query_id),\n    dashboards = collectDistinct(client.source),\n    users = collectDistinct(user.email)\n  }, by:{\n    query_string,\n    bin(timestamp, 30m)\n  }\n| filter query_count >= 25 // at least 25 executions per 30 minutes\n| summarize {\n    executions = toLong(sum(query_count)),\n    dashboards = collectDistinct(dashboards),\n    users = collectDistinct(users)\n  }, by:{\n    query_string\n  }\n| fields query_string, executions, dashboards=arrayFlatten(dashboards), users = arrayFlatten(users)","visualization":"table","visualizationSettings":{"table":{"colorThresholdTarget":"background","rowDensity":"default","sortBy":[{"columnId":"[\"query_string\"]","direction":"ascending"}]},"coloring":{"colorRules":[]}},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":1,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"48":{"title":"","type":"data","query":"fetch dt.system.query_executions\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| filter in(\"ALL\", $Application) OR in(client.application_context, $Application)\n| filter in(\"ALL\", $User) OR in(user.email, $User)\n| summarize \nUser = takeFirst(user.email),\nApp=takeFirst(client.application_context),\nscanned_bytes = sum(scanned_bytes),\nbillable_bytes = sum(scanned_bytes.on_demand),\ncount(), \nby: query_id\n| summarize \nquery_count = countDistinct(query_id), \nscanned_bytes = sum(scanned_bytes),\nbillable_bytes = sum(billable_bytes),\nby: { User, App }\n| fieldsAdd query_cost = billable_bytes/1024/1024/1024*toDouble($Price)\n| fields User, App,\n`Query count (user/app)`=query_count,\n`Query volume (user/app)`=scanned_bytes\n| limit 50","visualization":"table","visualizationSettings":{"table":{"columnOrder":["[\"User\"]","[\"App\"]","[\"Query count (user/app)\"]","[\"Query volume (user/app)\"]"],"rowDensity":"default","sortBy":[{"columnId":"[\"Query volume (user/app)\"]","direction":"descending"}]},"unitsOverrides":[{"identifier":"Query volume (user/app)","unitCategory":"data","baseUnit":"byte","displayUnit":"gibibyte","decimals":2,"suffix":"","delimiter":true,"added":1722501228555},{"identifier":"Billable query volume (user/app)","unitCategory":"data","baseUnit":"byte","displayUnit":"gibibyte","decimals":2,"suffix":"","delimiter":false,"added":1748277954716}],"coloring":{"colorRules":[]}},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":1,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"50":{"title":"","type":"data","query":"fetch dt.system.query_executions\n| filter status == \"SUCCEEDED\" and startsWith(query_string, \"fetch bizevents\") and (client.application_context==\"dynatrace.dashboards\" or client.application_context == \"dynatrace.classic.dashboard\")\n| filter in(\"ALL\", $User) OR in(user.email, $User)\n| parse client.source, \"DATA 'ui/dashboard/' STRING:dashboard.id\"\n| fieldsAdd dashboard.id = if(client.application_context==\"dynatrace.classic.dashboard\", client.source, else:dashboard.id)\n| summarize {\n    single_query_scanned = sum(scanned_bytes.on_demand),\n    single_query_total_scanned = sum(scanned_bytes),    \n    dashboards = collectDistinct(dashboard.id)\n  }, by:{\n    query_id,\n    user.email,\n    query_string,\n    client.application_context\n  }\n| sort single_query_scanned desc\n| limit 500 // to avoid lookup timeout, we are using only top 500 query executions\n| lookup [\n  fetch dt.system.events\n],\n  sourceField: query_id,\n  lookupField: query_id,\n  prefix: \"billing.\",\n  executionOrder:leftFirst\n\n| summarize {\n    total_consumption = sum(billing.billed_bytes),\n    total_volume = sum(single_query_total_scanned),    \n    execution_count = count(),\n    users = collectDistinct(user.email),\n    dashboards = collectDistinct(dashboards),\n    app = collectDistinct(client.application_context)\n  }, by:{query_string}\n| fields query_string, execution_count, total_volume, total_consumption, total_cost=(total_consumption/1024/1024/1024*toDouble($Price)), Dashboards=arrayFlatten(dashboards), Users=users, App=app\n| fieldsRename `Query string`=query_string, `Execution count`=execution_count, `Total volume`=total_volume ,`Total billable volume`=total_consumption, `Total cost`=total_cost\n| sort `Total volume` desc\n| limit 50","visualization":"table","visualizationSettings":{"table":{"rowDensity":"default","sortBy":[{"columnId":"[\"Total billable volume\"]","direction":"descending"}]},"unitsOverrides":[{"identifier":"Total volume","unitCategory":"data","baseUnit":"byte","displayUnit":"gibibyte","decimals":1,"suffix":"","delimiter":true,"added":1722507492912},{"identifier":"Total cost","unitCategory":"unspecified","baseUnit":"none","displayUnit":null,"decimals":0,"suffix":"","delimiter":true,"added":1722507558256},{"identifier":"Total billable volume","unitCategory":"data","baseUnit":"byte","displayUnit":"gibibyte","decimals":2,"suffix":"","delimiter":false,"added":1748280811329}],"coloring":{"colorRules":[]}},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":1,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"51":{"title":"","type":"data","query":"fetch dt.system.events\n| filter status == \"SUCCEEDED\" and startsWith(query_string, \"fetch bizevents\")\n| filter in(\"ALL\", $User) OR in(user.email, $User)\n| filter in(\"ALL\", $Application) OR in(client.application_context, $Application)\n| filterOut contains(query_string, \"filter\")\n  OR contains(query_string,\"scanLimitGBytes\")\n  OR contains(query_string,\"from:\")\n  OR contains(query_string, \"samplingRatio\")\n  OR contains(query_string, \"limit\")\n| summarize {executions = count(), query_volume=sum(scanned_bytes),billable_query_volume=sum(scanned_bytes.on_demand)}, by: {query = query_string, user.email, app = client.application_context}\n| fieldsAdd query_cost = billable_query_volume/1024/1024/1024*toDouble($Price)\n| fields  query, Executions=executions, query_volume, User=user.email, App=app\n| fieldsRename `Query string`=query, `Query volume`=query_volume\n| sort `Query volume` desc, Executions desc, User asc\n| limit 50","visualization":"table","visualizationSettings":{"table":{"rowDensity":"default","sortBy":[{"columnId":"[\"Query string\"]","direction":"ascending"}],"columnOrder":["[\"Query string\"]","[\"Executions\"]","[\"Query volume\"]","[\"User\"]","[\"App\"]"],"columnWidths":{"[\"Query string\"]":1398}},"unitsOverrides":[{"identifier":"Query volume","unitCategory":"data","baseUnit":"byte","displayUnit":"gibibyte","decimals":1,"suffix":"","delimiter":true,"added":1722509218723},{"identifier":"Query cost","unitCategory":"unspecified","baseUnit":"none","displayUnit":null,"decimals":0,"suffix":"","delimiter":true,"added":1722509229463},{"identifier":"Billable query volume","unitCategory":"data","baseUnit":"byte","displayUnit":"gibibyte","decimals":2,"suffix":"","delimiter":false,"added":1748278285966}],"coloring":{"colorRules":[]}},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":1,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"52":{"type":"markdown","content":"### Business event query usage and costs\nThis dashboard helps to understand business event query usage and identify optimization opportunities.\n**Minimum recommended timeframe is 2h.**\n"},"61":{"title":"Yesterday (total)","type":"data","query":"fetch dt.system.query_executions, from: -14d@d, to: @d\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| makeTimeseries daily=sum(scanned_bytes), interval:1d\n| fieldsAdd yesterday = arrayLast(daily)","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","label":"yesterday","recordField":"yesterday","prefixIcon":"","sparklineSettings":{"record":"daily"},"trend":{"isVisible":true}},"unitsOverrides":[{"identifier":"yesterday","unitCategory":"data","baseUnit":"byte","displayUnit":null,"decimals":1,"suffix":"","delimiter":true,"added":1718620268306}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"62":{"title":"Last 7d (billable)","type":"data","query":"fetch dt.system.events, from:-28d@d, to:@d\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == \"Events - Query\"\n| makeTimeseries weekly=sum(billed_bytes), interval:7d\n| fieldsAdd lastweek = arrayLast(weekly)","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","label":"lastweek","recordField":"lastweek","prefixIcon":"","sparklineSettings":{"record":"weekly"},"trend":{"isVisible":true}},"unitsOverrides":[{"identifier":"lastweek","unitCategory":"data","baseUnit":"byte","displayUnit":null,"decimals":1,"suffix":"","delimiter":true,"added":1718620268306}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"63":{"title":"Last 28d (total)","type":"data","query":"fetch dt.system.query_executions, from:-84d@d, to:@d\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| makeTimeseries monthly=sum(scanned_bytes), interval:28d\n| fieldsAdd lastmonth = arrayLast(monthly)\n","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","label":"lastmonth","recordField":"lastmonth","prefixIcon":"","sparklineSettings":{"record":"monthly"},"trend":{"isVisible":true}},"unitsOverrides":[{"identifier":"lastmonth","unitCategory":"data","baseUnit":"byte","displayUnit":null,"decimals":1,"suffix":"","delimiter":true,"added":1718620268306}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"69":{"title":"Daily query volume (Last 30d)","type":"data","query":"fetch dt.system.query_executions, from: now()-30d\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| makeTimeseries \n  `Total query volume`=sum(scanned_bytes), \n  `Included query volume`=sum(scanned_bytes.included), \n  `Billable query volume`=sum(scanned_bytes.on_demand), \n  time:timestamp, interval: 1d","visualization":"lineChart","visualizationSettings":{"chartSettings":{"truncationMode":"start","legend":{"position":"bottom"},"xAxisLabel":"timeframe","xAxisScaling":"analyzedTimeframe","tooltip":{"variant":"shared"},"colorPalette":"purple-rain","fieldMapping":{"leftAxisValues":["Total query volume","Included query volume","Billable query volume"],"timestamp":"timeframe"},"gapPolicy":"connect"},"coloring":{"colorRules":[{"field":"DT.name","comparator":"= *value*","value":"","type":"string","colorMode":"color-palette","colorPalette":"purple-rain"}]},"autoSelectVisualization":false,"unitsOverrides":[{"identifier":"scanned_bytes","unitCategory":"data","baseUnit":"byte","displayUnit":"gibibyte","decimals":1,"suffix":"","delimiter":true,"added":1717404430040},{"identifier":"scanned_bytes.on_demand","unitCategory":"data","baseUnit":"byte","displayUnit":"gibibyte","decimals":2,"suffix":"","delimiter":false,"added":1748272837672},{"identifier":"scanned_bytes.included","unitCategory":"data","baseUnit":"byte","displayUnit":"gibibyte","decimals":2,"suffix":"","delimiter":false,"added":1748272854058}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"componentState":{"selectedAnalyzerName":"dt.statistics.ui.ForecastAnalyzer","inputData":{"dt.statistics.ui.ForecastAnalyzer":{"generalParameters":{"timeframe":{"startTime":"now-2h","endTime":"now"},"resolveDimensionalQueryData":true,"logVerbosity":"INFO"},"forecastHorizon":100,"forecastOffset":2,"query":"fetch dt.system.events, from:now()-7d, to:now()-15m\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == \"Log Management & Analytics - Query\"\n| filter event.version == \"1.0\"\n| makeTimeseries query_volume=sum(billed_bytes / 1024 / 1024 / 1024.0), interval:1h\n| fieldsAdd query_volume=arrayMovingAvg(query_volume, 5)"}}},"davisVisualization":{"isAvailable":true,"selectedOutputs":["1667436935","-1273383542"]}}},"70":{"title":"Current volumes per logs bucket included usage data in selected timeframe","type":"data","query":"fetch dt.system.buckets\n| filter dt.system.table == \"bizevents\"\n| fields bucket = name, included_query_days, retention_days, size = estimated_uncompressed_bytes \n| join [\n  fetch dt.system.query_executions\n  | filter table == \"bizevents\"\n  | filter status == \"SUCCEEDED\"  \n  | summarize scanned_bytes = sum(scanned_bytes), scanned_bytes.included = sum(scanned_bytes.included), by: { bucket }\n], on: bucket, kind:outer\n| fieldsAdd right.scanned_bytes = if (isNull(right.scanned_bytes), 0.0, else: right.scanned_bytes)\n| fieldsAdd right.scanned_bytes.included = if (isNull(right.scanned_bytes.included), 0.0, else: right.scanned_bytes.included)\n| sort right.scanned_bytes desc\n| fields `Bucket name` = bucket, Size = size, `Retention` = retention_days, `Included queries period` = included_query_days, `Total query volume` = right.scanned_bytes, `Included query volume` = right.scanned_bytes.included","visualization":"table","visualizationSettings":{"table":{"columnOrder":["[\"Bucket name\"]","[\"Size\"]","[\"Retention\"]","[\"Included queries period\"]","[\"Total query volume\"]","[\"Included query volume\"]"],"rowDensity":"default"},"autoSelectVisualization":false,"unitsOverrides":[{"identifier":"Size","unitCategory":"data","baseUnit":"byte","displayUnit":null,"decimals":2,"suffix":"","delimiter":false,"added":1716553779865},{"identifier":"Total query volume","unitCategory":"data","baseUnit":"byte","displayUnit":null,"decimals":2,"suffix":"","delimiter":false,"added":1748279418040},{"identifier":"Included query volume","unitCategory":"data","baseUnit":"byte","displayUnit":null,"decimals":2,"suffix":"","delimiter":false,"added":1748279452463},{"identifier":"Retention","unitCategory":"time","baseUnit":"day","displayUnit":null,"decimals":0,"suffix":"","delimiter":false,"added":1748279512808},{"identifier":"Included queries period","unitCategory":"time","baseUnit":"day","displayUnit":null,"decimals":0,"suffix":"","delimiter":false,"added":1748279522547}],"coloring":{"colorRules":[]}},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"71":{"type":"markdown","content":"### Detailed business event query usage and optimization opportunities\nAnalyze event query usage across different Applications and Users. Use the timeframe and filters above to narrow down usage data by `Application` and `User`.\nFor cost analysis, you can set the `Price` variable to your contract price.\n\n---\n---"},"72":{"title":"Median query duration","type":"data","query":"fetch dt.system.query_executions\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| summarize duration = percentile(execution_duration_ms, 50)\n","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","label":"timestamp","recordField":"duration","isIconVisible":true,"prefixIcon":"StopwatchIcon","colorThresholdTarget":"background","trend":{"isVisible":true}},"coloring":{"colorRules":[{"value":1000,"comparator":"≥","field":"duration","colorMode":"custom-color","customColor":{"Default":"var(--dt-colors-charts-status-warning-default, #eca440)"}},{"value":100,"comparator":"<","field":"duration","colorMode":"custom-color","customColor":{"Default":"var(--dt-colors-charts-status-ideal-default, #2f6863)"}}]},"autoSelectVisualization":false,"unitsOverrides":[{"identifier":"duration","unitCategory":"time","baseUnit":"millisecond","displayUnit":null,"decimals":2,"suffix":"","delimiter":false,"added":1748272854058}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"componentState":{"selectedAnalyzerName":"dt.statistics.ui.ForecastAnalyzer","inputData":{"dt.statistics.ui.ForecastAnalyzer":{"generalParameters":{"timeframe":{"startTime":"now-2h","endTime":"now"},"resolveDimensionalQueryData":true,"logVerbosity":"INFO"},"forecastHorizon":100,"forecastOffset":2,"query":"fetch dt.system.events, from:now()-7d, to:now()-15m\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == \"Log Management & Analytics - Query\"\n| filter event.version == \"1.0\"\n| makeTimeseries query_volume=sum(billed_bytes / 1024 / 1024 / 1024.0), interval:1h\n| fieldsAdd query_volume=arrayMovingAvg(query_volume, 5)"}}},"davisVisualization":{"isAvailable":true,"selectedOutputs":["1667436935","-1273383542"]}}},"73":{"title":"Weekly active users ","type":"data","query":"fetch dt.system.query_executions, from: now()-28d, to: @d\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| makeTimeseries users=countDistinct(user.email), interval: 7d\n| fieldsAdd daily = arrayLast(users)\n","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","label":"lastmonth","recordField":"daily","prefixIcon":"","sparklineSettings":{"record":"users"},"trend":{"isVisible":true}},"unitsOverrides":[{"identifier":"daily","unitCategory":"unspecified","baseUnit":"none","displayUnit":null,"decimals":0,"suffix":"","delimiter":false,"added":1718620268306}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"74":{"title":"Current volumes per logs bucket","type":"data","query":"fetch dt.system.buckets\n| filter dt.system.table == \"bizevents\"\n| summarize sum(estimated_uncompressed_bytes), by: {name}, alias: size\n| sort size desc","visualization":"pieChart","visualizationSettings":{"chartSettings":{"legend":{"position":"right"},"categoryOverrides":{},"categoricalBarChartSettings":{"categoryAxis":"name"},"circleChartSettings":{"valueType":"relative","groupingThresholdType":"relative"}},"unitsOverrides":[{"identifier":"size","unitCategory":"data","baseUnit":"byte","displayUnit":null,"decimals":2,"suffix":"","delimiter":false,"added":1716553779865}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"75":{"title":"Queries across Grail log buckets","type":"data","query":"fetch dt.system.query_executions\n| filter status == \"SUCCEEDED\" AND scanned_bytes>0\n| fields query_string, status, timestamp, scanned_bytes, bucket = if(bucket == \"\",\"empty\",else:bucket)\n| summarize {volume = count(), sum(scanned_bytes)}, by:(bucket)\n| summarize array = collectArray(record(bucket=bucket,volume=volume)),volume=collectArray(volume)\n| fieldsAdd sum = arraySum(volume)\n| expand array\n| lookup [\n  fetch dt.system.buckets\n],\n  sourceField: array[bucket],\n  lookupField: name,\n  prefix: \"buckets.\",\n  executionOrder:leftFirst\n| filter buckets.dt.system.table==\"bizevents\"\n| fields `bucket` = array[bucket], `volume` = array[volume], percentage = (toDouble(array[volume]/sum) * 100)\n| sort percentage desc","visualization":"donutChart","visualizationSettings":{"chartSettings":{"legend":{"position":"right"},"categoryOverrides":{},"categoricalBarChartSettings":{"categoryAxis":"bucket"},"circleChartSettings":{"valueType":"relative","groupingThresholdType":"relative"}}},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"77":{"title":"","type":"data","query":"fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\" and event.type == \"Events - Query\"\n| filter in(\"ALL\", $User) OR in(user.email, $User)\n| filter in(\"ALL\", $Application) OR in(client.application_context, $Application)\n| sort billed_bytes desc\n| limit 25\n| lookup [\n  fetch dt.system.query_executions, \n from:toTimestamp($dt_timeframe_from)-2h, \n to:toTimestamp($dt_timeframe_to) \n],\n  sourceField: query_id,\n  lookupField: query_id,\n  prefix: \"executiondata.\",\n  executionOrder:leftFirst\n| fields\n    timestamp=toTimestamp(executiondata.timestamp),\n    query_string=executiondata.query_string,\n    query_volume=toDouble(billed_bytes),\n    query_cost = toDouble(billed_bytes)/1024/1024/1024*toDouble($Price),\n    User=user.email,\n    App=client.application_context\n| fieldsRename `Query string`=query_string, `Billable query volume`=query_volume, `Query cost`=query_cost\n| sort `Billable query volume` desc","visualization":"table","visualizationSettings":{"table":{"rowDensity":"default","sortBy":[{"columnId":"[\"Query string\"]","direction":"ascending"}],"columnWidths":{"[\"Query string\"]":600}},"unitsOverrides":[{"identifier":"Billable query volume","unitCategory":"data","baseUnit":"byte","displayUnit":"gibibyte","decimals":1,"suffix":"","delimiter":true,"added":1722507076574},{"identifier":"Query cost","unitCategory":"unspecified","baseUnit":"none","displayUnit":null,"decimals":0,"suffix":"","delimiter":true,"added":1722507089121}],"coloring":{"colorRules":[]}},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":1,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"78":{"type":"markdown","content":"### Events Analytics\n---\nBusiness event analytics helps you make sense of captured business data by turning raw events into actionable insights. Whether you're investigating business anomalies, monitoring real-time KPIs, or exploring trends, it enables you to query, filter, and visualize business events with precision.\nYou can use Notebooks, Dashboards, or the Logs & Events viewer app.\n\n[Explore in Notebooks](/ui/apps/dynatrace.notebooks/)"},"79":{"type":"markdown","content":"### Events on Dashboards\n---\nDashboards are a central place to monitor everything from infrastructure health to business performance. While you can display raw business event data directly, extracting metrics from business events using OpenPipeline helps streamline dashboards for faster loading and clearer insights.\nThis approach makes it easier to track key patterns, set alerts, and share meaningful views across teams — without overloading your dashboards with complex queries.\n\n[Optimize dashboards with event queries](https://docs.dynatrace.com/docs/analyze-explore-automate/logs/lma-use-cases/lma-log-query-dashboard)\n\n"},"81":{"title":"Weekly number of users by app","type":"data","query":"fetch dt.system.query_executions, from: now()-28d\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| filter in(client.application_context, {\"dynatrace.notebooks\", \"dynatrace.biz.explore\"})\n| makeTimeseries monthly=countDistinct(user.email), by:{client.application_context}, interval:7d","visualization":"barChart","visualizationSettings":{"chartSettings":{"truncationMode":"start","legend":{"position":"bottom"},"xAxisLabel":"timeframe","xAxisScaling":"analyzedTimeframe","tooltip":{"variant":"shared"},"colorPalette":"fireplace","fieldMapping":{"leftAxisValues":["monthly"],"timestamp":"timeframe"}},"coloring":{"colorRules":[{"field":"DT.name","comparator":"= *value*","value":"","type":"string","colorMode":"color-palette","colorPalette":"fireplace"}]},"autoSelectVisualization":false,"unitsOverrides":[],"dataMapping":{"displayedFields":["client.application_context"]}},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"componentState":{"selectedAnalyzerName":"dt.statistics.ui.ForecastAnalyzer","inputData":{"dt.statistics.ui.ForecastAnalyzer":{"generalParameters":{"timeframe":{"startTime":"now-2h","endTime":"now"},"resolveDimensionalQueryData":true,"logVerbosity":"INFO"},"forecastHorizon":100,"forecastOffset":1,"query":"fetch dt.system.events, from:now()-7d, to:now()\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == \"Log Management & Analytics - Query\"\n| filter event.version == \"1.0\"\n//| makeTimeseries query_count=count(), query_volume=sum(billed_bytes / 1024 / 1024 / 1024.0), interval:1h\n| makeTimeseries query_count=count(), interval:1h\n| fieldsAdd query_count=arrayMovingAvg(query_count, 5)"}}},"davisVisualization":{"isAvailable":true,"selectedOutputs":["1667436935","-1273383542"]}}},"82":{"title":"","type":"data","query":"fetch dt.system.query_executions, from: now()-28d\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| filter in(client.application_context, {\"dynatrace.classic.log-events\", \"dynatrace.notebooks\", \"dynatrace.biz.explore\", \"dynatrace.security.investigator\"})\n| fieldsAdd App = client.application_context\n\n| summarize \nuser_count = countDistinct(user.email),\nquery_count = countDistinct(query_id), \nscanned_bytes = sum(scanned_bytes),\nby: {usecase, App}\n\n| fields \nApp,\n`User count`=user_count,\n`Query count`=query_count,\n`Scanned volume`=scanned_bytes\n\n| sort `User count` desc\n\n\n","visualization":"table","visualizationSettings":{"table":{"columnOrder":["[\"App\"]","[\"User count\"]","[\"Query count\"]","[\"Scanned volume\"]"],"rowDensity":"default","sortBy":[{"columnId":"[\"Scanned volume\"]","direction":"descending"}]},"autoSelectVisualization":false,"unitsOverrides":[{"identifier":"Scanned volume","unitCategory":"data","baseUnit":"byte","displayUnit":null,"decimals":2,"suffix":"","delimiter":false,"added":1752578982646}],"coloring":{"colorRules":[]}},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":1,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"83":{"title":"Users","type":"data","query":"fetch dt.system.query_executions, from: now()-28d\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| summarize \nlastmonth_users=countDistinct(user.email), \nusers_analytics = collectDistinct(\n  if(\n    (client.application_context==\"dynatrace.notebooks\" OR\n    client.application_context==\"dynatrace.biz.explore\" )\n    , user.email, else:null))\n\n| fieldsAdd lastmonth_users_per_apps = arraySize(arrayRemoveNulls(users_analytics))\n| fieldsAdd percentage_users1 = lastmonth_users_per_apps  + lastmonth_users\n| fieldsAdd percentage_users2 = lastmonth_users_per_apps / lastmonth_users*100\n| fieldsAdd percentage_users = 100*lastmonth_users_per_apps / lastmonth_users\n\n| fields `Users` = concat(percentage_users, \"% of users querying bizevents use bizevents analytics\")\n\n\n\n","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","recordField":"Users","isIconVisible":true,"prefixIcon":"InformationIcon","alignment":"start","trend":{"isVisible":true,"isRelative":false}},"autoSelectVisualization":false},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":1,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"84":{"title":"Queries per user","type":"data","query":"fetch dt.system.query_executions, from: now()-28d\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| summarize \nlastmonth_users=countDistinct(user.email), \nlastmonth_query=countDistinct(query_id),\nquery_notebooks=countDistinct(if(client.application_context == \"dynatrace.notebooks\", query_id)),\nquery_events=countDistinct(if(client.application_context == \"dynatrace.biz.explore\", query_id)),\nusers_analytics = collectDistinct(\n  if(\n    (client.application_context==\"dynatrace.notebooks\" OR\n    client.application_context==\"dynatrace..biz.explore\" )\n    , user.email, else:null))\n\n| fieldsAdd lastmonth_users_per_apps = arraySize(arrayRemoveNulls(users_analytics))\n| fieldsAdd lastmonth_query_per_apps = (query_notebooks+query_events)\n\n| fieldsAdd percentage_users1 = lastmonth_users_per_apps  + lastmonth_users\n| fieldsAdd percentage_users2 = lastmonth_users_per_apps / lastmonth_users*100\n| fieldsAdd percentage_users = 100*lastmonth_users_per_apps / lastmonth_users\n\n| fieldsAdd average_queries_per_user = lastmonth_query_per_apps / lastmonth_users_per_apps\n\n| fields `Depth of Adoption (Queries)` = concat(\"On average, a user runs \",average_queries_per_user, \" bizevents analytics queries\")\n\n\n\n\n","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","label":"Recommendation","recordField":"Depth of Adoption (Queries)","isIconVisible":true,"prefixIcon":"InformationIcon","alignment":"start","trend":{"isVisible":true}},"autoSelectVisualization":false},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":1,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"91":{"title":"Users","type":"data","query":"fetch dt.system.query_executions, from: now()-28d\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| summarize \nlastmonth_users=countDistinct(user.email), \nusers_dashboards = collectDistinct(\n  if(\n    (client.application_context==\"dynatrace.dashboards\" OR\n    client.application_context~\"dynatrace.classic.dashboard\")\n    , user.email, else:null))\n\n| fieldsAdd lastmonth_users_per_apps = arraySize(arrayRemoveNulls(users_dashboards))\n| fieldsAdd percentage_users1 = lastmonth_users_per_apps  + lastmonth_users\n| fieldsAdd percentage_users2 = lastmonth_users_per_apps / lastmonth_users*100\n| fieldsAdd percentage_users = 100*lastmonth_users_per_apps / lastmonth_users\n\n| fields `Users` = concat(percentage_users, \"% of users querying bizevents run pinned bizevents queries\")\n\n\n\n","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","recordField":"Users","isIconVisible":true,"prefixIcon":"InformationIcon","alignment":"start","trend":{"isVisible":true,"isRelative":false}},"autoSelectVisualization":false},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":1,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"92":{"title":"Assessment of optimization opportunity","type":"data","query":"fetch dt.system.query_executions, from: now()-28d\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| summarize \nlastmonth_query=sum(scanned_bytes.on_demand)/ (1024*1024*1024),\nquery_3rdgendashboards = sum(if(client.application_context == \"dynatrace.dashboards\", scanned_bytes.on_demand)) / (1024 * 1024 * 1024),\nquery_2rdgendashboards = sum(if(client.application_context ~ \"dynatrace.classic.dashboard\", scanned_bytes.on_demand)) / (1024 * 1024 * 1024)\n\n| fieldsAdd lastmonth_query_per_apps = query_3rdgendashboards+query_2rdgendashboards\n| fieldsAdd percentage_query1 = lastmonth_query_per_apps  + lastmonth_query\n| fieldsAdd percentage_query2 = lastmonth_query_per_apps / lastmonth_query*100\n| fieldsAdd percentage_query = round(100*lastmonth_query_per_apps / lastmonth_query)\n| fields `Queries` = concat(\"Dashboards contribute to \",toLong(percentage_query), \"% of billable bizevents query volume\")\n\n\n\n\n\n","visualization":"singleValue","visualizationSettings":{"singleValue":{"labelMode":"none","label":"Recommendation","recordField":"Queries","isIconVisible":true,"prefixIcon":"InformationIcon","alignment":"start","trend":{"isVisible":true}},"autoSelectVisualization":false},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":1,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"93":{"title":"Weekly number of users by app","type":"data","query":"fetch dt.system.query_executions, from: now()-28d\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| filter in(client.application_context, {\"dynatrace.dashboards\", \"dynatrace.classic.dashboard\"})\n| makeTimeseries monthly=countDistinct(user.email), by:{client.application_context}, interval:7d","visualization":"barChart","visualizationSettings":{"chartSettings":{"truncationMode":"start","legend":{"position":"bottom"},"xAxisLabel":"timeframe","xAxisScaling":"analyzedTimeframe","tooltip":{"variant":"shared"},"colorPalette":"fireplace","fieldMapping":{"leftAxisValues":["monthly"],"timestamp":"timeframe"}},"coloring":{"colorRules":[{"field":"DT.name","comparator":"= *value*","value":"","type":"string","colorMode":"color-palette","colorPalette":"fireplace"}]},"autoSelectVisualization":false,"unitsOverrides":[],"dataMapping":{"displayedFields":["client.application_context"]}},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":100,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"componentState":{"selectedAnalyzerName":"dt.statistics.ui.ForecastAnalyzer","inputData":{"dt.statistics.ui.ForecastAnalyzer":{"generalParameters":{"timeframe":{"startTime":"now-2h","endTime":"now"},"resolveDimensionalQueryData":true,"logVerbosity":"INFO"},"forecastHorizon":100,"forecastOffset":1,"query":"fetch dt.system.events, from:now()-7d, to:now()\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == \"Log Management & Analytics - Query\"\n| filter event.version == \"1.0\"\n//| makeTimeseries query_count=count(), query_volume=sum(billed_bytes / 1024 / 1024 / 1024.0), interval:1h\n| makeTimeseries query_count=count(), interval:1h\n| fieldsAdd query_count=arrayMovingAvg(query_count, 5)"}}},"davisVisualization":{"isAvailable":true,"selectedOutputs":["1667436935","-1273383542"]}}},"94":{"title":"","type":"data","query":"fetch dt.system.query_executions, from: now()-28d\n| filter table == \"logs\"\n| filter status == \"SUCCEEDED\"\n| filter in(client.application_context, {\"dynatrace.dashboards\", \"dynatrace.classic.dashboard\"})\n| fieldsAdd App = client.application_context\n\n| summarize \nuser_count = countDistinct(user.email),\nquery_count = countDistinct(query_id), \nscanned_bytes = sum(scanned_bytes),\nby: {usecase, App}\n\n| fields \nApp,\n`User count`=user_count,\n`Query count`=query_count,\n`Scanned volume`=scanned_bytes\n\n| sort `User count` desc\n\n\n","visualization":"table","visualizationSettings":{"table":{"columnOrder":["[\"App\"]","[\"User count\"]","[\"Query count\"]","[\"Scanned volume\"]"],"rowDensity":"default","sortBy":[{"columnId":"[\"Scanned volume\"]","direction":"ascending"}],"columnWidths":{"[\"Scanned volume\"]":150.97}},"autoSelectVisualization":false,"unitsOverrides":[{"identifier":"Scanned volume","unitCategory":"data","baseUnit":"byte","displayUnit":null,"decimals":2,"suffix":"","delimiter":false,"added":1752578982646}],"coloring":{"colorRules":[]}},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":1,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"95":{"type":"markdown","content":"### Events adoption by use cases\n**Insights are based on the last 4 weeks of usage data.**\nFrom deep-dive investigations to real-time monitoring and streamlined dashboards — business events power a wide range of use cases across Dynatrace. This view highlights how users are adopting business event capabilities to solve real problems and accelerate insights.\n\n[Business events end-to-end example](https://docs.dynatrace.com/docs/shortlink/bo-use-case)\n\n"},"98":{"title":"Top 5 most used apps by query volume","type":"data","query":"fetch dt.system.query_executions\n| filter table == \"bizevents\"\n| filter status == \"SUCCEEDED\"\n| summarize query_volume = sum(scanned_bytes), by: {client.application_context}","visualization":"donutChart","visualizationSettings":{"chartSettings":{"truncationMode":"start","categoryOverrides":{},"categoricalBarChartSettings":{"categoryAxis":["client.application_context"]},"circleChartSettings":{"groupingThresholdType":"number-of-slices","groupingThresholdValue":5}},"legend":{"ratio":39},"autoSelectVisualization":false,"unitsOverrides":[{"identifier":"query_volume","unitCategory":"data","baseUnit":"byte","displayUnit":"tebibyte","decimals":2,"suffix":"","delimiter":true,"added":1722501228555}]},"querySettings":{"maxResultRecords":1000,"defaultScanLimitGbytes":500,"maxResultMegaBytes":1,"defaultSamplingRatio":10,"enableSampling":false},"davis":{"enabled":false,"davisVisualization":{"isAvailable":true}}},"99":{"type":"markdown","content":"#"},"100":{"type":"markdown","content":"#"},"101":{"type":"markdown","content":"#"},"102":{"type":"markdown","content":"#"},"103":{"type":"markdown","content":"#"},"104":{"type":"markdown","content":"#"},"105":{"type":"markdown","content":"#"},"106":{"type":"markdown","content":"#"}},"layouts":{"0":{"x":4,"y":2,"w":14,"h":8},"5":{"x":9,"y":49,"w":15,"h":3},"10":{"x":0,"y":79,"w":24,"h":3},"17":{"x":4,"y":24,"w":4,"h":3},"20":{"x":0,"y":90,"w":24,"h":4},"24":{"x":0,"y":103,"w":24,"h":15},"27":{"x":0,"y":19,"w":24,"h":2},"35":{"x":8,"y":21,"w":8,"h":3},"36":{"x":16,"y":24,"w":4,"h":3},"37":{"x":0,"y":24,"w":4,"h":3},"38":{"x":12,"y":24,"w":4,"h":3},"39":{"x":20,"y":24,"w":4,"h":3},"40":{"x":0,"y":61,"w":24,"h":2},"45":{"x":0,"y":70,"w":24,"h":2},"46":{"x":0,"y":72,"w":24,"h":6},"48":{"x":0,"y":52,"w":9,"h":8},"50":{"x":0,"y":63,"w":24,"h":6},"51":{"x":0,"y":82,"w":24,"h":7},"52":{"x":0,"y":0,"w":24,"h":2},"61":{"x":0,"y":21,"w":8,"h":3},"62":{"x":8,"y":24,"w":4,"h":3},"63":{"x":16,"y":21,"w":8,"h":3},"69":{"x":0,"y":10,"w":24,"h":8},"70":{"x":12,"y":94,"w":9,"h":8},"71":{"x":0,"y":49,"w":9,"h":3},"72":{"x":0,"y":2,"w":4,"h":4},"73":{"x":0,"y":6,"w":4,"h":4},"74":{"x":0,"y":94,"w":6,"h":8},"75":{"x":6,"y":94,"w":6,"h":8},"77":{"x":9,"y":52,"w":15,"h":8},"78":{"x":0,"y":31,"w":10,"h":4},"79":{"x":10,"y":31,"w":10,"h":4},"81":{"x":0,"y":39,"w":10,"h":5},"82":{"x":0,"y":44,"w":10,"h":4},"83":{"x":0,"y":35,"w":10,"h":2},"84":{"x":0,"y":37,"w":10,"h":2},"91":{"x":10,"y":35,"w":10,"h":2},"92":{"x":10,"y":37,"w":10,"h":2},"93":{"x":10,"y":39,"w":10,"h":5},"94":{"x":10,"y":44,"w":10,"h":4},"95":{"x":0,"y":28,"w":20,"h":3},"98":{"x":18,"y":2,"w":6,"h":8},"99":{"x":0,"y":27,"w":24,"h":1},"100":{"x":0,"y":48,"w":24,"h":1},"101":{"x":0,"y":18,"w":24,"h":1},"102":{"x":0,"y":60,"w":24,"h":1},"103":{"x":0,"y":69,"w":22,"h":1},"104":{"x":0,"y":78,"w":22,"h":1},"105":{"x":0,"y":102,"w":21,"h":1},"106":{"x":0,"y":89,"w":21,"h":1}},"importedWithCode":false,"settings":{},"annotations":[]}