<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Dashboards | Clustered bar chart in Dashboarding</title>
    <link>https://community.dynatrace.com/t5/Dashboarding/Dashboards-Clustered-bar-chart/m-p/232674#M3560</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.dynatrace.com/t5/user/viewprofilepage/user-id/62815"&gt;@bpdvries&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;That can be a Categorical Chart.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LawrenceBarratt_0-1703238878848.png" style="width: 400px;"&gt;&lt;img src="https://community.dynatrace.com/t5/image/serverpage/image-id/16401iF1AB5EF2D1BA95BC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="LawrenceBarratt_0-1703238878848.png" alt="LawrenceBarratt_0-1703238878848.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LawrenceBarratt_1-1703239018068.png" style="width: 400px;"&gt;&lt;img src="https://community.dynatrace.com/t5/image/serverpage/image-id/16402i9040A329A424EE95/image-size/medium?v=v2&amp;amp;px=400" role="button" title="LawrenceBarratt_1-1703239018068.png" alt="LawrenceBarratt_1-1703239018068.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Would this fit your requirement?&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Lawrence&lt;/P&gt;</description>
    <pubDate>Fri, 22 Dec 2023 09:57:27 GMT</pubDate>
    <dc:creator>LawrenceBarratt</dc:creator>
    <dc:date>2023-12-22T09:57:27Z</dc:date>
    <item>
      <title>Dashboards | Clustered bar chart</title>
      <link>https://community.dynatrace.com/t5/Dashboarding/Dashboards-Clustered-bar-chart/m-p/232198#M3544</link>
      <description>&lt;P&gt;I have an api query which returns the results of per day, the total number of entry actions per page, over a period of time.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="javascript"&gt;import { rumUserSessionsClient } from '@dynatrace-sdk/client-classic-environment-v1';

const query = 'SELECT useraction.name AS "Entry Actions", COUNT(usersession.userSessionId) AS "Number of Sessions", AVG(useraction.duration) AS "Average session duration" FROM useraction WHERE useraction.application=\'PRD - B2C - Calvin Klein\' AND useraction.type="Load" AND useraction.isEntryAction IS TRUE GROUP BY useraction.name, useraction.type LIMIT 15';

export default async function () {
  // Define the start and end dates for your desired range
  const startDate = new Date('2023-11-17T00:00:00Z'); // Replace with your start date
  const endDate = new Date('2023-11-28T00:00:00Z'); // Replace with your end date

  // Adjust timestamps to UTC
  const startTimestampUTC = startDate.getTime();
  const endTimestampUTC = endDate.getTime();

  // Adjust timestamps to UTC+1
  const startTimestamp = startTimestampUTC - 60 * 60 * 1000;
  const endTimestamp = endTimestampUTC - 60 * 60 * 1000;

  // Iterate over each day in the range
  const records = [];
  let currentDate = new Date(startDate);

  while (currentDate &amp;lt;= endDate) {
    // Calculate timestamps for the current day
    const startOfDay = new Date(currentDate);
    startOfDay.setUTCHours(0, 0, 0, 0);
    const startTimestamp = startOfDay.getTime();

    const endOfDay = new Date(currentDate);
    endOfDay.setUTCHours(23, 59, 59, 999);
    const endTimestamp = endOfDay.getTime();

    // Make Dynatrace SDK request for the current day
    const response = await rumUserSessionsClient.getUsqlResultAsTable({
      query: query,
      startTimestamp: startTimestamp,
      endTimestamp: endTimestamp
    });

    // Process the response and add to records
    const columnNames = response.columnNames;
    const values = response.values;

    const entryActionTotals = {};

    values.forEach(row =&amp;gt; {
      const entryAction = row[columnNames.indexOf("Entry Actions")];
      const sessions = parseInt(row[columnNames.indexOf("Number of Sessions")], 10);
      
      // Accumulate totals for each entry action
      if (!entryActionTotals[entryAction]) {
        entryActionTotals[entryAction] = 0;
      }
      entryActionTotals[entryAction] += sessions;
    });
    
    records.push({
      date: currentDate.toISOString(),
      "Entry Action Totals": entryActionTotals
    });
  
    // Move to the next day
    currentDate.setDate(currentDate.getDate() + 1);
  }

  return records;
}&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This gets me the results i am after if i visualize this in a raw format.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="results_raw_list.png" style="width: 472px;"&gt;&lt;img src="https://community.dynatrace.com/t5/image/serverpage/image-id/16301i0880C04805DE2E31/image-size/large?v=v2&amp;amp;px=999" role="button" title="results_raw_list.png" alt="results_raw_list.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;However i would like to be able to generate a bar chart where you see the totals for each entryaction per day over the period of time i set in the query. So basically a clustered bar chart. Is this possible to archieve?&lt;/P&gt;</description>
      <pubDate>Fri, 22 Dec 2023 09:40:32 GMT</pubDate>
      <guid>https://community.dynatrace.com/t5/Dashboarding/Dashboards-Clustered-bar-chart/m-p/232198#M3544</guid>
      <dc:creator>bpdvries</dc:creator>
      <dc:date>2023-12-22T09:40:32Z</dc:date>
    </item>
    <item>
      <title>Re: GEN3 dashboards | Clustered bar chart</title>
      <link>https://community.dynatrace.com/t5/Dashboarding/Dashboards-Clustered-bar-chart/m-p/232287#M3549</link>
      <description>&lt;P&gt;hi&amp;nbsp;&lt;a href="https://community.dynatrace.com/t5/user/viewprofilepage/user-id/62815"&gt;@bpdvries&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It looks like your output contains complex records, which show in record output unlike the raw output.&lt;/P&gt;&lt;P&gt;You are also not outputting the timestamp as a string. See amended script below:&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;import { rumUserSessionsClient } from '@dynatrace-sdk/client-classic-environment-v1';
export default async function () {

const query = 'SELECT useraction.name AS "Entry Actions", COUNT(usersession.userSessionId) AS "Number of Sessions", AVG(useraction.duration) AS "Average session duration" FROM useraction WHERE useraction.application=\'PRD - B2C - Calvin Klein\' AND useraction.type="Load" AND useraction.isEntryAction IS TRUE GROUP BY useraction.name, useraction.type LIMIT 15';


  const startDate = new Date('2023-11-17T00:00:00Z');
  const endDate = new Date('2023-11-28T00:00:00Z');

  const chartData = [];

  let currentDate = new Date(startDate);

  while (currentDate &amp;lt;= endDate) {
    const startOfDay = new Date(currentDate);
    startOfDay.setUTCHours(0, 0, 0, 0);
    const startTimestamp = startOfDay.getTime();

    const endOfDay = new Date(currentDate);
    endOfDay.setUTCHours(23, 59, 59, 999);
    const endTimestamp = endOfDay.getTime();

    const response = await rumUserSessionsClient.getUsqlResultAsTable({
      query: query,
      startTimestamp: startTimestamp,
      endTimestamp: endTimestamp
    });

    const columnNames = response.columnNames;
    const values = response.values;

    values.forEach(row =&amp;gt; {
      const entryAction = row[columnNames.indexOf("Entry Actions")];
      const sessions = parseInt(row[columnNames.indexOf("Number of Sessions")], 10);

 chartData.push({
  Date: startOfDay.toISOString(), // Use startOfDay for the timeframe in the specified format
  PageName: entryAction,
  Value: sessions
});
    });

    currentDate.setDate(currentDate.getDate() + 1);
  }

  return chartData;
}&lt;/LI-CODE&gt;&lt;P&gt;Visualization parameters:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LawrenceBarratt_1-1702939468227.png" style="width: 400px;"&gt;&lt;img src="https://community.dynatrace.com/t5/image/serverpage/image-id/16324i5A00F7319A280F86/image-size/medium?v=v2&amp;amp;px=400" role="button" title="LawrenceBarratt_1-1702939468227.png" alt="LawrenceBarratt_1-1702939468227.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Output will look like this:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LawrenceBarratt_0-1702939427906.png" style="width: 400px;"&gt;&lt;img src="https://community.dynatrace.com/t5/image/serverpage/image-id/16323iE86E1D3F2070B199/image-size/medium?v=v2&amp;amp;px=400" role="button" title="LawrenceBarratt_0-1702939427906.png" alt="LawrenceBarratt_0-1702939427906.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Hope this helps,&lt;/P&gt;&lt;P&gt;Lawrence&lt;/P&gt;</description>
      <pubDate>Mon, 18 Dec 2023 22:44:51 GMT</pubDate>
      <guid>https://community.dynatrace.com/t5/Dashboarding/Dashboards-Clustered-bar-chart/m-p/232287#M3549</guid>
      <dc:creator>LawrenceBarratt</dc:creator>
      <dc:date>2023-12-18T22:44:51Z</dc:date>
    </item>
    <item>
      <title>Re: Dashboards | Clustered bar chart</title>
      <link>https://community.dynatrace.com/t5/Dashboarding/Dashboards-Clustered-bar-chart/m-p/232667#M3559</link>
      <description>&lt;P&gt;Hi Lawrence,&lt;/P&gt;&lt;P&gt;Thanks a lot! Do you also know if it is possible show the bar charts next to each other instead of one bar where all the data points are on top of each other?&lt;/P&gt;</description>
      <pubDate>Fri, 22 Dec 2023 09:41:08 GMT</pubDate>
      <guid>https://community.dynatrace.com/t5/Dashboarding/Dashboards-Clustered-bar-chart/m-p/232667#M3559</guid>
      <dc:creator>bpdvries</dc:creator>
      <dc:date>2023-12-22T09:41:08Z</dc:date>
    </item>
    <item>
      <title>Re: Dashboards | Clustered bar chart</title>
      <link>https://community.dynatrace.com/t5/Dashboarding/Dashboards-Clustered-bar-chart/m-p/232674#M3560</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.dynatrace.com/t5/user/viewprofilepage/user-id/62815"&gt;@bpdvries&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;That can be a Categorical Chart.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LawrenceBarratt_0-1703238878848.png" style="width: 400px;"&gt;&lt;img src="https://community.dynatrace.com/t5/image/serverpage/image-id/16401iF1AB5EF2D1BA95BC/image-size/medium?v=v2&amp;amp;px=400" role="button" title="LawrenceBarratt_0-1703238878848.png" alt="LawrenceBarratt_0-1703238878848.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LawrenceBarratt_1-1703239018068.png" style="width: 400px;"&gt;&lt;img src="https://community.dynatrace.com/t5/image/serverpage/image-id/16402i9040A329A424EE95/image-size/medium?v=v2&amp;amp;px=400" role="button" title="LawrenceBarratt_1-1703239018068.png" alt="LawrenceBarratt_1-1703239018068.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Would this fit your requirement?&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Lawrence&lt;/P&gt;</description>
      <pubDate>Fri, 22 Dec 2023 09:57:27 GMT</pubDate>
      <guid>https://community.dynatrace.com/t5/Dashboarding/Dashboards-Clustered-bar-chart/m-p/232674#M3560</guid>
      <dc:creator>LawrenceBarratt</dc:creator>
      <dc:date>2023-12-22T09:57:27Z</dc:date>
    </item>
    <item>
      <title>Re: Dashboards | Clustered bar chart</title>
      <link>https://community.dynatrace.com/t5/Dashboarding/Dashboards-Clustered-bar-chart/m-p/232675#M3561</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Yes. Thanks.&lt;/P&gt;</description>
      <pubDate>Fri, 22 Dec 2023 10:00:43 GMT</pubDate>
      <guid>https://community.dynatrace.com/t5/Dashboarding/Dashboards-Clustered-bar-chart/m-p/232675#M3561</guid>
      <dc:creator>bpdvries</dc:creator>
      <dc:date>2023-12-22T10:00:43Z</dc:date>
    </item>
  </channel>
</rss>

