<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

  <atom:link href="https://community.pyramidanalytics.com/rss/category/pyramid-tech-blogs" rel="self" type="application/rss+xml"/>
  <title>Pyramid Analytics User Community&#32;Tech Blogs &#x26; Webinars</title>
  <link>https://community.pyramidanalytics.com/category/pyramid-tech-blogs/</link>
  <description>Blog Articles on functionality &#x26; techniques.</description>
  <language>en-us</language>
<ttl>240</ttl>
  <item>
          <title>Pyramid 2025.02 Issues Addressed</title>
          <link>https://community.pyramidanalytics.com/t/m1ypx06/pyramid-2025-02-issues-addressed</link>
          <description><![CDATA[<p>The following list enumerates all the main bug fixes in the&nbsp;<strong><a href="/t/60ypx08/pyramid-2025-02-released" rel="nofollow noopener noreferrer">Pyramid 2025.02 version</a>.&nbsp;</strong></p>
<p>Click <a href="/t/60ypx08/pyramid-2025-02-released#newfeatures" rel="nofollow noopener noreferrer">here</a>&nbsp;to see the listing of all new features added to 2025.02.</p>
<h2 class="toc__permalink" id="fixes-in-pyramid-2025-02"><span class="pen4"><a href="#fixes-in-pyramid-2025-02" rel="nofollow noopener noreferrer"><strong>Fixes in Pyramid 2025.02</strong></a></span></h2>
<p><strong>Model</strong></p>
<ul>
 <li>Fixed an issue where import failed when a model contained a Parquet destination node</li>
 <li>Fixed an issue where a model schedule continued executing even after the model was deleted</li>
 <li>Reduced sort memory usage to prevent OutOfMemory errors during high parallel sort/join workloads</li>
 <li>Fixed an issue that was causing Roles to be removed from a Model after importing the same model to a different server</li>
 <li>Fixed an issue where Parent-Child Hierarchies displayed the wrong related table when hovering over the PCH attribute in the Discover view</li>
 <li>Resolved a blank-screen issue when switching from new Discover to Model</li>
 <li>Fixed an OutOfMemoryError in the Summarize Node that triggered a “Satellite monitor IOException 7004” when processing a model</li>
 <li>Fixed an issue where joining large tables from a MariaDB source in the Model ETL Flow would timeout and fail to read data</li>
 <li>Fixed an issue where using Pyramid Content as a source in a model had failed</li>
 <li>Fixed an issue where queries running through a Pulse server returned only first 100 records</li>
 <li>Fixed an issue where column data types appeared mismatched in a Union node, even when they were identical</li>
 <li>Fixed an issue where running Python on a table sourced from Pyramid Content caused an error</li>
 <li>Fixed an issue where a Model Preview based on a Pyramid Content source crashed the runtime engine</li>
 <li>Fixed an issue where ETL calculated columns using string comparisons produced incorrect results</li>
 <li>Improved the error message shown when a stored procedure used in an ETL Custom Query is missing required columns&nbsp;</li>
</ul>
<p><strong>Discover</strong></p>
<p><strong><em>&nbsp; &nbsp; &nbsp; Queries</em></strong>:</p>
<ul>
 <li>Resolved an issue in which enabling caching caused the grid to display an outdated cached view when slicers were updated</li>
 <li>Fixed an issue where removed slicers still impacted Analyze Further when the member existed on both rows and filters</li>
 <li>Fixed an issue where aggregations on parameter members did not work</li>
 <li>Fixed an issue where an “Explanation” note appeared whenever a regression line was added although 'Show Notes' was off</li>
 <li>Fixed an issue where formulations using a Custom Column and saved under a Custom Column hierarchy in the Select Hierarchy dropdown were inaccessible</li>
 <li>Fixed an issue where a tooltip action displayed “Not enough information” when a “Pyramid Content” URL was present on columns</li>
 <li>Disabled context calculations in the filter dropzone, which were never meant to function as filters</li>
 <li>Fixed an issue where the “Explain” feature displayed incorrect results in a Discovery</li>
 <li>Fixed an issue where a Discover failed due to a Sort on member key error</li>
 <li><p>Fixed error when querying a measure with a disconnected table while having filtering logic</p></li>
</ul>
<p><em><strong>&nbsp; &nbsp; &nbsp; Visuals</strong></em>:</p>
<ul>
 <li>Implemented performance optimizations for AG Grid, resulting in improved rendering speed and responsiveness when handling large datasets</li>
 <li>Removed redundant space from a row header</li>
 <li>Fixed an issue where the data label background in Bar Charts stretched across the entire bar depending on the window or screen size</li>
 <li>Fixed an issue where a slicer appeared as "Loading" when first launching the Discover report</li>
 <li>Fixed a visual issue where a specific chip in a Context Calculation appeared to be unselected when editing the calculation</li>
 <li>Resolved an issue where extra whitespace appeared in rows, occurring only when the second member on the rows was a URL type member</li>
 <li>Fixed an issue where the start and end points of the IBCS waterfall chart didn't display tooltips</li>
 <li>Fixed missing total labels on stacked charts when “No Scale” mode was enabled</li>
 <li>Fixed an issue where data labels were not displayed on maps</li>
 <li>Fixed an issue where drilling down on a Shape Map did not function correctly</li>
 <li>Fixed data labels not showing in certain columns when using a Marimekko chart</li>
 <li>Fixed incorrect colors in conditional formatting&nbsp;</li>
</ul>
<p><strong>Present</strong></p>
<ul>
 <li>Fixed an issue where multi-selection slicer choices were ignored when users quickly switched to selecting from another slicer</li>
 <li><p>better fallback handling for invalid order-by-columns</p></li>
 <li>Resolved an issue causing the tooltip action to appear in an unexpected position within an embedded presentation</li>
 <li>Fixed an issue where a Parameter icon is shown in a direct URL when it should be hidden</li>
 <li>Fixed an issue that caused an endless spinner when attempting to edit a disabled slicer in Presentation Runtime mode</li>
 <li>Fixed an issue where the search box inside slicers in Presentation Runtime did not allow pasting via the context menu</li>
 <li>Fixed an issue when "Run Slicers" didn't trigger the dynamic text in a presents</li>
 <li>Fixed an issue where enabling a slicer caused Present to timeout</li>
 <li>Fixed an issue where an action used to switch between mini-tabs did not function as expected</li>
 <li>Fixed an issue where the width of button slicers could not be changed</li>
 <li>Fixed an issue where slicers did not update mini-tabs when changing to a different mini-tab</li>
 <li>Fixed an issue where a Tabulate item located in private content was causing a timeout&nbsp;in a Present</li>
 <li>Fixed an issue where Model Mapping failed when a dimension or attribute containing NULL values was also used as a slicer, due to failed NULL matching</li>
 <li>Fixed an issue where presentation text scaled down incorrectly on smaller screen resolutions</li>
 <li>Fixed an issue where cascading slicers failed to load when “All” was selected and the data source was SAP BW</li>
 <li>Fixed a JavaScript error when applying a date slicer bookmark that threw “Cannot read properties of undefined (reading 'caption')”</li>
</ul>
<p><strong>Tabulate</strong></p>
<ul>
 <li>Fixed and issue where a Tabulate stopped working due to a null exception</li>
 <li>Fixed an issue where the custom Grand Total name did not update in Tabulate</li>
 <li>Fixed an issue where Tabulate returned errors when adding a slicer to a new Tabulate&nbsp;</li>
</ul>
<p><strong>Publish &amp; Subscription</strong></p>
<ul>
 <li>Fixed an issue where in-line email license restrictions were not enforced correctly</li>
 <li>Fixed an issue where report subscriptions failed with a timeout error, requiring a Task Engine restart</li>
 <li>Fixed an issue where new drop-down slicer element selections from a hierarchy were not saved in a publication</li>
 <li>Fixed an issue where selected items in a tree slicer were deselected when changing the slicer type to drop-down in a publication</li>
 <li>Fixed an issue where report titles were not visible in publications, and the “Report Title/Subtitle” switch was disabled under Visual</li>
 <li>Fixed an issue preventing publication downloads via link when the user was not authenticated&nbsp;</li>
</ul>
<p><strong>Formulate</strong></p>
<ul>
 <li>Fixed a caching issue involving Custom Columns based on parameters combined with a nested calculation</li>
 <li>Fixed an issue where the DayOfWeekNumber function produced incorrect results on German-locale RTE servers</li>
 <li>Fixed an issue where the “Last X” node returned incorrect results for naturally ordered lists</li>
 <li>Fixed a query error in Discover reports caused by the use of Switch and List formulas&nbsp;</li>
</ul>
<p><strong>Illustrate</strong></p>
<ul>
 <li><p>Resolved an issue in which missing data-source permissions for a single illustration caused other dashboard illustrations to fail</p> <p>&nbsp;</p></li>
</ul>
<p><strong>Content Management</strong></p>
<ul>
 <li>Fixed an issue where Presentation items were removed from users’ Favorites after content migration, even though the items migrated successfully and retained their original IDs</li>
 <li>Fixed an issue where details were missing when hovering over the item name for one-off illustrations that were made shareable</li>
 <li>Fixed an issue where saving a new version in a duplicated presentation caused the original presentation to become corrupted</li>
 <li>Fixed Bookmarks and Subscription issues after Cut, Paste, and Replace of a Presentation</li>
 <li>Fixed an issue preventing discoveries from being deleted due to falsely remaining linked to a Presentation</li>
 <li>Fixed an issue where a measure from Measure Settings in a Custom Column incorrectly appeared in Search and the Discover content tree</li>
 <li>Fixed an issue where migration to production failed due to duplicate keys in bookmark data&nbsp;</li>
</ul>
<p><strong>Printing &amp; Export</strong></p>
<ul>
 <li>Fixed an issue where embedded presentations in RTL UI were printed to PDF in LTR format</li>
 <li>Fixed an issue where certain levels of opacity for text or shapes were not printing when exporting to PPTX</li>
 <li>Fixed an issue where disabling “Merge common cells” during Excel print/export still merged the subtotal row</li>
 <li>Fixed an issue where an already-encoded URL link in a Discovery could not be opened when printed to Excel</li>
 <li>Fixed an issue where the "Add Link-Back" feature was not available under 'External Busting premium' license</li>
 <li>Fixed an issue where exporting a Presentation or Publication with interactions added unwanted hyphens to the file name</li>
 <li>Fixed an issue that caused export to Excel to fail</li>
 <li>Fixed an issue where exporting a Presentation containing a Tabulate grid to Excel exposed hidden Tabulate columns</li>
 <li>Fixed an issue where exporting a Tabulate from a Presentation to Excel resulted in unformatted measures, unlike direct Tabulate exports</li>
 <li>Fixed an issue where Excel exports from a Tabulate were formatted differently depending on whether the Discovery was added as “Direct” or “Formula.</li>
 <li>Fixed an issue where mixed Hebrew and English text was printed to PowerPoint with incorrect font sizes&nbsp;</li>
</ul>
<p><strong>Mobile</strong></p>
<ul>
 <li>Fixed an issue that caused an infinite loading screen when a user attempted to log into the mobile app</li>
 <li>Fixed an error when selecting slicer values in Present on iPad when using Apple Magic Keyboard</li>
 <li>Fixed an issue where mobile users were not validated correctly when using an Azure proxy with SAML authentication and device ID checks enabled</li>
 <li>Resolved navigation panel clipping when using large system font sizes on iOS&nbsp;</li>
</ul>
<p><strong>Admin</strong></p>
<ul>
 <li>Resolved an issue where clicking the key icon in the licensing widget in the Admin Hub resulted in an error</li>
 <li>Fixed an error that occurred when clicking the key icon in the Licensing widget of the Admin Hub</li>
 <li>Fixed an issue where the IMDB Status widget did not function properly</li>
 <li>Fixed an issue where Task Manager filtering did not return results after navigating to another view and then returning</li>
 <li>Tenants folder were added to the "Add content or widget" section of Hub templates&nbsp;</li>
</ul>
<p><strong>Security</strong></p>
<ul>
 <li>Numerous third party components with critical, high and medium vulnerabilities have been upgraded.</li>
 <li>Support for legacy security capabilities has been removed.&nbsp;</li>
 <li>Java was upgraded to 21.09</li>
</ul>
<p><strong>Other&nbsp;</strong></p>
<ul>
 <li>Implemented various security improvements across the platform</li>
 <li>Fixed an issue that caused an upgrade to fail with a c.pa.tools.init.SetupToolsExecutor error</li>
 <li>Resolved a problem that caused the runtime to crash continuously, creating additional runtime engine processes each time</li>
 <li>Fixed an issue where some openID tokens were rejected by Pyramid causing login failures</li>
 <li>Fixed an issue where upgrade failed due to duplicated values in the user_prom_selection table</li>
 <li>Fixed an issue where the updateRole API in the Pyramid SDK always applied the isHidden flag</li>
 <li>Fixed an issue where the runtime engine didn't start after an upgrade</li>
 <li>Fixed an issue where running the CreateUsers and UpdateUsers APIs in parallel caused incorrect license allocations</li>
 <li>Fixed an issue where the Box JWT authentication connection was broken</li>
 <li>Removed the use of the USE function from the upgrade scripts</li>
 <li>Removed USE statements from upgrade scripts</li>
 <li>Fixed an issue where the internal Python environment used the Conda default channel despite Conda Forge being selected</li>
 <li>Fixed an issue where R appeared as installed (green) after an upgrade, even though it was not actually installed</li>
 <li>Fixed an issue where upgrades failed because the IRDB configuration file was not found</li>
 <li>Fixed an issue where upgrading failed when Pyramid was installed on one drive and the repository&nbsp;directory on another&nbsp;</li>
 <li>Various help improvements&nbsp;</li>
</ul>]]></description>
          <pubDate>Tue, 16 Dec 2025 13:50:42 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/m1ypx06/pyramid-2025-02-issues-addressed</guid>
          <dc:creator>Itamar Birenzweig</dc:creator>
        </item>

      <item>
          <title>General enhancement of Excel Export capability</title>
          <link>https://community.pyramidanalytics.com/t/35yp6n2/general-enhancement-of-excel-export-capability</link>
          <description><![CDATA[<p>Pyramid 2025.02 contains a collection of customer requests for the enhancement of Pyramid's Export to Excel capability. The following is a listing of these feature enhancement requests with a link back to the original forum posts.</p>
<ul>
 <li><a href="/t/35yk3sc/printedexported-excel-files-to-keep-format" rel="nofollow noopener noreferrer">Printed exported excel files to keep format</a></li>
 <li><a href="/t/p8y890z/row-background-color-is-not-exporting-same-in-excel" rel="nofollow noopener noreferrer">Row background color is not exporting same in excel</a></li>
 <li><a href="/t/60y8hmv/bold-formatted-rows-from-discover-to-be-retained-when-exported-to-excel" rel="nofollow noopener noreferrer">Bold formatted rows from Discover to be retained when exported to excel</a></li>
 <li><a href="/t/m1yx547/custom-grand-total-text-print-to-excel" rel="nofollow noopener noreferrer">Custom grand total text print to excel</a></li>
 <li><a href="/t/60yy7mc/retain-the-header-format-from-tabulate-to-present-when-print-to-excel" rel="nofollow noopener noreferrer">Retain the header format from Tabulate to Present when Print to Excel</a></li>
 <li><a href="/t/60hsyjb/custom-query-filters-exported-to-excel" rel="nofollow noopener noreferrer">Custom Query Filters Exported to Excel</a></li>
 <li><a href="/t/83hwwg4/have-excel-export-format-match-chosen-theme-instead-of-the-default-theme" rel="nofollow noopener noreferrer">Have Excel export format match chosen theme instead of the default theme</a></li>
 <li><a href="/t/p8hzhws/excel-export-more-information-about-filter" rel="nofollow noopener noreferrer">Excel Export: More Information about filter</a></li>
 <li><a href="/t/p8hc0kq/discovery-export-include-a-summary-of-filters-with-export" rel="nofollow noopener noreferrer">Discovery export - include a summary of filters with export</a></li>
 <li><a href="/t/q6yfygw/maintaining-formatting-when-exporting-data" rel="nofollow noopener noreferrer">Maintaining Formatting when exporting Data</a></li>
 <li><a href="/t/m1h922a/export-tabulate-visual-area-via-present" rel="nofollow noopener noreferrer">Export tabulate visual area via Present</a></li>
 <li><a href="/t/60y39z3/download-filters-titles-to-export" rel="nofollow noopener noreferrer">Download Filters Titles to Export</a>&nbsp;(partial for Excel only)</li>
 <li><a href="/t/g9y8qqq/export-to-excel-title-and-breadcrumb-to-be-separate-selection-box-and-only-include-slicer-values-instead-of-column-names-slicer" rel="nofollow noopener noreferrer">Export to Excel- Title and Breadcrumb to be separate selection box and only include slicer values instead of column names + slicer</a></li>
</ul>]]></description>
          <pubDate>Tue, 16 Dec 2025 13:50:23 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/35yp6n2/general-enhancement-of-excel-export-capability</guid>
          <dc:creator>Ian Macdonald</dc:creator>
        </item>

      <item>
          <title>Pyramid 2025.01 Newton - More customer requests delivered!</title>
          <link>https://community.pyramidanalytics.com/t/60yk9lt/pyramid-2025-01-newton-more-customer-requests-delivered</link>
          <description><![CDATA[<p style="text-align:start">The following list enumerates all the new features implemented in <strong><a href="/t/83yk2m8/pyramid-2025-01-released" rel="nofollow noopener noreferrer">Pyramid 2025.01</a></strong>. Over&nbsp;<strong>80%</strong>&nbsp;of the <strong>50 </strong>delivered are built from feature requests entered into the Product Ideas forum or suggestions made by customers through other routes.</p>
<p style="text-align:start"><a href="/t/x2ykvt3/pyramid-2025-01-issues-addressed" rel="nofollow noopener noreferrer">Click here</a> to see the issues fixed in 2025.01.&nbsp;</p>
<h3 class="toc__permalink">Model</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Update to Databricks Connector</p></td>
   <td>Allows a user to specify and utilize Unity Catalogs in Databricks</td>
   <td>Better exploitation of Databricks features allows for more flexible and sophisticated analytics to be performed.</td>
   <td><p><a href="/t/60y60sl/update-to-databricks-connector" rel="nofollow noopener noreferrer">Update to Databricks connector</a></p></td>
  </tr>
  <tr>
   <td><p>Bulk upload data into Snowflake option</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/data%20sources/sources/Data%20Source%20Listing.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>High performance load of data into target database</td>
   <td>Faster, more efficient loading of data speeds model data flow processing</td>
   <td><p><a href="/t/60y3a1n/bulk-upload-into-target-database-snowflake" rel="nofollow noopener noreferrer">Bulk upload into target database</a></p></td>
  </tr>
  <tr>
   <td><p>Remove all Measures in a table</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Model/Model%20Pro/Data%20Model/ModelPro_Measures_RemoveAll.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>All numeric columns (like IDs and keys) set as measures removed in one click</td>
   <td>Faster and easier set up of models where multiple numeric columns incorrectly set as measures</td>
   <td><p><a href="/t/63n6q1/multi-select-in-data-model-columns" rel="nofollow noopener noreferrer">Multiselect in data model columns</a></p></td>
  </tr>
  <tr>
   <td><p>Advanced Configuration Settings Dialogue</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Model/Model%20Pro/Data%20Model/ModelSettings/ModelSettings.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New Model dialogue panel to inspect and set advanced Model settings such as Sub Query limit parameters, Diamond schema heuristics, non-numeric query technique and others</td>
   <td>Access to advanced settings gathered in one place makes configuring Pyramid Semantic Models faster, easier and more logical</td>
   <td>Requested through Support. No Forum reference.</td>
  </tr>
 </tbody>
</table>
<h3>Discover</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Upgraded Member Search UI in Discover</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Extended%20Functionality/Members%20Search.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New search panel selectable from search icon</td>
   <td>More flexible and comprehensive member search and list creation speeds analytic creation.</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><p>Enhanced Chart Lasso options</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Workspace/Toolbox/DiscoverPro_Toolbox_MultiSelect_Lasso.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Added extended lasso features for Line, Area, Segment, Radar, TreeMap, Sunburst, Point charts</td>
   <td>Additional selection functionality and consistent usage make it easier to interact with charts.</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><p>Toggle slicer type</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Formulate/Parameters/Parameters_Binary.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Binary “on/off” slicer option</td>
   <td>Extends the range of slicer types for modern look and feel</td>
   <td><p><a href="/t/p8yfws6/new-slicer-type-toggle-button" rel="nofollow noopener noreferrer">New slicer type toggle button</a></p></td>
  </tr>
  <tr>
   <td><p>Report-specific Hierarchies</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Building%20Queries/Metadata%20Trees/hierarchies/DiscoverPro_Hierarchy_ReportHierarchy.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Dynamic creation of regular hierarchies from model attributes</td>
   <td>Delivers the ability to create hierarchies without access to the model provides more flexible handling of model attributes.</td>
   <td><p><a href="/t/35h3tzv/automatic-creation-of-virtual-hierarchies" rel="nofollow noopener noreferrer">Automatic creation of virtual hierarchies</a></p></td>
  </tr>
  <tr>
   <td><p>Dimension multi Add To</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Building%20Queries/Metadata%20Trees/Hierarchies.htm#Add" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Multiple dimension hierarchies can now be selected and dropped in one go</td>
   <td>Quicker development of Discovery items where multiple hierarchies are required in a drop zone.</td>
   <td><p><a href="/t/m1ykg7r/ability-to-add-multiple-dimensions-to-dropdown-at-once" rel="nofollow noopener noreferrer">Ability to add multiple dimensions to dropdown at once</a></p> <p><a href="/t/h7yzbbv/ability-to-drag-and-drop-multiple-dimensions-in-discovery-mode" rel="nofollow noopener noreferrer">Ability to drag and drop multiple dimensions in discovery mode</a></p></td>
  </tr>
  <tr>
   <td><p>Swap Functionality Enhancements</p> <p><a href="https://help.pyramidanalytics.com/2025/Content/Root/MainClient/apps/Discover/PRO/Query%20Functions/Sort.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New Sort capabilities including sort by drop zone option.</td>
   <td>The ‘drop zone’ option lets the visual retain the sort when dicing, swapping or adding other dimensions.</td>
   <td><p><a href="/t/83hfazx/swap-functionality-enhancements" rel="nofollow noopener noreferrer">Swap functionality enhancements</a></p></td>
  </tr>
  <tr>
   <td><p>Improved Actions with support for ‘Left Click’, and hierarchy filtering</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Extended%20Functionality/Actions/JumpToContentItem.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p> <p><span class="pen2">▶</span> <span class="pen2"><a href="https://pyramidanalytics.wistia.com/medias/2w2e0wzm2c" rel="nofollow noopener noreferrer" target="_blank">Video</a></span></p></td>
   <td>Ability to assign any defined Action to the left mouse click as well as new setup options</td>
   <td>Allows the Discover creator to define what a left mouse click will trigger from the list of Actions - that would otherwise require the right click context menu. Includes double-click and ‘ALT-click’ events as well as other action enhancements.</td>
   <td><p><a href="/t/35yfktv/one-click-navigationjump-action-from-a-chart" rel="nofollow noopener noreferrer">One click navigation jump action from a chart</a></p> <p><a href="/t/y4ykqcm/discovery-present-interactions-embedding" rel="nofollow noopener noreferrer">Discovery present interactions embedding</a></p></td>
  </tr>
  <tr>
   <td><p>Gauge Label vertical Alignment</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Formatting%20and%20Design/FormattingPanel/GaugeLabels.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Improved control over KPI Gauge and Data Card labels</td>
   <td>More flexible layout controls for labels give a better presentation of KPI data.</td>
   <td><p><a href="/t/q6yl02w/labelvalue-alignment-capability-for-the-gauge-chartkpi-chart" rel="nofollow noopener noreferrer">Label / value alignment capability for kpi chart</a></p> <p><a href="/t/h7hntc6/reporting-format-of-labels-in-gauges" rel="nofollow noopener noreferrer">Reporting format of labels in gauges</a></p></td>
  </tr>
  <tr>
   <td><p>Gauge frame roundness</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Formatting%20and%20Design/FormattingPanel/GaugeFormatting.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Added corner rounding of visual in line with other visualizations</td>
   <td>Consistent modern look and feel across analytic solution items improves useability.</td>
   <td><p><a href="/t/q6yl02w/labelvalue-alignment-capability-for-the-gauge-chartkpi-chart" rel="nofollow noopener noreferrer">Label / value alignment capability for kpi chart</a></p> <p><a href="/t/h7hntc6/reporting-format-of-labels-in-gauges" rel="nofollow noopener noreferrer">Reporting format of labels in gauges</a></p></td>
  </tr>
  <tr>
   <td><p>Alternative Visual choices in Smart Discover</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/Smart%20Discovery/Build%20Smart%20Discoveries/Visualizations_AutoRecommended.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>AI driven suggestions for alternative visualization choices</td>
   <td>All users can get AI-suggested list of different visuals that will produce quality results with the data selections and queries in the AI driven Smart Discover tool.</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><p>Smart discover redesign</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/Smart%20Discovery/Smart_Discover_Workspace.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Improved UI and wizard steps</td>
   <td>Faster, more intuitive development of queries for novice users.</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><p>Visual alternatives in Discover Lite &amp; Pro</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Workspace/DiscoverPro_Toolbox_AutoRecommend.htm" rel="nofollow noopener noreferrer" target="_blank">Pro Help</a></p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/DiscoverLite/Workspace/DiscoverLite_Toolbox_AutoRecommend.htm" rel="nofollow noopener noreferrer" target="_blank">Lite Help</a></p></td>
   <td>Improved UI and wizard steps</td>
   <td>Faster, more intuitive development of queries for novice users.</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><p>Opacity Setting for Sankey Charts</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Formatting%20and%20Design/FormattingPanel/SankeyChart.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Sankey chart colours now have opacity setting</td>
   <td>Increases the range of formatting options for Sankey charts</td>
   <td><p><a href="/t/q6y889h/add-opacity-setting-to-sankey-chart" rel="nofollow noopener noreferrer">Add opacity setting to Sankey chart</a></p></td>
  </tr>
  <tr>
   <td><p>3D Map Integration for Pyramid</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Visualizations/Map%20Charts/MapType_3DMap.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p> <p><span class="pen2">▶</span> <span class="pen2"><a href="https://pyramidanalytics.wistia.com/medias/vktn1ar6w7" rel="nofollow noopener noreferrer" target="_blank">Video</a></span></p></td>
   <td>3D maps tiles from MapBox are now available in geo-analysis</td>
   <td>Better display using 3D geo views gives more accurate and engaging visualization of geospatial values</td>
   <td><p><a href="/t/x2yfqny/3d-map-integration-for-pyramid" rel="nofollow noopener noreferrer">3D map integration for pyramid</a></p></td>
  </tr>
  <tr>
   <td><p>AG grid in custom visuals</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Visualizations/Custom_Visuals.htm#AGGrid" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New Custom Visual example using “AG” grid in the marketplace</td>
   <td>Implementation of the AG grid allows users to filter and sort through column headers for quicker analysis of large grids.</td>
   <td><p><a href="/t/x2yz9mw/ag-grid-functionality-in-pyramid" rel="nofollow noopener noreferrer">AG grid functionality in Pyramid</a></p></td>
  </tr>
  <tr>
   <td><p>Legend Shape Type Option</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Formatting%20and%20Design/FormattingPanel/Legend.htm#ShapeType" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Option to match the legend shape and fill to that of the data series</td>
   <td>Matching the shape or fill of the data series in the legend eliminates any potential misreading of data series</td>
   <td>Requested through Support. No Forum reference.</td>
  </tr>
 </tbody>
</table>
<h3>Formulate</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Additional 16 Financial Functions</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/fx/PQL/Common/Financial.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Extensive range of new financial functions across calculation types</td>
   <td>Greatly extends the capability for financial calculations and reporting inside Pyramid</td>
   <td>Requested through Support. No Forum reference.</td>
  </tr>
 </tbody>
</table>
<h3>Present</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Change slicer type in Present Lite for Analysts</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Present/PresentLite/Design/PresentLite_ChangeSlicerType.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Additional capability to allows Analyst users to vary the slicer representation in Present Lite</td>
   <td>More flexibility and choice for analyst users in how slicers are represented in Present Lite</td>
   <td><p><a href="/t/q6yfm8r/allow-analyst-users-to-change-slicer-type-in-present-lite" rel="nofollow noopener noreferrer">Change slicer type in present lite</a></p></td>
  </tr>
  <tr>
   <td><p>Runtime settings over-ride in Present</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Present/Present%20Pro/functions/Runtime_Settings.htm#Override" rel="nofollow noopener noreferrer" target="_blank">Help</a></p> <p><span class="pen2">▶</span> <span class="pen2"><a href="https://pyramidanalytics.wistia.com/medias/8yo4yp99oy" rel="nofollow noopener noreferrer" target="_blank">Video</a></span></p></td>
   <td>Let’s designers choose to use the runtime settings of specific Discover visuals or those of the Present dashboard.</td>
   <td>End-users can now have tailor made experiences per visual in a dashboard, through the use of visual-specific runtime settings.</td>
   <td><p><a href="/t/m1yl0r1/prioritize-the-discover-level-over-the-presentation-layer-when-displaying-or-hiding-specific-dimensions-using-the-runtime-settings" rel="nofollow noopener noreferrer">Runtime settings override</a></p> <p><a href="/t/m1yl0r1/prioritize-the-discover-level-over-the-presentation-layer-when-displaying-or-hiding-specific-dimensions-using-the-runtime-settings" rel="nofollow noopener noreferrer">Slide specific runtime settings</a></p></td>
  </tr>
 </tbody>
</table>
<h3>Publish</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Inline HTML email content</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Publish/Publish%20Pro/BuildProPublications_New_Email.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p> <p><span class="pen2">▶</span> <span class="pen2"><a href="https://pyramidanalytics.wistia.com/medias/ng6v27uf3e" rel="nofollow noopener noreferrer" target="_blank">Video</a></span></p></td>
   <td>New Publish option to create emails with analytic content in the body of the email.</td>
   <td>Gives easier and direct access to analytics as part of the email rather than an attachment.</td>
   <td><p><a href="/t/m1hqb0z/add-ability-to-embed-image-of-results-in-body-of-email" rel="nofollow noopener noreferrer">Embed image of results in body of email</a></p></td>
  </tr>
  <tr>
   <td><p>Publish to file</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Publish/Publish%20Pro/Distribution/PublishPro_FileDistribution.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p> <p><span class="pen2">▶</span> <span class="pen2"><a href="https://pyramidanalytics.wistia.com/medias/19xdyyb0ju" rel="nofollow noopener noreferrer" target="_blank">Video</a></span></p></td>
   <td>New ability to write the rendered Publication to the file system</td>
   <td>Expands the scope of solutions for Publication report bursting</td>
   <td><p><a href="/t/m1ym8j8/additional-outputs-to-publication-targets" rel="nofollow noopener noreferrer">Additional outputs to publication targets</a></p></td>
  </tr>
 </tbody>
</table>
<h3>Tabulate</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Spreadsheet Locales and Cultures</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Tabulate/Tabulate%20Pro/Working%20with%20Spreadsheets/Data%20Entry%20and%20Cells/Tabulate_SpreadsheetCulture.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Tabulate now follows Localization settings for display of dates and values</td>
   <td>Brings a wider audience to Tabulate by supporting localization of date and decimal formatting</td>
   <td>Requested through Support. No Forum reference.</td>
  </tr>
 </tbody>
</table>
<h3>Content Management</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Governed Sharing</p> <p><a href="https://help.pyramidanalytics.com/2025/Content/Root/MainClient/GovernedSharing/GovernedSharing.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p> <p><span class="pen2">▶</span> <span class="pen2"><a href="https://pyramidanalytics.wistia.com/medias/rc8o4ch67l" rel="nofollow noopener noreferrer" target="_blank">Video</a></span></p></td>
   <td>New ability for users to share content under the control and management of Admins</td>
   <td>Ability for users to share Pyramid analytic content in a governed manner helps disseminate information and insight.</td>
   <td><p><a href="/t/p8yqk2v/share-a-discover-as-a-viewer-via-email" rel="nofollow noopener noreferrer">Share a discover as a viewer via email</a></p> <p><a href="/t/q6hgh30/sharing-private-users-conten" rel="nofollow noopener noreferrer">Sharing private users content</a></p></td>
  </tr>
  <tr>
   <td><p>New options in the Hub</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/appShell/NavigateUserHub.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Hub Improvements to allow users to directly print, subscribe and share content directly from the Hub interface.</td>
   <td>Adding additional utilities to the Hub makes an even more attractive base camp from which to extend your analytic experience</td>
   <td><p><a href="/t/q6yf6wk/add-export-and-subscribe-option-in-a-hub" rel="nofollow noopener noreferrer">Export and subscribe option-in Hub</a></p></td>
  </tr>
 </tbody>
</table>
<h3>Administration</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Azure Entra Support</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/data%20sources/sources/Data%20Source%20Listing.htm#MSandSQLServerAzure" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Support for new Microsoft security mechanism for Azure and Fabric</td>
   <td>Allows for the integration and use of Entra as Pyramid IDP for wider authentication options</td>
   <td><p><a href="/t/p8yk088/secure-access-to-azure-openai-llm-via-entra-iO" rel="nofollow noopener noreferrer">Access to azure openai llm via entra id</a></p> <p><a href="/t/g9yka6x/secure-integration-of-azure-openai-in-pyramid-via-entra-id-eliminating-api-key-risks" rel="nofollow noopener noreferrer">Azure openai in pyramid via entra id</a></p> <p><a href="/t/p8yk1dm/additional-authentication-id-along-with-the-principal-name" rel="nofollow noopener noreferrer">Additional authentication id along with the principal name</a></p></td>
  </tr>
  <tr>
   <td><p>LLM on/off by tenant</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/ai/LLMManager_SecureLLMByTenant.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Access to LLM resources now controlled at Tenant level</td>
   <td>Further flexibility in assigning LLM access provides better control of tenant functionality</td>
   <td><p><a href="/t/g9yz2v9/dedicated-llm-provider-for-each-tenant" rel="nofollow noopener noreferrer">Dedicated LLM provider for each tenant</a></p></td>
  </tr>
  <tr>
   <td><p>Upgraded Tenant admin page UI</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/access/Tenants.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Changes made in support of LLM tenant access control</td>
   <td>Slicker, smooth management of LLM access by tenant gives more control of functionality available at Tenant level</td>
   <td><p><a href="/t/g9yz2v9/dedicated-llm-provider-for-each-tenant" rel="nofollow noopener noreferrer">Dedicated LLM provider for each tenant</a></p></td>
  </tr>
  <tr>
   <td><p>Upgraded LLM Provider Page UI</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/ai/LLM%20Manager.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Changes made in support of LLM tenant access control</td>
   <td>Slicker, smooth management of LLM access by tenant gives more control of functionality available at Tenant level</td>
   <td>Requested through Support. No Forum reference.</td>
  </tr>
  <tr>
   <td><p>Storage Manager</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/Servers/File%20System.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New utility to define and manage file destinations for various tasks</td>
   <td>Enables the provision of file destinations for users to target when outputting Pyramid content</td>
   <td><p><a href="/t/m1ym8j8/additional-outputs-to-publication-targets" rel="nofollow noopener noreferrer">Additional outputs to publication targets</a></p></td>
  </tr>
  <tr>
   <td><p>Slide Usage Stats</p> <p><a href="https://help.pyramidanalytics.com/2025/Content/Root/Guides/Usage%20Model/Pyramid%20Usage%20Model.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Extends Pyramid Usage statistics to include usage information of presentation dashboard slides</td>
   <td>More granular analysis allows detailed usage of Present Dashboards by slide</td>
   <td><p><a href="/t/60hvlcr/added-ability-to-pull-information-from-the-repository-database-that-would-allow-analysis-of-most-used-slide-in-a-present" rel="nofollow noopener noreferrer">Analysis of most used slide in a present</a></p> <p><a href="/t/83y66v7/enhanced-usability-statistics" rel="nofollow noopener noreferrer">Enhanced usability statistics</a></p></td>
  </tr>
  <tr>
   <td><p>AI Data Watermark</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/CMS/AIGenerated/Model_AIGenerated.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>“Watermark” added to identify models that contain AI generated data</td>
   <td>Supporting forthcoming regulatory requirements for showing that AI generated data is being used.</td>
   <td><p><a href="/t/60yk1dq/new-ribbon-that-marks-ai-generated-data-in-model-properties" rel="nofollow noopener noreferrer">Marks AI generated data in model properties</a></p></td>
  </tr>
  <tr>
   <td><p>Change in thread settings in Administration Console</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/Servers/Run%20Time%20Engine.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New options in thread management for Pyramid Runtime Services</td>
   <td>Gives the ability to more finely tune Pyramid Runtime engine for more consistent performance and improved user experience.</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><p>Quick Discover from model management</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/data%20sources/Data%20Model%20Management.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>One click option from model&nbsp;</td>
   <td>GEasier navigation from model management to Discover</td>
   <td>&nbsp;</td>
  </tr>
 </tbody>
</table>
<h3>Embedding</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Embedded Search Bar</p> <p><a href="https://help.pyramidanalytics.com/2025/Content/Root/developer/reference/Extensibility/Embedding/embed%20API/PyramidEmbedClient/embedSearch/Search%20Embedding.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New option for standalone natural language search in embedded solutions</td>
   <td>Increases the versatility and range of solutions for embedded GenBI natural language functionality – making it more accessible to end users in a customized UI experience.</td>
   <td>Requested through Support. No Forum reference.</td>
  </tr>
  <tr>
   <td><p>New ‘App styles’ UI customization for embed</p> <p><a href="https://help.pyramidanalytics.com/2025/Content/Root/developer/reference/Extensibility/Embedding/embed%20API/PyramidEmbedClient/embedContent/AppStyles/appStyles.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New options to change the embedded application’s look and feel, including menus and icons</td>
   <td>Allows developers embedding Pyramid to brings its UI design in line with the hosting app’s UI design.</td>
   <td>Requested through Support. No Forum reference.</td>
  </tr>
  <tr>
   <td><p>Custom on-the-fly themes</p> <p><a href="https://help.pyramidanalytics.com/2025/Content/Root/developer/reference/Extensibility/Embedding/embed%20API/PyramidEmbedClient/embedContent/customTheme/customTheme.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>NNew option to generate content design themes on-the-fly and apply them to embedded content.</td>
   <td>Greatly increases the ability for developers to fully customize content’s design at the point of embedding without using a predesigned theme package.</td>
   <td>Requested through Support. No Forum reference.</td>
  </tr>
  <tr>
   <td><p>Embed print "PDF Multi-page" option</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/Extensibility/Embedding/General%20Embed/PrintFromEmbed.htm#Print" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Supports the printing from embedded content of multi-page output</td>
   <td>Provides a wider range of options for printing from embedded content</td>
   <td>Requested through Support. No Forum reference.</td>
  </tr>
 </tbody>
</table>
<h3>Mobile</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Actions From Mobile Dashboard</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MobileClient/Mobile/MobileInteractions_Actions.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Added support for defined Actions on mobile devices</td>
   <td>Provides a consistent behavior between desktop and tablet rendered dashboards and those rendered on mobile phones supporting wider range of devices with equivalent functionality</td>
   <td><p><a href="/t/35hablv/actions-from-mobile-dashboard" rel="nofollow noopener noreferrer">Actions from mobile dashboard</a></p></td>
  </tr>
 </tbody>
</table>
<h3>Infrastructure and APIs</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Service Status method</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/APIs/REST%20API/API3/notification/readServersMetrics.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New API method to extract platform services status</td>
   <td>Allows developers to inspect and utilize Pyramid Services status as part of their solution</td>
   <td>Requested through Support. No Forum reference.</td>
  </tr>
  <tr>
   <td><p>Find user by property method</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/APIs/REST%20API/API3/access/findUser.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New API method to search for users by different user properties, like name and email</td>
   <td>Allows developers to find platform users for other functional needs</td>
   <td><p><a href="/t/h7ykn0c/need-api-to-get-user-information-by-users-email-address" rel="nofollow noopener noreferrer">Api to get user information by users email address</a></p></td>
  </tr>
  <tr>
   <td><p>SELinux Policies (BETA)</p> <p><a href="https://help.pyramidanalytics.com/2025/Content/Root/Guides/installation/Main/Encryption%20and%20FIPS.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New SELinux policies setup for RedHat 9 – to enable Pyramid services when SELinux is enforced. This feature is in BETA.</td>
   <td>SELinux can be used to harden the security of a host server. The policies enable Pyramid to operate in such a mode.</td>
   <td><p>Requested through Support. No Forum reference.</p></td>
  </tr>
 </tbody>
</table>
<h3>Documentation</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Revamped Help Design</p> <p><a href="https://help.pyramidanalytics.com/" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New, cleaner design for help. Improvements also include clearer code-snippets and upgraded responsive design on mobile devices.</td>
   <td>The cleaner design makes it easier to read and follow for all user types on multiple device types.</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><p>Publish help 2.0</p> <p><a href="https://help.pyramidanalytics.com/2025/Content/Root/MainClient/apps/Publish/Publish.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Rewritten and expanded help on the Publish module</td>
   <td>Better and more in-depth reference information with explanations and examples of how to create Publish documents</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><p>Upgrade to Platform Hardening Guide</p> <p><a href="https://help.pyramidanalytics.com/2025/Content/Root/Guides/security/Security_Hardening.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Updated and expanded information on how to secure Pyramid</td>
   <td>Helps those responsible for managing the security of the Pyramid Platform with further information and examples of procedures to follow</td>
   <td><p>Requested through Support. No Forum reference.</p></td>
  </tr>
  <tr>
   <td><p>Upgraded Embed auth flows Guide</p> <p><a href="https://help.pyramidanalytics.com/2025/Content/Root/Guides/Emebdding%20Flows/Embed%20Flow.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Updated and expanded information on how to authenticate embedded Pyramid content</td>
   <td>Makes understanding the process and procedures to follow when embedding Pyramid content. Includes how to integrate multiple IDPs</td>
   <td><p>Requested through Support. No Forum reference.</p></td>
  </tr>
  <tr>
   <td><p>Stress testing guide</p> <p><a href="https://help.pyramidanalytics.com/2025/Content/Root/Guides/stress/Stress%20Testing.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>A new guide on how to stress test your Pyramid installation</td>
   <td>A detailed guide on the products and techniques to use if you require stress or load testing your Pyramid installation</td>
   <td><p>Requested through Support. No Forum reference.</p></td>
  </tr>
 </tbody>
</table>]]></description>
          <pubDate>Mon, 11 Aug 2025 15:23:46 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/60yk9lt/pyramid-2025-01-newton-more-customer-requests-delivered</guid>
          <dc:creator>Ian Macdonald</dc:creator>
        </item>

      <item>
          <title>Pyramid 2025.01 Issues Addressed</title>
          <link>https://community.pyramidanalytics.com/t/x2ykvt3/pyramid-2025-01-issues-addressed</link>
          <description><![CDATA[<p>The following list enumerates all the main bug fixes in the&nbsp;<strong><a href="/t/83yk2m8/pyramid-2025-01-released" rel="nofollow noopener noreferrer">Pyramid 2025.01 version</a>.&nbsp;</strong></p>
<p><a href="/t/60yk9lt/new-features-for-pyramid-202501-newton-more-customer-requests-delivered" rel="nofollow noopener noreferrer">Click here</a>&nbsp;to see the listing of all new features added to 2025.01.</p>
<h2 class="toc__permalink" id="fixes-in-pyramid-2025-01"><span class="pen4"><a href="#fixes-in-pyramid-2025-01" rel="nofollow noopener noreferrer"><strong>Fixes in Pyramid 2025.01</strong> </a> </span></h2>
<p><strong>Model</strong></p>
<ul>
 <li>Fixed an issue where ETL Progress was not showing up for previous runs for schedules triggered from a Pyramid Event</li>
 <li>Fixed an issue where Masking was not working for Calculated Columns</li>
 <li>Fixed an issue that was causing a 'Satellite monitor timed out 7001' error when running a model</li>
 <li>Fixed a Pulse timeout issue that was causing a "Stream has been closed due to timeout of inactivity when using a Pulse Data Source in ETL" error.</li>
 <li>Fixed an issue where a deselected column in a SELECT node caused preview failures on AS400 data sources</li>
 <li>Fixed an issue where the database list was empty if a custom JDBC driver did not return catalogs</li>
 <li>Fixed an issue where writing to an S3 target had failed&nbsp;</li>
 <li>Fixed an issue where a private role set on a model did not take precedence over a public role</li>
 <li>Fixed a specific scenario that caused a black screen and corrupted the model</li>
 <li>Fixed an issue where selecting 'Parquet' as the type for an Azure Blob source resulted in a blank screen</li>
 <li>Added BigInteger to the Python output column dropdown</li>
 <li>Fixed an issue where a Postgres query to the Pyramid repository failed due to incorrect syntax when a model process failed to run</li>
 <li>Fixed an issue where opening a Model resulted in a blank screen</li>
 <li>Fixed an issue that caused missing data when multiple data flows wrote to the same IMDB target</li>
 <li>Fixed an issue where uploading large Google Sheets failed with a 429 Too Many Requests error from the Sheets API</li>
 <li>Fixed an issue where previewing data from a Google Sheet caused a "Error getting excel row"&nbsp;</li>
</ul>
<p><strong>Discover</strong></p>
<p><strong><em>&nbsp; &nbsp; &nbsp; Queries</em></strong>:</p>
<ul>
 <li>Fixed an issue where joining tables using a Calculated Column that referenced multiple tables had failed</li>
 <li>Fixed an issue where the first load of a Direct URL report had failed with a 404 error</li>
 <li>Fixed an issue where the Inverted hierarchy sort didn't work from the context menu</li>
 <li>Fixed an issue that was causing the DayOfWeek function to return unexpected results</li>
 <li>Fixed an issue that caused a query failure while processing zipped information from SAP BW that contains specific special characters</li>
 <li>Fixed an issue where the Discovery row limit set in User Defaults was not applied correctly</li>
 <li>Fixed an issue where a Discovery failed to open with a "Cannot read properties of undefined (reading 'forEach')" error</li>
 <li>Added explicit handling for Oracle’s inability to cast between varchar and nvarchar automatically</li>
 <li>Fixed an "Invalid Column" error when opening a Discover containing an unlinked attribute and measure</li>
 <li>Text direction settings were added to rows and columns to assist with signs in right-to-left languages</li>
 <li>Fixed an issue where the SAP BW Tree View Icon was missing on the New Discovery page</li>
 <li>Fixed an issue where a date calendar slicer selection was not injected into a tooltip action</li>
 <li>Fixed an issue where a Parent-Child hierarchy with "Include All Level" and "Roots" orphan handling didn't expand to include the root members</li>
</ul>
<p><em><strong>&nbsp; &nbsp; &nbsp; Visuals</strong></em>:</p>
<ul>
 <li>Fixed an issue where the X-axis labels on a chart became misaligned after adding more data or increasing the label font size</li>
 <li>Fixed an issue where the Total Label position was incorrect in a Stacked Column/Bar chart with negative values</li>
 <li>Fixed an issue where X-axis labels were overlapping each other in a chart with a Range Slide</li>
 <li>Fixed an issue where Data Labels on a line chart were aligned slightly to the left</li>
 <li>Fixed an issue where Legend formatting options didn't work for a regression line</li>
 <li>Fixed an issue where changes to measure properties in Discover were not applied as expected</li>
 <li>Fixed an issue where chart labels for negative values were missing when the chart was displayed in a small container</li>
 <li>Fixed an issue where the Date Slicer pop-up was cut off in embedded content</li>
 <li>Fixed an issue where a measure that was added to the Color drop zone caused hierarchical levels to expand incorrectly in grids</li>
 <li>Resolved the inconsistent placement of total data labels for negative values</li>
 <li>Fixed an issue causing overlapping titles when using Multi Chart</li>
 <li>Fixed an issue where the IBSC Waterfall chart showed the secondary axis measure as the far-right bar label instead of the primary axis measure</li>
 <li>Added an option in the Legends formatting menu to show the Shape Type in the legend</li>
</ul>
<p><strong>Present</strong></p>
<ul>
 <li>Fixed an issue where Zoom Lasso was not working in a full-screen report</li>
 <li>Fixed an issue in the Action Panel where Action Settings' Values were not displayed until the Edit button was clicked</li>
 <li>Fixed an issue where using a jump action from a direct link would open a new tab with an incorrect URL containing an extra "Direct", resulting in a 404 error</li>
 <li>Fixed an error that occurred when deselecting a list in Slicer Settings with a measure applied in the "Non Empty Filter" and "Hide Empty Hierarchy Members" enabled</li>
 <li>Fixed a Slicer Element Limit issue that was causing a cascading filter to not show all relevant elements</li>
 <li>Fixed an issue where a disabled slicer still filtered the target when using Model Mapping</li>
 <li>Fixed an issue where the slicer query was executed despite the slicer being disabled</li>
 <li>Fixed an issue where a deleted parameter value remained selected if it had been set as the default</li>
 <li>Fixed an issue where an interaction in a Custom did not work as expected</li>
 <li>Fixed an issue where an interaction failed to correctly filter a grid after it was expanded and collapsed</li>
 <li>Fixed an issue where a Master Page that was created for a Theme did not appear when selecting this Theme in a new Presentation</li>
 <li>Fixed an issue where duplicate #ModelProcessedDate text blocks in the content master prevented slides from running</li>
 <li>Fixed an issue where a Zoom Lasso selection couldn't be removed</li>
 <li>Fixed an issue that caused the order of mapped hierarchies to change under Model Mapping</li>
 <li>Fixed an issue that was causing inconsistent Insight results</li>
 <li>Fixed an issue where a mini-tab didn't update after changing the slicer selection</li>
 <li>Fixed misleading confirmation from the chatbot after an attempted filter change</li>
</ul>
<p><strong>Tabulate</strong></p>
<ul>
 <li>Fixed an issue where adding two Discover reports from the same data source and using shared slicers caused the slicers to be duplicated. This resulted in errors when attempting to edit or delete them via the Interaction Manager&nbsp;</li>
</ul>
<p><strong>Publish &amp; Subscription</strong></p>
<ul>
 <li>Fixed an issue where page triggers failed to update when slicer selections changed</li>
 <li>Fixed an issue where calendar slicers using "current date" with "last X days" did not dynamically update in scheduled reports, causing outdated data to appear in subscriptions and publications</li>
 <li>Fixed an issue where subscriptions failed when Discovery parameters or slicers were changed</li>
 <li>Fixed an issue in publication that prevented hierarchy tree slicers from being used as dropdowns</li>
</ul>
<p><strong>Formulate</strong></p>
<ul>
 <li>Fixed an issue where the Custom Order didn't work for items with StrToMember</li>
 <li>'Custom Column' preview is now sorted according to the specified 'Sort By' field</li>
 <li>Fixed an issue where a PQL Case statement returned unexpected results</li>
 <li>Fixed an issue where a List caused a report to fail after an upgrade to 2025</li>
 <li>Fixed an issue where&nbsp;Lists didn't work consistently following an Oracle Repository Patch</li>
</ul>
<p><strong>Illustrate</strong></p>
<ul>
 <li>Fixed an issue in the Asset Tooltip Designer where the line height did not adjust when the default font size was increased&nbsp;</li>
</ul>
<p><strong>Content Management</strong></p>
<ul>
 <li>Fixed an issue where saving content that was opened from a Direct URL had failed</li>
 <li>Fixed an issue where non-admin users were unable to see the "Business Logic" icon in certain reports</li>
 <li>Fixed an issue where the Merge functionality failed to update content correctly in certain scenarios</li>
 <li>Fixed an issue where deleted content was still accessible using a Direct URL Link</li>
 <li>Fixed an issue where importing a Presentation to replace an existing one failed if the original included bookmarks and/or schedules and a global parameter</li>
</ul>
<p><strong>Printing &amp; Export</strong></p>
<ul>
 <li>Fixed an issue where a Panel title was incorrectly aligned in a print</li>
 <li>Fixed an issue where Excel export failed if the combined report and page repeater member names exceeded the 31-character sheet name limit</li>
 <li>Fixed an issue where certain levels of opacity for text or shapes were not printing when exporting to PPTX</li>
 <li>Fixed an issue where exporting a Tabular grid with a URL attribute to Excel caused all columns to appear as hyperlinks</li>
 <li>Fixed an issue where a Dynamic text in a table cell was cut off in a print</li>
 <li>Fixed an issue where a Matrix Table in a printed Presentation incorrectly showed the slicer caption as a breadcrumb</li>
</ul>
<p><strong>Mobile</strong></p>
<ul>
 <li>Fixed an issue where the Smart Insights close button didn't respond in the iOS App</li>
 <li>On iPad, "Jump to Content Item &gt; New Tab" now opens correctly in a new tab instead of a pop-up</li>
 <li>Fixed a redundant (x) close button in the UI</li>
 <li>Fixed an issue where the navigation bar would disappear on a mobile device&nbsp;after clicking a hyperlink&nbsp;</li>
</ul>
<p style="text-align:start"><strong>Data Sources</strong></p>
<ul>
 <li>Added support for Microsoft Entra ID authentication for "MS SQL Server Azure and Azure Synapse" data sources</li>
</ul>
<p><strong>Admin</strong></p>
<ul>
 <li>Fixed an issue where removing an AI service instance from the server instances did not remove it from the AI servers list, which sometimes caused ML environment reinstalls to fail by referencing an invalid AI server.</li>
 <li>Fixed an issue where auto-provisioning continued running after deactivation</li>
 <li>Fixed an issue where removing an AI server from the server instances list without refreshing the browser caused the old server instance to be used when installing AI environments</li>
 <li>Fixed an issue where an error message appeared when attempting to save changes in the Logs Clean task within Task Manager</li>
 <li>Fixed an issue where filtering users by Secondary Phone and External ID, did not function correctly&nbsp;</li>
</ul>
<p><strong>Other&nbsp;</strong></p>
<ul>
 <li>Fixed an issue where Roles were not inherited from the parent folder when importing via the API</li>
 <li>Fixed an issue causing the Router service to stop with a "Cannot invoke because 'machineStatus' is null" error</li>
 <li>Fixed an issue that was causing a "Can't run k8s pod monitor" error</li>
 <li>Various help improvements</li>
 <li>Fixed an issue where a Discovery tutorial was unresponsive</li>
 <li>Fixed an issue that was causing IMDB connection failures</li>
 <li>Fixed an issue that caused an "Exception while executing batch" error to appear in the System Logs</li>
 <li>Fixed an issue where embedded report CSS was interfering with the host application's styling</li>
 <li>Fixed an issue where the Recommendation task caused an out-of-memory error</li>
 <li>Fixed an issue where the login failed with error 500</li>
 <li>Fixed an issue where users could be assigned to roles from other tenants via the API, even when "Enable cross-tenant user roles" was disabled</li>
 <li>Fixed an issue where reusing one of the last 12 passwords with High strength settings caused the password change screen to hang without feedback</li>
 <li>Fixed a member security issue on a parent-child hierarchy</li>
 <li>Fixed an issue where, after upgrading&nbsp; to 2025, certain users were missing roles following the execution of the automatic provisioning job using Active Directory as the source</li>
 <li>Fixed an issue where some folders' permissions changed after upgrading from 2023 to 2025 on Linux</li>
 <li>Resolved an error triggered by clicking "Load current present dashboard" in a Conversation</li>
 <li>Fixed an issue where the User "Sync" didn't update the username</li>
 <li>Resolved a log cleaner failure caused by too many parameters</li>
 <li>Fixed an issue where the&nbsp;idle connection cleaner could lose connection from the pool</li>
</ul>]]></description>
          <pubDate>Mon, 11 Aug 2025 15:18:59 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/x2ykvt3/pyramid-2025-01-issues-addressed</guid>
          <dc:creator>Itamar Birenzweig</dc:creator>
        </item>

      <item>
          <title>Pyramid 2025 &#x22;Newton&#x22; - You Asked, We Delivered</title>
          <link>https://community.pyramidanalytics.com/t/g9yfd6z/pyramid-2025-newton-you-asked-we-delivered</link>
          <description><![CDATA[<p>Over 75% of the enhanced and new features delivered in Pyramid 2025 "Newton" were initiated by you, our customers. Here's a listing and link back to the posts in the Product Ideas Form that have been implemented.</p>
<p>See the <a href="/t/83yf1d9/pyramid-2025-newton-released" rel="nofollow noopener noreferrer">Pyramid 2025 "Newton" Product Announcement</a> for full details.</p>
<h2>Model</h2>
<p><u><a href="/t/y4yy5cw/execute-a-chain-ad-hoc-in-modelling" rel="nofollow noopener noreferrer">Execute a chain ad hoc in modelling</a></u></p>
<p><u><a href="/t/m1yyts6/parquet-files-as-source-for-models" rel="nofollow noopener noreferrer">Parquet files as source for models</a></u></p>
<p><u><a href="/t/x2yhlml/tabulateexcel-write-back-to-data-prepmodel" rel="nofollow noopener noreferrer">Tabulateexcel write back to data prepmodel</a></u></p>
<p><u><a href="/t/35yz8gm/enhanced-llm-integration-and-functionality-workflow-node-with-selectable-llms-providing-multiple-new-use-cases" rel="nofollow noopener noreferrer">Enhanced llm integration and functionality workflow node with selectable llms providing multiple new use cases</a></u></p>
<p><u><a href="/t/m1yzqxx/sorting-on-multiple-columns-in-model" rel="nofollow noopener noreferrer">Sorting on multiple columns in model</a></u></p>
<p><u><a href="/t/h7hc88c/add-ability-to-choose-new-field-names-for-summarize-node-in-modeling" rel="nofollow noopener noreferrer">Add ability to choose new field names for summarize node in modeling</a></u></p>
<h2>Discover</h2>
<p><u><a href="/t/x2yt15z/allow-analyst-users-to-select-bookmarks-while-in-discover-lite" rel="nofollow noopener noreferrer">Allow analyst users to select bookmarks while in discover lite</a></u></p>
<p><u><a href="/t/y4yz32z/allow-analyst-users-to-generate-a-url-in-discover-lite-present-lite" rel="nofollow noopener noreferrer">Allow analyst users to generate a url in discover lite present lite</a></u></p>
<p><u><a href="/t/q6yzwsa/add-a-pause-button-to-the-discover-lite" rel="nofollow noopener noreferrer">Add a pause button to the discover lite</a></u></p>
<p><u><a href="/t/83yl5cc/control-autorun-in-analyze-further-mode" rel="nofollow noopener noreferrer">Control autorun in analyze further mode</a></u></p>
<p><u><a href="/t/m1ytca7/new-features-for-the-maps" rel="nofollow noopener noreferrer">New features for the maps</a></u></p>
<p><u><a href="/t/x2yzr59/add-show-total-labels-feature-to-stacked-100-column-and-marimekko-chart" rel="nofollow noopener noreferrer">Add show total labels feature to stacked 100 column and marimekko chart</a></u></p>
<p><u><a href="/t/h7yz76y/legend-graph-formatting-miss-match" rel="nofollow noopener noreferrer">Legend graph formatting miss match</a></u></p>
<p><u><a href="/t/83yzxdr/copy-and-pasting-rawvisual-data-out-of-pyramid-into-google-sheets" rel="nofollow noopener noreferrer">Copy and pasting rawvisual data out of pyramid into google sheets</a></u></p>
<p><u><a href="/t/h7y6j4w/lasso-functionality-in-maps" rel="nofollow noopener noreferrer">Lasso functionality in maps</a></u></p>
<p><u><a href="/t/60hawa0/resizing-multiple-columns-in-a-discover" rel="nofollow noopener noreferrer">Resizing multiple columns in a discover</a></u></p>
<p><u><a href="/t/60y6nv2/show-dimensionss-subfolders-when-swapping" rel="nofollow noopener noreferrer">Show dimensionss subfolders when swapping</a></u></p>
<p><u><a href="/t/y4h42gd/nested-sort" rel="nofollow noopener noreferrer">Nested sort</a></u></p>
<p><u><a href="/t/h7yl0rf/sorting-order-to-be-retained-when-swap-dimension-feature-is-in-use" rel="nofollow noopener noreferrer">Sorting order to be retained when swap dimension feature is in use</a></u></p>
<p><u><a href="/t/y4h42gd/nested-sort" rel="nofollow noopener noreferrer">Nested sort</a></u></p>
<h2>Formulate</h2>
<p><u><a href="/t/83h8crr/allow-existing-formulate-objects-to-change-attribute-context" rel="nofollow noopener noreferrer">Allow existing formulate objects to change attribute context</a></u></p>
<h2>Present</h2>
<p><u><a href="/t/60ymkqa/time-delayed-filter-activation-for-present" rel="nofollow noopener noreferrer">Time delayed filter activation for present</a></u></p>
<p><u><a href="/t/g9hpb09/pause-button-to-allow-slicing-without-immediately-updating" rel="nofollow noopener noreferrer">Pause button to allow slicing without immediately updating</a></u></p>
<p><u><a href="/t/y4yz32z/allow-analyst-users-to-generate-a-url-in-discover-lite-present-lite" rel="nofollow noopener noreferrer">Allow analyst users to generate a url in discover lite present lite</a></u></p>
<p><u><a href="/t/h7ymxh4/adding-mini-tabs-to-scrollable-panel-or-vice-versa-in-present-module" rel="nofollow noopener noreferrer">Adding mini tabs to scrollable panel or vice versa in present module</a></u></p>
<p><u><a href="/t/q6yysx6/adjustable-tile-template-size-for-mobile" rel="nofollow noopener noreferrer">Adjustable tile template size for mobile</a></u></p>
<p><u><a href="/t/h7y6j4w/lasso-functionality-in-maps" rel="nofollow noopener noreferrer">Lasso functionality in maps</a></u></p>
<p><u><a href="/t/y4h42gd/nested-sort" rel="nofollow noopener noreferrer">Nested sort</a></u></p>
<p><u><a href="/t/p8yfky2/shadow-for-shape" rel="nofollow noopener noreferrer">Shadow for Shape</a></u></p>
<p><u><a href="/t/h7yfkyz/exportprint-button-to-be-mapped-with-a-single-chart-at-the-presentation-layer" rel="nofollow noopener noreferrer">Export / print button to be mapped with a single chart at the presentation layer</a></u></p>
<h2>Publish</h2>
<p><u><a href="/t/m1yxvc3/include-multi-select-dropdown-slicer-in-publish" rel="nofollow noopener noreferrer">Include multi select dropdown slicer in publish</a></u></p>
<h2>Illustrate</h2>
<p><u><a href="/t/q6yx4rr/enhancing-illustration-capabilities" rel="nofollow noopener noreferrer">Enhancing illustration capabilities</a></u></p>
<h2>Embedding</h2>
<p><u><a href="/t/m1ytn0h/improve-exportinga-single-grid-to-excel-from-an-embedded-present" rel="nofollow noopener noreferrer">Improve exportinga single grid to excel from an embedded present</a></u></p>
<h2>Admin</h2>
<p><u><a href="/t/q6h4y2j/add-support-for-auto-provisioning-with-saml" rel="nofollow noopener noreferrer">Add support for auto provisioning with saml</a></u></p>
<p><u><a href="/t/g9h05fw/add-group-role-button-missing-in-saml-authentication-mode" rel="nofollow noopener noreferrer">Add group role button missing in saml authentication mode</a></u></p>
<p><u><a href="/t/g9h4jb3/pass-adfs-groups-to-pyramid-in-saml-authentication-mode" rel="nofollow noopener noreferrer">Pass adfs groups to pyramid in saml authentication mode</a></u></p>
<h2>Content Management</h2>
<p><u><a href="/t/83yyr6m/add-folder-favorites-for-making-saving-content-easier" rel="nofollow noopener noreferrer">Add folder favorites for making saving content easier</a></u></p>
<p><u><a href="/t/q6hg108/report-management-copy-and-paste-your-own-reports-and-folders-as-viewer" rel="nofollow noopener noreferrer">Report management copy and paste your own reports and folders as viewer</a></u></p>
<p><u><a href="/t/g9hp5zb/default-content-view-settings-for-viewer-licenses" rel="nofollow noopener noreferrer">Default content view settings for viewer licenses</a></u></p>
<h2>Other Features</h2>
<p><u><a href="/t/x2y3mbv/api-endpoint-for-imdb-database-sizes" rel="nofollow noopener noreferrer">Api endpoint for imdb database sizes</a></u></p>]]></description>
          <pubDate>Wed, 09 Apr 2025 12:23:44 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/g9yfd6z/pyramid-2025-newton-you-asked-we-delivered</guid>
          <dc:creator>Ian Macdonald</dc:creator>
        </item>

      <item>
          <title>Pyramid 2025 Issues Addressed</title>
          <link>https://community.pyramidanalytics.com/t/y4yfjfv/pyramid-2025-issues-addressed</link>
          <description><![CDATA[<p style="text-align:start">The following list enumerates all the main bug fixes in the <a href="/t/83yf1d9/pyramid-2025-newton-released" rel="nofollow noopener noreferrer">Pyramid 2025.0 version</a>&nbsp;since the last release (2023.16 and 2024.0).&nbsp;</p>
<p><em>Key bug fixes</em> added into Pyramid 2025 will also be released as well as part of an upgrade to Pyramid 2023 Archimedes and Pyramid 2024 Fibonacci in the new few weeks.</p>
<h2 style="text-align: start;"><span class="pen4"><strong>Fixes in Pyramid 2025</strong></span></h2>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#model" rel="nofollow noopener noreferrer">Model</a></h3>
<ul>
 <li>Fixed an issue where a Model using a custom connector lost the ability to select a data source in the target environment after migration</li>
 <li>Fixed a date format issue in the Pivot node</li>
 <li>Performance enhancement of connectivity to a Snowflake data source with SSO</li>
 <li>Fixed an error that occurred when using a column from a table in an outer join within an Oracle Direct Query model, specifically when the table contained CLOB-type columns</li>
 <li>Fixed an issue where a Variable was not set correctly</li>
 <li>Fixed an SQL type issue for Trino</li>
 <li>Fixed an inaccurate BigInt value in the Preview</li>
 <li><p>Fixed an issue where an unexpected array in an LLM response caused a model process to fail</p></li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#discover" rel="nofollow noopener noreferrer">Discover</a></h3>
<p><strong>&nbsp; &nbsp; &nbsp; Queries</strong></p>
<ul>
 <li>Fixed an issue where Sort didn't work as expected for a chart that uses a dynamic dimension based on a Custom Column</li>
 <li>Fixed an issue where a filtered list based on a custom column didn't return the right items</li>
 <li>Fixed an issue where 'Total Function per Measure' Produced unexpected results</li>
 <li>Fixed an issue where the Explain feature wasn't working when using custom calculations and parameters</li>
 <li>Sub querying optimizations</li>
 <li>Fixed an issue where a Discover failed to open with a "Could not find column error"</li>
 <li><p>Fixed an issue where a Select Distinct failed on IMDB with a "The table does not exist in the database" error</p></li>
 <li><p>Fixed an issue where a nested Custom Column functioned as a filter only when "All" was selected</p></li>
 <li><p style="text-align:left">Fixed an issue where an Action didn't pass the Context when using a Custom Column&nbsp;</p></li>
 <li><p style="text-align:left">Fixed a&nbsp;strToMember&nbsp;issue with&nbsp;CurrentMember&nbsp;functions</p></li>
</ul>
<p><strong>&nbsp; &nbsp; &nbsp; Visualizations</strong></p>
<ul>
 <li>Fixed an issue where a data label was missing in a chart for a measure on the secondary axis when the primary axis measure contained a null value</li>
 <li>Fixed an issue where a Custom Column sort by global parameter didn't work</li>
 <li>Fixed a Range Slider issue in Firefox</li>
 <li>Fixed an issue where a Discover caused a blank screen upon opening&nbsp;</li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#present" rel="nofollow noopener noreferrer">Present</a></h3>
<ul>
 <li>Fixed an issue where Undo and Reset failed to revert cross-visual Target Interactions on Presents</li>
 <li>Fixed an issue where Reset and Undo didn't work on a grid after moving to a different slide and then back</li>
 <li>Fixed an issue where a Jump Action was not working when triggered from a chart that uses a Parameter</li>
 <li>Fixed a caching issue that prevented data from updating</li>
 <li>Fixed an issue where drilling down a multi-level hierarchy in a Present caused a "connection closed" error</li>
 <li><p style="text-align:left">Fixed an issue where visualized content from Tabulate failed to load in present&nbsp;</p></li>
 <li><p style="text-align:left">Fixed an issue where a Present didn’t update after the first slicer change when multiple custom columns with different parameter values were used</p></li>
 <li><p style="text-align:left">Fixed an issue where Smart Insights failed with a "Cannot read properties of undefined" error</p></li>
</ul>
<h3 style="text-align: left;">Tabulate</h3>
<ul>
 <li><p>Fixed an issue where the XIRR formula didn't work in Tabulate</p></li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#publish" rel="nofollow noopener noreferrer">Publish</a></h3>
<ul>
 <li>Fixed an issue where a Schedule was no longer using the BW default parameters</li>
 <li>Fixed a page trigger issue when using model mapping</li>
 <li>Fixed an issue in Kubernetes environments where subscriptions with the 'Attach Content' option enabled failed to send with a 'No such file or directory' error&nbsp;</li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#formulate" rel="nofollow noopener noreferrer">Formulate</a></h3>
<ul>
 <li>Fixed an issue creating Custom Columns when metadata cache is off</li>
 <li>Fixed an issue where NextMember, Lags, and Leads functions returned NULL when a column was sorted as descending in the model&nbsp;</li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#illustrate" rel="nofollow noopener noreferrer">Illustrate</a></h3>
<ul>
 <li><p>Fixed a Text alignment issue in a one-off illustration</p></li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#content-management" rel="nofollow noopener noreferrer">Content Management</a></h3>
<ul>
 <li>Fixed an issue that was causing duplicated data sources to appear in the Data Source Changer after an import</li>
 <li>Fixed an issue where Pro users couldn't delete a folder they created</li>
 <li><p>Improved handling of content opening in cases where its data source has been deleted</p></li>
 <li><p>Fixed an issue where items created in Formulate were not appearing in the formula tree when creating a new item&nbsp;</p></li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#printing-export" rel="nofollow noopener noreferrer">Printing / Export</a></h3>
<ul>
 <li>Fixed a scaling issue of a Dynamic text in a present table when printed to PPT</li>
 <li>Fixed an issue that caused printing to Excel to fail when using a BW data source</li>
 <li>Fixed an issue where a Custom Subtitle in a Publication was not reflected in the Excel Export</li>
 <li>Fixed a time format error on a measure that caused a print to Excel to fail</li>
 <li>Fixed an issue where a "Publication print click action" downloaded multiple files&nbsp;</li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#admin" rel="nofollow noopener noreferrer">Admin</a></h3>
<ul>
 <li><p>Fixed an issue where a Provisioning job changed profiles regardless of the user's type</p></li>
 <li><p>Fixed an issue where the Region couldn't be changed when configuring a Google Gemini LLM provider</p></li>
 <li><p>Fixed an issue where the Maximum File Size setting was ignored</p></li>
 <li><p>Fixed an issue where "Download logs" for the In-Memory DB failed in a Linux environment where the default location was changed</p></li>
 <li><p>Fixed an issue that prevented certain filters in the Transaction Logs from working properly</p></li>
</ul>
<h3>Performance</h3>
<ul>
 <li>Fixed an IMDB connection issue that caused the IMDB server to become unresponsive</li>
</ul>
<h3>Mobile</h3>
<ul>
 <li>Fixed an issue where Labels were cut off when viewing a bar chart on an iPad</li>
 <li>Fixed an issue where clicking a link in a Discovery grid didn't work in a mobile browser</li>
 <li><p>Fixed an issue where the Toolbar in Analyze Further was cut off on the iPad&nbsp;</p></li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#other" rel="nofollow noopener noreferrer">Other</a></h3>
<ul>
 <li>Fixed an issue where Logs were not getting cleaned from the log folder</li>
 <li>Fixed an issue with Pyramid embed using React when installing in the root of the project</li>
 <li>Fixed an issue where "Not enough information" appeared in an embedded Present in the initial loading</li>
 <li>Fixed an issue where the app tabs order couldn't be changed on macOS</li>
 <li>Fixed an issue where Prometheus, deployed via Helm, failed due to a missing Content-Type header</li>
 <li>Fixed an issue where a "Can't run k8s pod monitor" error appeared in the System Logs for Kubernetes installations</li>
 <li>Fixed an issue where a&nbsp; "Can't create process at schedule" error appeared in the System Logs until a restart of the pods</li>
 <li><p>Online help improvements</p></li>
 <li><p>Fixed an issue that was causing a "Cannot find an active runtime engine" error</p></li>
</ul>]]></description>
          <pubDate>Wed, 09 Apr 2025 12:23:35 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/y4yfjfv/pyramid-2025-issues-addressed</guid>
          <dc:creator>Itamar Birenzweig</dc:creator>
        </item>

      <item>
          <title>Learning Hub Guide: Embedded Analytics with Pyramid</title>
          <link>https://community.pyramidanalytics.com/t/g9yltwz/learning-hub-guide-embedded-analytics-with-pyramid</link>
          <description><![CDATA[<h2><strong>Dive Deeper into embedding Analytics with Pyramid in the Learning Hub</strong></h2>
<p>Embedding with Pyramid allows developers to embed visuals, reports and dashboards from the Discover and Present modules into any application, while retaining all core functionality of the visualizations. In this guide, you will get a walkthrough on all areas that are important to understanding the embedding capability – use cases and key drivers to embedding, authentication, embedding API’s and typical embedding workflows.&nbsp;</p>
<h3>Learning Objectives</h3>
<p style="text-align:start">This guide, comprised of 11 videos, is geared towards Professional license holders, who have rights to embedding content outside of the Pyramid platform.&nbsp;Although JavaScript knowledge is not a requirement, it could be useful in understanding how embedding is implemented via the Pyramid Analytics website.</p>
<p style="text-align:start">Please note there are two licensing options for embedding:</p>
<ul>
 <li><p><strong>Embed - Named:&nbsp;</strong>Embed interactive visuals, reports and dashboards from the Discover and Present functionality into any of the customer's website web application. Required for SSO. Does not include named authenticated users.</p></li>
 <li><p><strong>Embed - Public:&nbsp;</strong>Embed interactive visuals, reports and dashboards from the Discover and Present functionality into any of the customer's website web application. Users accessing the embedded experience are not named/license users.</p></li>
</ul>
<h4>Take the guide here:&nbsp;</h4>
<p><a href="https://learn.pyramidanalytics.com/courses/embedded-analytics-with-pyramid/" rel="nofollow noopener noreferrer" target="_blank">Embedding Analytics with Pyramid</a></p>
<p>Let us know what you think!</p>]]></description>
          <pubDate>Tue, 07 Jan 2025 10:18:37 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/g9yltwz/learning-hub-guide-embedded-analytics-with-pyramid</guid>
          <dc:creator>Sandra Caballer</dc:creator>
        </item>

      <item>
          <title>Learning Hub Guide: Data Concepts and Integrating Calculations in Pyramid</title>
          <link>https://community.pyramidanalytics.com/t/p8ylq6l/learning-hub-guide-data-concepts-and-integrating-calculations-in-pyramid</link>
          <description><![CDATA[<h2><strong>Dive Deeper into the Basic Principles of Calculations with the Learning Hub</strong></h2>
<p>Calculations are a key feature of the Pyramid Platform, offering powerful functionality across its modules. Depending on the specific use case, calculations can be created within individual modules or through Formulate. While this flexibility can seem complex, this guide will walk you through the basics, explaining how and where to use calculations in four comprehensive chapters.</p>
<h3>Learning Objectives</h3>
<p>The aim of this guide is to provide useful insights into:</p>
<ul>
 <li><p>how the various Pyramid&nbsp;modules (or applications)&nbsp;support calculations</p></li>
 <li><p>how the calculation engine is applied in the various modules.</p></li>
</ul>
<p><strong>Note:&nbsp;</strong>Be aware this course focuses on basic principles rather than teaching Formulate. Users should refer to our Help Pages and our Courses on Formulate for deeper insights.</p>
<h4>Take the course here:&nbsp;</h4>
<p><a href="https://learn.pyramidanalytics.com/courses/guide-data-concepts-and-integrating-calculations-in-pyramid/" rel="nofollow noopener noreferrer" target="_blank">Data Concepts and Integrating Calculations in Pyramid</a></p>
<p>Let us know what you think!</p>]]></description>
          <pubDate>Tue, 10 Dec 2024 10:56:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/p8ylq6l/learning-hub-guide-data-concepts-and-integrating-calculations-in-pyramid</guid>
          <dc:creator>Sandra Caballer</dc:creator>
        </item>

      <item>
          <title>Learning Hub Course: Basic Dashboard Design Principles</title>
          <link>https://community.pyramidanalytics.com/t/h7yz37p/learning-hub-course-basic-dashboard-design-principles</link>
          <description><![CDATA[<h2><strong>Dive Deeper into Pyramid Use Cases with the Learning Hub</strong></h2>
<p><strong>The Use Case: Improving an existing dashboard</strong></p>
<p>This course, designed for professional license holders, walks you through five key design principles to help you create dashboards that are both visually appealing and effective.</p>
<p>You'll be involved in every step of the process, with opportunities to think critically about how the dashboard provided in this course (image above) can be improved.</p>
<h3>Learning Objectives</h3>
<p>By the end of this course you will be better able to:</p>
<ul>
 <li>spot design mistakes in your own dashboards</li>
 <li>use design principles to prevent and correct them</li>
 <li>create visually appealing dashboards ready to be shared with your team.</li>
</ul>
<p><strong>Note:&nbsp;</strong>Be aware this course focuses on basic design principles rather than teaching Formatting panel and Design ribbon functionality. Users are expected to be familiar with the Formatting panel in the Present module.</p>
<h4>Take the course here:&nbsp;</h4>
<p><a href="https://learn.pyramidanalytics.com/courses/present-basic-dashboard-design-principles-for-pro-license-holders/" rel="nofollow noopener noreferrer" target="_blank">Basic Dashboard Design Principles for Pro Users</a></p>
<p>The dashboard can be found here: <a href="https://explore.pyramidanalytics.com/direct?id=394c482d-63d0-403e-a805-30909b746a15&amp;backToApp" rel="nofollow noopener noreferrer" target="_blank">Starting Dashboard</a>&nbsp;</p>
<p>Let us know what you think!</p>]]></description>
          <pubDate>Mon, 14 Oct 2024 16:53:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h7yz37p/learning-hub-course-basic-dashboard-design-principles</guid>
          <dc:creator>Sandra Caballer</dc:creator>
        </item>

      <item>
          <title>Talk to your Data and See It on the Map</title>
          <link>https://community.pyramidanalytics.com/t/m1ytz2z/talk-to-your-data-and-see-it-on-the-map</link>
          <description><![CDATA[<h2>Conversational BI with Pyramid and Mapbox</h2>
<p>In a recent Webinar, our own&nbsp;<button class="mention focus-save" data-href="/profile/h4c9qx" type="button">Joe Beaubien</button>&nbsp;talked with Cris Byers from our Partner Mapbox about the potential of using GenBI in combination with their mapping service. See the video below.</p>
<p>Feel free to share this article (preferred) or the Youtube Video with your colleagues.</p>
<p><a href="https://www.youtube.com/watch?v=Vpsk7GNS_tQ" rel="nofollow noopener noreferrer" target="_blank">https://www.youtube.com/watch?v=Vpsk7GNS_tQ</a></p>
<p><span class="video-inline" data-href="https%3A%2F%2Fwww%2Eyoutube%2Ecom%2Fwatch%3Fv%3DVpsk7GNS_tQ" style="padding-bottom:56.49%;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen frameborder="0" height="113" src="https://www.youtube.com/embed/Vpsk7GNS_tQ?feature=oembed&amp;wmode=transparent" title="Mapbox and Pyramid Analytics BI Webinar - July 25, 2024" width="200"></iframe></span></p>
<p>Let us know your feedback.</p>]]></description>
          <pubDate>Tue, 13 Aug 2024 09:54:32 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/m1ytz2z/talk-to-your-data-and-see-it-on-the-map</guid>
          <dc:creator>Christian Langmayr</dc:creator>
        </item>

      <item>
          <title>Enhancing Accessibility in Data Analytics: The Importance of Dyslexic-Friendly Fonts</title>
          <link>https://community.pyramidanalytics.com/t/h7ymkf8/enhancing-accessibility-in-data-analytics-the-importance-of-dyslexic-friendly-fonts</link>
          <description><![CDATA[<h2 class="toc__permalink"><a href="/t/60y64g2/empower-the-executive-sponsor#guest-blog-tip-1-of-5-empowering-the-executive-sponsor" rel="nofollow noopener noreferrer">Guest Blog - Enhancing Accessibility</a></h2>
<h3>The Importance of Dyslexic-Friendly Fonts</h3>
<p>After my Blogs on the general Management of Data Analytics Projects I would like to add another angle to your Business Analytics Project.</p>
<p>How to cater for users with Disabilities, its not a topic we usually think about when designing reporting, but its an important one for your users.&nbsp;My daughter has dyslexia. We're lucky; it was diagnosed early, and working with her schools, we've ensured that it does not affect her learning ability. She now thrives, and this is lovely to see. We deal with this in varying ways: she uses her iPad and MacBook to make notes (her handwriting can be poor), and when reading on her Kindle, we use a Dyslexic font, which was a game changer in reading. And this brought me to an important point for your reporting environment.&nbsp;</p>
<p><u>Around 10% of the global population is affected by dyslexia. </u></p>
<p>Statistically, there are 3 men for every 1 woman diagnosed with dyslexia, but women tend to under report or better compensate for their difficulties. This in itself means that there are potentially many more millions who are affected and simply "get by".&nbsp;</p>
<blockquote>
 <p>In the realm of data analytics, accessibility should be at the forefront of design—not only does it ensure inclusivity, but it also empowers all users to engage fully with the data.&nbsp;</p>
</blockquote>
<p>If at least 10% of your users could be affected, a significant number of your workforce could be at a disadvantage, potentially unable to interpret the data&nbsp;they're presented with ease.&nbsp;</p>
<p>Traditional fonts often exacerbate these challenges, making it difficult for individuals with dyslexia to decode text efficiently.&nbsp;Dyslexic-friendly fonts are designed to mitigate these issues by enhancing letter distinction and optimising spacing.</p>
<p>By incorporating a dyslexic font into Pyramid Analytics, we can create an environment that supports all users, fostering confidence and a positive relationship with data analysis.</p>
<p>Here's how you might support that 10% of your organisation when it comes to enabling better consumption of analytics.&nbsp;</p>
<h3>Step One: Add OpenDyslexic to your Web-Browser, use Edge, and the Web Version.&nbsp;</h3>
<p>This is not perfect and is not the finished solution. If you are dyslexic and want most of the data within Pyramid to show in a Dyslexic-friendly font, then:</p>
<ol>
 <li>Use Edge. From what I've found, the extensions in Edge work better for accessibility tools.&nbsp;</li>
 <li>Download the Hyperbird extension. The link <a href="https://microsoftedge.microsoft.com/addons/detail/helperbird-accessibility/bkibfggdahioahpokehoiimdmdjefjmd?hl=en-GB" rel="nofollow noopener noreferrer" target="_blank">here</a>&nbsp;is here.&nbsp;There are&nbsp;free and paid-for versions. I used the&nbsp;free version during my tests and it worked great.&nbsp;</li>
 <li>Enable it.&nbsp;</li>
</ol>
<p><strong>What does it do? </strong>It ensures that the Measures and Dimensions panels appear in the OpenDyslexic font. This might be useful for those who use self-service.&nbsp;</p>
<p><strong>What does it not do? </strong>It doesn't work on the Drop Zones, Formatting Panels, or Ribbon. The visuals will adopt the font as dictated by the font from the Formatting Panel,or the Design Theme.&nbsp;</p>
<p style="text-align:left"><img alt="" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/f578d9c1-8914-4e19-a0ac-cb5e40e0e66d/h/547.png" style="" width="234"></p>
<p><strong>Things to note:&nbsp;</strong>I've found that the Chrome extensions appear to be great options for general websites but are ineffective for Pyramid.&nbsp;</p>
<h3><strong>Step Two: Setting Up a Dyslexic-Friendly Font in Pyramid Analytics.</strong></h3>
<p>The above is half the story. It allows professional and Analyst Users to use a dyslexia-friendly font when building new content. It doesn't change the font of the visual, though, so it's only half the solution.</p>
<p>To fix this, you can add a custom font to your Pyramid Analytics environment!&nbsp;🎉</p>
<p>We're using OpenDyslexic, a free-to-use font that can be found here. The standard fonts are downloadable, but you'll want the Woff2 and Woff files, so use the links below. Thanks to OpenDyslexic for creating the font and making it available for free use. Feel free to make a donation to the creator, Abbie Gonzalez, <a href="https://www.patreon.com/opendyslexic" rel="nofollow noopener noreferrer" target="_blank">here</a>!</p>
<p>To do this, follow these steps:</p>
<ol>
 <li>Download&nbsp;these fonts from <a href="https://hoptonanalytics.com/dyslexia-friendly-font-for-pyramid-analytics/" rel="nofollow noopener noreferrer" target="_blank">here</a>, which you'll use below.&nbsp;</li>
 <li>Go to the "Admin Console".&nbsp;</li>
 <li>Click "Design".</li>
 <li>Click "Custom Fonts".</li>
 <li>Click "Add Custom Font".&nbsp;</li>
 <li>Enter the following details as your Custom Font, per the image below. 
  <ol>
   <li>Caption: Open-Dyslexic</li>
   <li>Font Family Name: Open-Dyslexic</li>
   <li>Fallback Font Style: Sans Serif</li>
  </ol></li>
 <li>Upload the woff2 and woff files, as included above, for: 
  <ol>
   <li>Normal</li>
   <li><strong>Bold</strong></li>
   <li><em>Italic</em></li>
   <li><em><strong>Bold-Italic</strong></em></li>
  </ol></li>
 <li>Note that the <strong>Bold </strong>and <em><strong>Bold Italic </strong></em>don't look any different from their Normal and <em>Italic </em>counterparts in the Preview.&nbsp;</li>
 <li>If you have associated tenants, then ensure to complete these sections also.</li>
 <li>Apply.&nbsp;</li>
</ol>
<p>This is what the Custom Font settings will look like.&nbsp;</p>
<p style="text-align:left"><img alt="" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/8aba340d-4b43-4001-84fc-bc98a85c5cf4/h/547.png" style="" width="1288"></p>
<p>That's it! You now have a custom font that your Professional and Analyst Users can use to build dyslexia-friendly solutions.&nbsp;&nbsp;</p>
<h3><strong>Step Three: Create and use Theme Designs that include the new font.</strong></h3>
<p>If you wish to roll out dyslexia-friendly themes, you can create them as you would normally. Alternatively, at Hopton Analytics, we've created enhanced Themes based upon standard pre-existing ones that include dyslexia-friendly fonts.</p>
<p>You can download them <a href="https://hoptonanalytics.com/dyslexia-friendly-font-for-pyramid-analytics/" rel="nofollow noopener noreferrer" target="_blank">here</a>.&nbsp;</p>
<h3>That's it! What did we miss? What could we have said better?</h3>
<p>What do you think we missed? We're planning on working on a series of colour-blind-friendly themes, too. But in the meantime, is there anything else we should or could have suggested above?</p>
<p>Do you have any ideas of anything else you'd like to see?</p>
<p>We'd love to hear from you.&nbsp;</p>
<p>&nbsp;</p>
<p>We hope you find the above useful from all of us at Hopton Analytics.&nbsp;&nbsp;</p>]]></description>
          <pubDate>Tue, 23 Jul 2024 12:00:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h7ymkf8/enhancing-accessibility-in-data-analytics-the-importance-of-dyslexic-friendly-fonts</guid>
          <dc:creator>Simon Devine</dc:creator>
        </item>

      <item>
          <title>Ensure you have a Communication Plan and Measure Your Success</title>
          <link>https://community.pyramidanalytics.com/t/y4ymqv9/ensure-you-have-a-communication-plan-and-measure-your-success</link>
          <description><![CDATA[<h2>Guest Blog - Tip #5 (of 5) - Ensure you have a Communication Plan and Measure Your Success</h2>
<h3>Navigating Business Intelligence Adoption in Your Organisation</h3>
<p><strong>Ensure you have a Communication Plan</strong></p>
<ul>
 <li>Give Regular Updates on the progress consistently. As discussed above, share success stories, highlight milestones, and address any challenges transparently and quickly. 
  <ul>
   <li>Share Case Studies as covered above.</li>
   <li>Deal with setbacks quickly and efficiently. If there’s a problem with data or the UX, tackle them above everything else.</li>
  </ul></li>
 <li><strong>Measure your Success</strong><br> This is an odd one, as it’s common sense, right? You’re running a BI project, and yet, if you’re honest, I wonder how many BI projects measured their success via KPIs and Metrics. Not many would be my guess! These are essential, though, so consider: 
  <ul>
   <li>KPIs and Metrics: Define the OKRs and KPIs for BI adoption for your project. This could be usage, it could be the number of reports and dashboards produced and the number of legacy reports/spreadsheets that have been removed from service. A must is data quality, too.</li>
   <li>Feedback Loops: Collect feedback from users. Are they finding value? Are there pain points? Use this input to refine the plan. Add Surveys to your reports and dashboards and encourage their use. Learn from the points made.</li>
  </ul></li>
</ul>
<p>Do you agree with the above? What is your experience?</p>
<p>Hoping you’ve found our series of posts on Navigating Business Intelligence Adoption in Your Organisation useful.</p>
<p>If you want to chat this through, get in touch! I’ve love the opportunity to speak with you.</p>
<p>All the best, Simon.</p>
<p>&nbsp;</p>
<p>Here are links to all the parts:</p>
<p>&nbsp; &nbsp;<a href="/t/60y64g2" rel="nofollow noopener noreferrer">Empowering the Executive Sponsor</a><br> &nbsp; &nbsp;<a href="/t/h7ymhqh" rel="nofollow noopener noreferrer">Fostering a Culture of Data Literacy</a><br> &nbsp; &nbsp;<a href="/t/35ymqvv/make-data-relatable-through-story-telling" rel="nofollow noopener noreferrer">Make Data Relatable through Story Telling</a><br> &nbsp; &nbsp;<a href="/t/q6ymhqq/craft-a-comprehensive-delivery-plan" rel="nofollow noopener noreferrer">Craft a Comprehensive Delivery Plan</a><br> &nbsp; &nbsp;Ensure you have a Communication Plan and Measure Your Success&nbsp;</p>
<p>&nbsp;</p>
<p>This Guest Blog has been written by our Community Member and Consultant&nbsp;<button class="mention focus-save" data-href="/profile/g9hlvnz" type="button">Simon</button>&nbsp;. For questions, please leave a comment below.</p>]]></description>
          <pubDate>Tue, 09 Jul 2024 13:00:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/y4ymqv9/ensure-you-have-a-communication-plan-and-measure-your-success</guid>
          <dc:creator>Simon Devine</dc:creator>
        </item>

      <item>
          <title>Craft a Comprehensive Delivery Plan</title>
          <link>https://community.pyramidanalytics.com/t/q6ymhqq/craft-a-comprehensive-delivery-plan</link>
          <description><![CDATA[<h2>Guest Blog - Tip #4 (of 5) - Craft a Comprehensive Delivery Plan</h2>
<h3>Navigating Business Intelligence Adoption in Your Organisation</h3>
<p>A well-structured delivery plan is the backbone of successful BI adoption. It ensures that BI solutions are implemented and embraced by all stakeholders. Such a plan aligns BI initiatives with the organisation’s overall goals, bridging the gap between technical implementation and business impact. By involving all areas of the business, the plan ensures that no department is left behind: whether it’s finance, sales &amp; marketing, operations, or HR, everyone has a role to play in your BI journey.</p>
<ul>
 <li><strong>Build a Phased Roll-Out Strategy</strong>
  <ul>
   <li><strong>Start small and scale gradually,</strong> rather than a big-bang approach. Break down the BI implementation into manageable phases. Begin with a pilot project or a specific department and specific use cases. You must ensure you deliver the first one before starting on the second.</li>
   <li><strong>Iterate and Learn throughout the project.</strong> Each phase provides valuable insights. Use feedback to refine subsequent releases. For example, start with a basic dashboard for sales analytics, then expand to inventory management and customer service. The important thing here is you iterate. You build. Then, you build some more.</li>
  </ul></li>
 <li><strong>Stakeholder Engagement</strong>
  <ul>
   <li><strong>Identify champions and have executive sponsorship.</strong> Appoint BI champions within each department or team. Ensure these champions are trained, buy into the vision, and want the project to succeed. These advocates will then drive adoption, answer questions, and encourage colleagues to use the tools, speak up with ideas, and ask for more support and insights as they need.</li>
   <li><strong>Training and Support</strong> to ensure that end-users receive proper training. Offer ongoing support through workshops, webinars, and documentation. If your reports and dashboards are well-designed, training should not take long. So, organize “lunch and learn” sessions to train on the tool, but ensure there’s always the ability for the users to ask for help.</li>
  </ul></li>
</ul>
<p>Do you agree with the above? What is your experience?</p>
<p>In the final part of this five part blog post, we'll discuss how you <em><strong>ensure you have a Communication Plan and measure Your Success</strong></em></p>
<p>&nbsp;</p>
<p>This Guest Blog has been written by our Community Member and Consultant&nbsp;Simon&nbsp;. For questions, please leave a comment below.</p>
<p><em><strong>Full Topic list</strong></em></p>
<p><em>&nbsp; &nbsp;<a href="/t/60y64g2" rel="nofollow noopener noreferrer">Empowering the Executive Sponso</a>r<br> <strong>&nbsp; &nbsp;</strong>F<a href="/t/h7ymhqh" rel="nofollow noopener noreferrer">ostering a Culture of Data Literacy</a><br> &nbsp; &nbsp;<a href="/t/35ymqvv/make-data-relatable-through-story-telling" rel="nofollow noopener noreferrer">Make Data Relatable through Story Telling</a><br> &nbsp; &nbsp;Craft a Comprehensive Delivery Plan<br> &nbsp; &nbsp;Ensure you have a Communication Plan and Measure Your Success</em></p>]]></description>
          <pubDate>Tue, 25 Jun 2024 13:00:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/q6ymhqq/craft-a-comprehensive-delivery-plan</guid>
          <dc:creator>Simon Devine</dc:creator>
        </item>

      <item>
          <title>Make Data Relatable through Story Telling</title>
          <link>https://community.pyramidanalytics.com/t/35ymqvv/make-data-relatable-through-story-telling</link>
          <description><![CDATA[<h2>Guest Blog - Tip #3 (of 5) - Make Data Relatable through Story Telling</h2>
<h3>Navigating Business Intelligence Adoption in Your Organisation</h3>
<p>Data becomes more relatable when we weave it into compelling narratives or stories. This makes it relevant to your organisation, and members of your organisation are more likely to buy into it BI if they can see what actual impact it has to day-to-day working lives. Consider how you might make use of this kind of approach:</p>
<ul>
 <li>Hold Regular “Data Day” Events where different departments showcase how BI tools have transformed their work. This helps your team as, instead of looking at abstract theories, your team focus on real-world scenarios. 
  <ul>
   <li><strong>Share Success Stories </strong>that showcase tangible benefits. Highlight how BI has directly influenced revenue growth, cost savings, or operational efficiency. For example, perhaps a team or individual has who developed a predictive model to optimise supply chain logistics. Recognise their achievements and explain the tangible benefits to the organisation (e.g., saving $$$, reducing waste, reducing carbon).</li>
   <li><strong>Encourage lively discussions</strong> during these sessions, where attendees can ask questions, share their experiences, and discuss ideas for improvement.</li>
   <li><strong>It can just as easily be “Data &amp; Donut Hours” </strong>if your organisation is smaller or time pressures don’t allow for more time.</li>
   <li><strong>Keep it real. </strong>What will make this succeed is other people inside your organisation showing how simple things such as dashboards or reports have had a real and positive impact on how they work.</li>
  </ul></li>
 <li><strong>Create and share internal case studies </strong>highlighting specific challenges that your BI project solves. 
  <ul>
   <li><strong>Shout about what has been achieved.</strong> Remember that when working in Data and BI, the production of a “report” can seem like “just a report”. But most dashboards and reports – when designed well – save time, help customers, help your business and bottom line, and make your lives easier. Shout about this!</li>
   <li>Run an <strong>Awards Program</strong> that celebrates teams or individuals who use BI in novel ways. Acknowledge their contributions during company-wide meetings or through internal newsletters.</li>
  </ul></li>
</ul>
<p>Do you agree with the above? What is your experience?</p>
<p>In our next blog post, we'll discuss how to <strong>Craft a Comprehensive Delivery Plan</strong></p>
<p>&nbsp;</p>
<p>This Guest Blog has been written by our Community Member and Consultant&nbsp;Simon&nbsp;. For questions, please leave a comment below.</p>
<p><em><strong>Full Topic list</strong></em></p>
<p><em>&nbsp; &nbsp;<a href="/t/60y64g2" rel="nofollow noopener noreferrer">Empowering the Executive Sponsor</a><br> <strong>&nbsp; &nbsp;</strong><a href="/t/h7ymhqh" rel="nofollow noopener noreferrer">Fostering a Culture of Data Literacy</a><br> &nbsp; &nbsp;Make Data Relatable through Story Telling<br> &nbsp; &nbsp;Craft a Comprehensive Delivery Plan<br> &nbsp; &nbsp;Ensure you have a Communication Plan and Measure Your Success&nbsp;</em></p>]]></description>
          <pubDate>Tue, 11 Jun 2024 13:00:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/35ymqvv/make-data-relatable-through-story-telling</guid>
          <dc:creator>Simon Devine</dc:creator>
        </item>

      <item>
          <title>Fostering a Culture of Data Literacy</title>
          <link>https://community.pyramidanalytics.com/t/h7ymhqh/fostering-a-culture-of-data-literacy</link>
          <description><![CDATA[<h2>Guest Blog - Tip #2 (of 5) - Fostering a Culture of Data Literacy</h2>
<h3>Navigating Business Intelligence Adoption in Your Organisation</h3>
<p>Adopting Business Intelligence is more than the mere assortment of tools; it’s about nurturing an environment where data is esteemed and leveraged for decision-making. There are plenty of ways that this can be achieved, but here are some of the key ones:</p>
<ul>
 <li><strong>Organize workshops and training sessions.</strong> These help demystify BI technology and principles, making them accessible to all. Consider the following ideas: 
  <ul>
   <li><strong>Schedule regular, interactive workshops</strong> that cater to different expertise levels, from beginners to advanced users. Don’t just schedule “must attend events” either; create drop-in sessions for people who have a question or two, plus encourage users to book one-on-one private sessions if they have questions they don’t want to ask to a wider audience.</li>
   <li><strong>Use real-life scenarios</strong> to demonstrate the impact of BI on decision-making processes.</li>
   <li><strong>Provide hands-on experience</strong> with BI tools to build confidence and competence.</li>
  </ul></li>
 <li><strong>Create a Centre of Excellence or Community of Practice. </strong>To build a supportive network where individuals can share insights, challenges, and triumphs related to BI. Make this team effective by organising: 
  <ul>
   <li><strong>Workshops and Training Sessions</strong> to enhance BI skills across the organisation. These sessions can cover topics like using company-wide templates, data visualisation, report creation, and advanced analytics techniques, even internal design concepts.</li>
   <li><strong>Mentorship Programmes: </strong>Pair your experienced data analysts (either internally or from your BI partner) with less seasoned members of the organisation to help with knowledge transfer. Encourage mentorship relationships where insights flow freely, for example, where seasoned analysts guide junior team members through complex data modelling techniques, ensuring everyone benefits from collective expertise.</li>
  </ul></li>
</ul>
<p>Do you agree with the above? What is your experience?</p>
<p>In our next blog post, we'll discuss how to <strong>make Data Relatable through Story Telling</strong></p>
<p>&nbsp;</p>
<p>This Guest Blog has been written by our Community Member and Consultant&nbsp;Simon&nbsp;. For questions, please leave a comment below.</p>
<p><em><strong>Full Topic list</strong></em></p>
<p><em>&nbsp; &nbsp;<a href="/t/60y64g2" rel="nofollow noopener noreferrer">Empowering the Executive Sponsor</a><br> <strong>&nbsp; &nbsp;</strong>Fostering a Culture of Data Literacy<br> &nbsp; &nbsp;Make Data Relatable through Story Telling<br> &nbsp; &nbsp;Craft a Comprehensive Delivery Plan<br> &nbsp; &nbsp;Ensure you have a Communication Plan and Measure Your Success&nbsp;</em></p>]]></description>
          <pubDate>Tue, 28 May 2024 13:00:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h7ymhqh/fostering-a-culture-of-data-literacy</guid>
          <dc:creator>Simon Devine</dc:creator>
        </item>

      <item>
          <title>Empower the Executive Sponsor</title>
          <link>https://community.pyramidanalytics.com/t/60y64g2/empower-the-executive-sponsor</link>
          <description><![CDATA[<h2>Guest Blog - Tip #1 (of 5) - Empowering the Executive Sponsor</h2>
<h3>Navigating Business Intelligence Adoption in Your Organisation</h3>
<p>The journey towards successful BI implementation often starts at the top. Having an Executive Sponsor is not just&nbsp;beneficial, it's crucial. At a board level, this individual can champion your chosen application and drive its&nbsp;adoption across the organisation.</p>
<ul>
 <li><strong>Address your sponsor’s needs first. </strong>This might seem counter-intuitive and against the principle of adding&nbsp;value where it’s needed first. However, addressing the executive sponsor or board's requirements in the first&nbsp;instance earns their buy-in and turns them into champions for the cause. Their enthusiasm and support can&nbsp;trickle down, creating a ripple effect throughout the company.</li>
 <li><strong>Create an Executive Dashboard. </strong>If done successfully, the executive team will want and expect similar&nbsp;dashboards in their teams and departments. This serves a dual purpose: 
  <ul>
   <li>This will provide immediate value to the executive team by giving them insights into critical business metrics.</li>
   <li>It’ll serve as a powerful demonstration of the potential impact of BI across the organisation.</li>
  </ul></li>
 <li><strong>Don’t Forget the big picture. </strong>The sponsors need to be reminded of the big picture so that the project&nbsp;delivers on their specific wants and needs and to see beyond their own report, dashboard, or department – looking at the project as a whole. This will help drive adoption in a wider sense than just one team.</li>
</ul>
<p>Do you agree with the above? What is your experience?</p>
<p>In our next blog post, we'll discuss the importance of&nbsp;<strong>Fostering a Culture of Data Literacy</strong>.&nbsp;</p>
<p>&nbsp;</p>
<p>This Guest Blog has been written by our Community Member and Consultant&nbsp;<button class="mention focus-save" data-href="/profile/g9hlvnz" type="button">Simon</button>&nbsp;. For questions, please leave a comment below.</p>
<p><em><strong>Full Topic list</strong></em></p>
<p><em>&nbsp; &nbsp;Empowering the Executive Sponsor<br> <strong>&nbsp; &nbsp;</strong>Fostering a Culture of Data Literacy<br> &nbsp; &nbsp;Make Data Relatable through Story Telling<br> &nbsp; &nbsp;Craft a Comprehensive Delivery Plan<br> &nbsp; &nbsp;Ensure you have a Communication Plan and Measure Your Success&nbsp;</em></p>]]></description>
          <pubDate>Sun, 12 May 2024 20:36:10 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/60y64g2/empower-the-executive-sponsor</guid>
          <dc:creator>Simon Devine</dc:creator>
        </item>

      <item>
          <title>Learning Hub Use Case: Predictive Modeling</title>
          <link>https://community.pyramidanalytics.com/t/h7y60sj/learning-hub-use-case-predictive-modeling</link>
          <description><![CDATA[<h2><strong>Dive Deeper into Pyramid Use Cases with the Learning Hub</strong></h2>
<p style="text-align:start">Did you know that the Pyramid Learning Hub not only offers all the functional courses to get you certified in Pyramid, but we also offer a growing variety of Use Cases that show you how to build a sample Report from scratch. They combine the necessary know how across all Modules that you need to complete the task.</p>
<h3 style="text-align: start;">Use Case: Predictive Modeling</h3>
<p style="text-align:start">In about two hour we guide you through the predictive modeling functions of Pyramid.&nbsp;So what is the task?</p>
<h4>The background</h4>
<p>For this Use Case, let’s imagine you are a data analyst/scientist working for a sports car manufacturer. A brand new sports car has recently been manufactured and the General Manager of Sales has assigned you a task.</p>
<p>You will utilize Pyramid and its Decision Intelligence capabilities to predict which of your previous customers will buy this brand-new model.</p>
<p><strong>The challenge</strong></p>
<p style="text-align:start">The main objective of this tutorial will be to predict a category, a binary variable 'Yes / No' to answer the question 'will customer x buy this new car?'&nbsp;</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/3d72fc18-372b-48f6-b42b-2668579e3860/h/547.png" style="" width="1096"></p>
<p style="text-align:start">&nbsp;This training is based on Pyramid 2020.17. You can find the corresponding Data Models for your training in the&nbsp;<a href="/t/60h0b4f/pyramid-explore-server-how-to-sign-up-and-participate" rel="nofollow noopener noreferrer">Explore Pyramid Environment</a></p>
<h3 style="text-align: start;">What you<strong>&nbsp;will learn in this Use Case:</strong></h3>
<ul>
 <li>To build, train and test a Logistic Regression model.</li>
 <li>To build a Confusion Matrix.</li>
 <li>To analyse the Confusion Matrix results to calculate the predictive accuracy of your model.</li>
</ul>
<h3>To sign up for this Use Case go to the Learning Hub (LMS Subscription required)</h3>
<p><a href="https://learn.pyramidanalytics.com/courses/predictive-modeling-logistic-regression/" rel="nofollow noopener noreferrer" target="_blank">https://learn.pyramidanalytics.com/courses/predictive-modeling-logistic-regression/</a></p>
<p>If you have questions about the Learning Hub or suggestions for this Use Case, reach out to me:&nbsp;<button class="mention focus-save" data-href="/profile/y74x2w" type="button">Rory</button></p>]]></description>
          <pubDate>Thu, 09 May 2024 07:05:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h7y60sj/learning-hub-use-case-predictive-modeling</guid>
          <dc:creator>Rory</dc:creator>
        </item>

      <item>
          <title>Learning Hub Use Case: Finance Business Analyst</title>
          <link>https://community.pyramidanalytics.com/t/60yx0tf/learning-hub-use-case-finance-business-analyst</link>
          <description><![CDATA[<h2><strong>Dive Deeper into Pyramid Use Cases with the Learning Hub</strong></h2>
<p style="text-align:start">Did you know that the Pyramid Learning Hub not only offers all the functional courses to get you certified in Pyramid, but we also offer a growing variety of Use Cases that show you how to build a sample Report from scratch. They combine the necessary know how across all Modules that you need to complete the task.</p>
<h3 style="text-align: start;">Use Case: Finance Business Analyst:</h3>
<p style="text-align:start">In less than one hour we guide you how to build a Sales Forecast.&nbsp;So what is the task?</p>
<h4>The background</h4>
<p>As a finance analyst it is critical to be able to generate reliable forecasts of sales for different segments of the business to guide decision making. &nbsp;These forecasts must be kept up to date on a daily basis, as new data becomes available it needs to provide guidance for each segment of the business.</p>
<p><strong>The challenge</strong></p>
<p>Generating daily updated forecasts that can be customized to different user needs is a time-consuming process that can introduce errors and inconsistency leading to sub-optimal decision making.</p>
<p><strong>The solution</strong></p>
<p>In this course, we will show you how to create a dynamic report that will let users generate and visualize sales forecasts for various regional and promotional views of all sales. Just Click on the Picture to jump to the course.</p>
<p style="text-align:left"><a href="https://learn.pyramidanalytics.com/courses/finance-business-analyst" rel="nofollow noopener noreferrer" target="_blank"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/6ceb2681-133b-4491-80da-105a44624616/h/547.png" style="" width="2558"></a></p>
<p style="text-align:start">&nbsp;</p>
<p style="text-align:start">This training is based on Pyramid 2020.17. You can find the corresponding Data Models for your training in the&nbsp;<a href="/t/60h0b4f/pyramid-explore-server-how-to-sign-up-and-participate" rel="nofollow noopener noreferrer">Explore Pyramid Environment</a></p>
<h3 style="text-align: start;">What you<strong>&nbsp;will learn in this Use Case:</strong></h3>
<ul>
 <li>how to create a line chart in Discover utilising a dynamic list</li>
 <li>adding forecasts to charts and how to extend the date range</li>
 <li>comparing forecast sales with actual sales</li>
 <li>how to use region filters with group options</li>
</ul>
<h3>To sign up for this Use Case go to the Learning Hub (LMS Subscription required)</h3>
<p><a href="https://learn.pyramidanalytics.com/courses/retail-business-analyst/" rel="nofollow noopener noreferrer" target="_blank">https://learn.pyramidanalytics.com/courses/finance-business-analyst/</a></p>
<p>If you have questions about the Learning Hub or suggestions for this Use Case, reach out to me:&nbsp;<button class="mention focus-save" data-href="/profile/y74x2w" type="button">Rory</button></p>]]></description>
          <pubDate>Fri, 12 Apr 2024 16:12:38 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/60yx0tf/learning-hub-use-case-finance-business-analyst</guid>
          <dc:creator>Rory</dc:creator>
        </item>

      <item>
          <title>Blog: Superbowl 2024 - Interactive Football Dashboard</title>
          <link>https://community.pyramidanalytics.com/t/35yxgb6/blog-superbowl-2024-interactive-football-dashboard</link>
          <description><![CDATA[<p>At Pyramid we breathe and sleep data, and for some of the team, they breathe and sleep data&nbsp;and&nbsp;football. So, in honor of the upcoming Super Bowl, we put some football dashboards together. Look at some fun facts around the Super Bowl in dashboard 1, and see key Post Season stats for the Chiefs vs. 49ers in dashboard 2.&nbsp;&nbsp;</p>
<p><strong>Read more on our Main Webpage: <a href="https://www.pyramidanalytics.com/blog/super-bowl-dashboard/" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/blog/super-bowl-dashboard/</a></strong></p>
<p>You will be able to directly interact with the data on the page as they have been embedded Live. Ask the chat bot to tell you more about any details. Play with the Data and leave a screenshot of your findings in the comments below!</p>
<p><strong>BUT as we are the community,</strong> there is more ;-) if you are a Member and Part of the Explore Pyramid Crew. You can access the Environment and see how it was done. The Dashboards are part of the Challenge Folders. We even include the Datasets so you can build your own Super Bowl Dashboard.</p>
<p style="text-align:left"><a href="https://explore.pyramidanalytics.com/direct?id=b0450a45-2d33-4e32-ae85-e5c9e2fe76d1" rel="nofollow noopener noreferrer" target="_blank"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/c3068dd8-c51f-4c3c-9634-0b5d5eb669a0/h/547.png" style="" width="806"></a></p>
<p>&nbsp;</p>
<p style="text-align:left"><a href="https://explore.pyramidanalytics.com/direct?id=7d93df19-707a-44a0-a7c9-c41d6d75b518" rel="nofollow noopener noreferrer" target="_blank"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/1169e76c-8693-4e79-bfff-db15fea013fc/h/547.png" style="" width="1098"></a></p>
<p>&nbsp;P.S. Will Taylor Swift make it in time? Leave your guesses below ;-)</p>]]></description>
          <pubDate>Thu, 08 Feb 2024 15:48:38 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/35yxgb6/blog-superbowl-2024-interactive-football-dashboard</guid>
          <dc:creator>Christian Langmayr</dc:creator>
        </item>

      <item>
          <title>Learning Hub Use Case: Retail Business Analyst</title>
          <link>https://community.pyramidanalytics.com/t/35yh58a/learning-hub-use-case-retail-business-analyst</link>
          <description><![CDATA[<h2><strong>Dive Deeper into Pyramid Use Cases with the Learning Hub</strong></h2>
<p style="text-align:start">Did you know that the Pyramid Learning Hub not only offers all the functional courses to get you certified in Pyramid, but we also offer a growing variety of Use Cases that show you how to build a sample Report from scratch. They combine the necessary know how across all Modules that you need to complete the task.</p>
<h3 style="text-align: start;">Use Case: Retail Business Analyst:</h3>
<p style="text-align:start">In less than one hour we guide you how to build a Sales and Product Report in Pyramid. So what is the task?</p>
<p style="text-align:start">As a business analyst in the retail sector, do you want to know what products/brands contribute the majority of your sales by region or operation?</p>
<p style="text-align:start">This course we will show you how to create a Discover report that can display this breakdown of sales contributions.</p>
<p style="text-align:center"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/e83bd00f-5447-4cf8-b010-17de8d5584aa/h/547.png" style="" width="661"></p>
<p style="text-align:start">&nbsp;</p>
<p style="text-align:start">This training is based on Pyramid 2020. You can find the corresponding Data Models for your training in the</p>
<p style="text-align:start"><a href="/t/60h0b4f/pyramid-explore-server-how-to-sign-up-and-participate" rel="nofollow noopener noreferrer">Explore Pyramid Environment</a></p>
<h3 style="text-align: start;">What you<strong>&nbsp;will learn in this Use Case:</strong></h3>
<ul>
 <li>how to create a basic sales report in Discover (sales by product)</li>
 <li>adding date and group filters with a pareto context calculation</li>
 <li>how to create a combo chart incorporating the pareto calculation</li>
 <li>to duplicate the report and to then add a trellis chart to the duplication</li>
</ul>
<h3>To sign up for this Use Case go to the Learning Hub (LMS Subscription required)</h3>
<p><a href="https://learn.pyramidanalytics.com/courses/retail-business-analyst/" rel="nofollow noopener noreferrer" target="_blank">https://learn.pyramidanalytics.com/courses/retail-business-analyst/</a></p>
<p>If you have questions about the Learning Hub or suggestions for this Use Case, reach out to me:&nbsp;<button class="mention focus-save" data-href="/profile/y74x2w" type="button">Rory</button></p>]]></description>
          <pubDate>Wed, 07 Feb 2024 09:06:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/35yh58a/learning-hub-use-case-retail-business-analyst</guid>
          <dc:creator>Rory</dc:creator>
        </item>

      <item>
          <title>Blog: The Data Shark Podcast - Omri Kohl</title>
          <link>https://community.pyramidanalytics.com/t/83y33am/blog-the-data-shark-podcast-omri-kohl</link>
          <description><![CDATA[<p><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/9d9bc270-793b-4ae0-b485-8a1ab7f8c6a1/h/547.png" style="float:left" width="378"></p>
<h2>&nbsp;The Data Shark Podcast by Omri Kohl</h2>
<p>&nbsp;</p>
<p>Tune in and subscribe to the new Podcast by our co-founder and CEO Omri Kohl.</p>
<p>The BI space can be super-challenging to comprehend at first.</p>
<p>This is exactly why Omri Kohl, our CEO and co-founder, decided to launch his very first podcast!</p>
<p>His talk covers the latest industry trends, common mistakes, and his own entrepreneurial journey.</p>
<p>Even if your role has nothing to do with analytics, learning this subject could help you set the right KPIs and understand how to measure them.</p>
<p>&nbsp;</p>
<p>Interested to see what Omri has to say? Listen, download and subscribe today:</p>
<ul>
 <li>Apple podcasts:&nbsp;<a href="https://podcasts.apple.com/il/podcast/the-data-shark-podcast/id1720742534" rel="nofollow noopener noreferrer" target="_blank">https://podcasts.apple.com/il/podcast/the-data-shark-podcast/id1720742534</a></li>
 <li>Spotify:&nbsp;<a href="https://open.spotify.com/show/5ezq8GVTCE3xQDlc3qiKiJ" rel="nofollow noopener noreferrer" target="_blank">https://open.spotify.com/show/5ezq8GVTCE3xQDlc3qiKiJ</a></li>
 <li>Youtube:&nbsp;<a href="https://www.youtube.com/@TheDataShark" rel="nofollow noopener noreferrer" target="_blank">https://www.youtube.com/@TheDataShark</a></li>
</ul>
<p>Make sure you hit the subscribe button because there is a lot more to come in the next few weeks.</p>
<h3>Episode List</h3>
<h4><strong>Episode 9</strong></h4>
<p><a href="https://podcasts.apple.com/il/podcast/how-will-ai-revolutionize-our-decision-making-process/id1720742534" rel="nofollow noopener noreferrer" target="_blank">On Apple: My Investor came to the show! - Natalie Refuah</a></p>
<p><a href="https://open.spotify.com/episode/6ZtKs92FmwKcqcQQC3WSkk" rel="nofollow noopener noreferrer" target="_blank">On Spotify: My Investor came to the show! Natalie Refuah</a></p>
<p><a href="https://www.youtube.com/watch?v=X5jpbPHkyKw&amp;t=25s" rel="nofollow noopener noreferrer" target="_blank">On Youtube: My Investor came to the show! - Natalie Refuah</a></p>
<h4><strong>Episode 8</strong></h4>
<p><a href="https://podcasts.apple.com/il/podcast/how-will-ai-revolutionize-our-decision-making-process/id1720742534" rel="nofollow noopener noreferrer" target="_blank">On Apple: How will AI Revolutionize Our Decision-Making Process? - Avi Perez</a></p>
<p><a href="https://open.spotify.com/episode/6ZtKs92FmwKcqcQQC3WSkk" rel="nofollow noopener noreferrer" target="_blank">On Spotify: How will AI Revolutionize Our Decision-Making Process? - Avi Perez</a></p>
<p><a href="https://www.youtube.com/watch?v=C9KWvCgnFDM" rel="nofollow noopener noreferrer" target="_blank">On Youtube: How will AI Revolutionize Our Decision-Making Process? - Avi Perez</a></p>
<p>&nbsp;</p>
<h4>Episode 7</h4>
<p><a href="https://podcasts.apple.com/il/podcast/building-a-sales-engine-with-analytics-7-episode/id1720742534?i=1000642606106" rel="nofollow noopener noreferrer" target="_blank">On Apple: Building a Sales Engine with Analytics - Brian McCormac</a></p>
<p><a href="https://open.spotify.com/episode/10Zikyl30hEF8VnREj08jb" rel="nofollow noopener noreferrer" target="_blank">On Spotify: Building a Sales Engine with Analytics- Brian McCormac</a></p>
<p><a href="https://www.youtube.com/watch?v=ai6E3DMPIBM&amp;t=2s" rel="nofollow noopener noreferrer" target="_blank">On Youtube: Building a Sales Engine with Analytics- Brian McCormac</a></p>
<h4>Episode 6</h4>
<p><a href="https://podcasts.apple.com/il/podcast/what-made-bi-mission-critical-6-episode-miki-lumnitz-cio-iai/id1720742534" rel="nofollow noopener noreferrer" target="_blank">On Apple:&nbsp;What Made BI Mission Critical? - Miki Lumnitz</a></p>
<p><a href="https://open.spotify.com/episode/5Km1gSbEGvCNgCfqfZepxA" rel="nofollow noopener noreferrer" target="_blank">On Spotify:&nbsp;What Made BI Mission Critical? - Miki Lumnitz</a></p>
<p><a href="https://www.youtube.com/watch?v=a8d7Kao_bJE" rel="nofollow noopener noreferrer" target="_blank">On Youtube:&nbsp;What Made BI Mission Critical? - Miki Lumnitz</a></p>
<h4>Episode 5</h4>
<p><a href="https://podcasts.apple.com/il/podcast/the-investor-perspective-5-episode-yoav-tzruya/id1720742534" rel="nofollow noopener noreferrer" target="_blank">On Apple: The investor perspective -&nbsp;Yoav Tzruya</a></p>
<p><a href="https://open.spotify.com/episode/5SKzeqNkKYgcY7MNgfCxWm" rel="nofollow noopener noreferrer" target="_blank">On Spotify: The investor perspective -&nbsp;Yoav Tzruya</a></p>
<p><a href="https://www.youtube.com/watch?v=Qzt8pEHKex8&amp;t=738s" rel="nofollow noopener noreferrer" target="_blank">On Youtube: The investor perspective -&nbsp;Yoav Tzruya</a></p>
<h4>Episode 4</h4>
<p><a href="https://podcasts.apple.com/il/podcast/building-a-winning-team-4th-episode-roi-barak/id1720742534?i=1000640337537" rel="nofollow noopener noreferrer" target="_blank">On Apple: Building a winning Team - Roi Barak</a></p>
<p><a href="https://open.spotify.com/show/5ezq8GVTCE3xQDlc3qiKiJ" rel="nofollow noopener noreferrer" target="_blank">On Spotify: Building a winning Team - Roi Barak</a></p>
<p><a href="https://www.youtube.com/watch?v=gkk2Us5-yqg&amp;t=104s" rel="nofollow noopener noreferrer" target="_blank">On Youtube: Building a winning Team - Roi Barak</a></p>
<h4>Episode 3</h4>
<p><a href="https://podcasts.apple.com/il/podcast/changing-the-game-3-episode-avi-perez/id1720742534?i=1000639707238" rel="nofollow noopener noreferrer" target="_blank">On Apple: Changing the Game - Avi Perez</a></p>
<p><a href="https://open.spotify.com/episode/06dZxY0lQiirZAWJvRa77H" rel="nofollow noopener noreferrer" target="_blank">On Spotify: Changing the Game - Avi Perez</a></p>
<p><a href="https://www.youtube.com/watch?v=hN35KcPJ434&amp;t=4s" rel="nofollow noopener noreferrer" target="_blank">On Youtube: Changing the Game - Avi Perez</a></p>
<h4>Episode 2</h4>
<p><a href="https://podcasts.apple.com/il/podcast/the-roi-of-bi-2-episode/id1720742534?i=1000638919778" rel="nofollow noopener noreferrer" target="_blank">On Apple: The ROI of BI Projects</a></p>
<p><a href="https://open.spotify.com/episode/3IcahGydjLLvOV8RAN2yQz" rel="nofollow noopener noreferrer" target="_blank">On Spotify: The ROI of BI Projects</a>&nbsp;</p>
<p><a href="https://www.youtube.com/watch?v=Xy1WxsnnQTE" rel="nofollow noopener noreferrer" target="_blank">On Youtube: The ROI of BI Projects</a></p>
<p>&nbsp;</p>
<h4>Episode 1</h4>
<p><a href="https://open.spotify.com/episode/4PC4unrTq1E1urR3wAAeLx" rel="nofollow noopener noreferrer" target="_blank">On Apple: Building a Data Driven Culture</a></p>
<p><a href="https://open.spotify.com/episode/4PC4unrTq1E1urR3wAAeLx" rel="nofollow noopener noreferrer" target="_blank">On Spotify: Building a Data Driven Culture</a>&nbsp;</p>
<p><a href="https://www.youtube.com/watch?v=nn1aaCCN4A4&amp;t=338s" rel="nofollow noopener noreferrer" target="_blank">On Youtube: Building a Data Driven Culture</a></p>
<p>&nbsp;</p>
<p>Leave us a review in Apple, Spotify and Youtube and a comment below.</p>]]></description>
          <pubDate>Tue, 12 Dec 2023 17:13:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/83y33am/blog-the-data-shark-podcast-omri-kohl</guid>
          <dc:creator>Christian Langmayr</dc:creator>
        </item>

      <item>
          <title>Pyramid 2023.10: Issues Addressed</title>
          <link>https://community.pyramidanalytics.com/t/35yyvba/pyramid-2023-10-issues-addressed</link>
          <description><![CDATA[<p>The following list enumerates all the main bug fixes in the&nbsp;<strong><a href="/t/q6yy0fz/pyramid-2023-10-released" rel="nofollow noopener noreferrer">Pyramid 2023.10 version</a>.&nbsp;</strong></p>
<p><a href="/t/83yyvwg/pyramid-2023-10-your-product-ideas-delivered" rel="nofollow noopener noreferrer">Click here</a>&nbsp;to see the listing of all new features added to 2023.10.</p>
<h2 class="toc__permalink"><span class="pen4"><a href="/t/60h4jrg/pyramid-2023-issues-addressed#fixes-in-pyramid-2023" rel="nofollow noopener noreferrer"><strong>Fixes in Pyramid 2023</strong></a>.10</span></h2>
<h3>Model</h3>
<ul>
 <li>Fixed an issue where using BigQuery as a destination was not possible when set to utilize a service account</li>
 <li>Fixed an issue where a calculated column incorrectly returned a Null value</li>
 <li>Fixed an issue where an Azure Databricks source did not show the list of databases</li>
 <li>Fixed an issue where the properties panel for Multi Files sources failed to refresh upon navigating through various Multi Files sources</li>
 <li>Fixed an issue where users couldn't change the column data types for Multi Files source</li>
 <li>Fixed an issue where users could not edit Calculated Columns in a model</li>
 <li>Fixed an issue where running a query in the Master Flow returned a “No authorization for performing operation” error</li>
 <li>Fixed an issue where the "Time to keep model processing logs" setting in a schedule was set by default to Always instead of System Default</li>
 <li>Fixed an issue where changing the data source on a direct model resulted in the removal of tables from the model</li>
 <li>Fixed an issue setting a Variable value to Null</li>
 <li>Improved multi-measure unique naming logic</li>
 <li>Fixed snapshot isolation errors when using a for loop to connect to an API in model</li>
 <li>Fixed an issue where the initial column in a table displayed with quotation marks when utilizing a CSV source</li>
 <li>Fixed an issue where a variable could not be validated without validating the entire flow</li>
 <li>Fixed an issue where a column data type was erroneously set to Date instead of DateTime</li>
 <li>Fixed an issue wherein milliseconds were inadvertently omitted when saving a DateTime column to a model destination</li>
 <li>Fixed an issue where strings were truncated to 80 length when creating a model using a ClickHouse source to an IMDB target</li>
 <li>Fixed an issue where Snowflake Date Values were showing one day before the actual date</li>
</ul>
<h3>Discover</h3>
<h4><em><strong>&nbsp; &nbsp; Queries</strong></em></h4>
<ul>
 <li>Fixed an issue where a Discovery that was using a PCH did not retrieve data as expected</li>
 <li>Fixed an issue where a report that was opened from an action was filtered incorrectly</li>
 <li>Fixed an issue where Auto Discover did not work for an IMDB or MSSQL models with Time Intelligence</li>
 <li>Fixed an issue where a "The PQL function 'EXIST' is not supported" error message appeared after using cascading filters</li>
 <li>Fixed a cascading slicer time-out issue</li>
 <li>Fixed an issue where using Focus on a member in a grid returned no results</li>
 <li>Fixed an issue where an error message appeared when using an aggregated table in a report</li>
 <li>Fixed an issue where custom ordering calculations with parameters no longer allowed parameters to impact the results</li>
 <li>Fixed an issue where the YTD function in a Date Calendar filter did not return the current date</li>
 <li>Fixed an issue where a Last Child measure returned no results</li>
 <li>Fixed an issue where the Row Limit that was configured in the report did not apply as expected</li>
 <li>Fixed an issue that could lead to an inconsistent result limit between the initial run of the report and subsequent runs</li>
 <li>Fixed an issue where Multiple infraEntryPoint were generated when hovering over a member</li>
</ul>
<h4><em><strong>&nbsp; &nbsp; Visuals</strong></em></h4>
<ul>
 <li>Fixed an issue saving small decimal values in the Conditional formatting band fields</li>
 <li>Fixed an issue where adding certain dimensions and measures to a report resulted in a blank screen</li>
 <li>Fixed an issue where eliminating a specific data point resulted in the removal of more than the selected item</li>
 <li>Fixed an issue where Sort from Analyze Further had failed</li>
 <li>Fixed an issue where Conditional Formatting Data bars did not appear for negative values when using the % Of Max algorithm</li>
 <li>Fixed incorrect order of values in the Legend when using the Hebrew UI language</li>
 <li>Fixed an issue where the context menu did not appear after right-clicking a grid cell with a basic user in embedded content</li>
 <li>Fixed an issue where long member names in Hebrew were cut off from the right instead of from the left</li>
 <li>Fixed an issue where text in a grid was wrapped although Wrap Text was off</li>
 <li>Fixed an issue where a blank screen appeared after right-clicking a row header in a grid</li>
 <li>Fixed an issue where labels were cut off in a Tornado chart</li>
 <li>Fixed an issue where collapsing an item in a grid did not work as expected when the query was using a parameter</li>
 <li>Fixed an issue where the Chart Total Labels ignored the culture settings of the underlying data source</li>
 <li>Implemented a new "Auto Fit Labels" formatting setting to offer improved customization options</li>
</ul>
<h3>Present</h3>
<ul>
 <li>Fixed an issue where clicking the Reset button did not remove the filter selection from a visual</li>
 <li>Fixed an issue where swapping an attribute with a hierarchy in a Present resulted in an error</li>
 <li>Fixed an issue where the context menu did not appear after right-clicking a grid when in full-screen mode</li>
 <li>Fixed an issue where an Illustration Tooltip that is based on a dynamic text, didn't update when the underlying discovery was filtered</li>
 <li>Fixed an issue where a filter kept working after the column it was based on was unselected in the model</li>
 <li>Fixed an issue where the Reset button in runtime did not refresh the data as expected</li>
 <li>Fixed an issue where an Illustration, based on a measure with applied Overlay, was not properly filtered in a Present</li>
 <li>Fixed a presentation-related issue leading to out-of-memory errors in the InMemory server</li>
 <li>Fixed an issue where users couldn't edit bookmarks if the content was accessed via a URL link</li>
 <li>Fixed an issue where clicking on a bubble map did not update the visuals when interaction was set</li>
 <li>Fixed an issue where selecting "All" in a cascading filter caused a query to fail</li>
 <li>Improved legend scaling</li>
 <li>Optimized loading time of presentations</li>
 <li>Fixed a situation where visuals within a slide were incorrectly filtered when the filters on the slide were disabled</li>
 <li>Fixed an issue where Pre Query Filters did not refresh the visual</li>
 <li>Fixed an issue where a "Not enough information" message appeared in a mini tab after manually switching mini tabs</li>
 <li>Fixed an issue where interactions appeared to be pointing to incorrect slicers when scrolling</li>
</ul>
<h3>Tabulate</h3>
<ul>
 <li>Fixed an issue where the browser tab froze after adding a Visual Area</li>
 <li>Fixed an issue where the browser froze after adding a new formula in a new sheet of an imported Excel</li>
 <li>Fixed a filter-related issue that was causing a failure in loading a Tabulate</li>
 <li>Fixed an issue where SLICERCAPTION in a tabulation showed an incorrect value in a present</li>
 <li>Fixed a save issue when a cell referenced a pyramid formula</li>
</ul>
<h3>Publish/Subscriptions</h3>
<ul>
 <li>Fixed an issue where a report with a dynamic date filter did not update as expected</li>
 <li>Fixed an issue where scheduled publications did not run intermittently</li>
 <li>Fixed an issue where publications and subscriptions didn't run after upgrading to 2023.01 until they were resaved</li>
 <li>Fixed an issue where a Schedule did not have the Add Link-back option under Output settings</li>
</ul>
<h3>Formulate</h3>
<ul>
 <li>Fixed an issue when using a BW source where a list that used a global parameter in a Contains filter had failed</li>
 <li>Fixed an issue where formulations with member/parameter caption in the Dynamic Caption field had failed to run</li>
 <li>Fixed an issue where a formula didn't return the caption of a hierarchy current member</li>
 <li>Fixed an issue where the templates for the StrToMember() and StrToSet() functions in formulations based on OLAP cubes were incorrect</li>
 <li>Fixed an issue where CurrentMember() and other offset functions have failed for a Custom Column</li>
 <li>Improved performance of some formulations that use constant functions</li>
 <li>Fixed the issue with Number Formats templates displaying a single quote instead of double quotes when using an SQL data source</li>
 <li>Fixed an issue where a comment in script mode caused the formulation to fail</li>
</ul>
<h3>Illustrate</h3>
<ul>
 <li>Fixed an issue where a duplicated illustration did not run</li>
</ul>
<h3>Content Management</h3>
<ul>
 <li>Fixed an issue where items could not be deleted or purged</li>
 <li>Fixed an issue where using Cut and then Replace on a different folder,&nbsp; did not remove the content from the source folder</li>
 <li>Fixed an issue where a blank screen occurred after opening a discovery from Favorites</li>
 <li>Fixed an issue where the contents of workgroup folders were not visible to viewers</li>
 <li>Fixed an issue where replacing a model definition that was owned by a different user had failed</li>
 <li>Fixed an issue where content that was moved/copied did not get the correct roles</li>
 <li>Fixed an issue where exporting a discovery caused an RTE crash</li>
 <li>Fixed an issue where replacing a Model timed out and failed</li>
 <li>Improved layout of the "Delete Contentions on Shared Item" panel</li>
 <li>Fixed an issue where a Viewer user was able to access a folder but could not access its child folders</li>
 <li>Fixed an issue where folders appeared in a reversed alphabetical order</li>
</ul>
<h3>Printing/Export</h3>
<ul>
 <li>Fixed an issue where printing a Present with a measure parameter had failed</li>
 <li>Fixed a blank page issue when printing a present or publication that contained a tabulate</li>
 <li>Fixed an issue where legend colors were incorrect on a printed publication</li>
 <li>Fixed an issue where a measure list didn't print to CSV/EXCEL when in raw/tabular grid</li>
 <li>Fixed an issue where a Matrix Grid with a large number of visuals did not print correctly in Present</li>
 <li>Fixed an issue where a measure that is formatted as Currency did not show the currency symbol when printing to Excel</li>
 <li>Fixed an issue where exporting a discovery consisting solely of measures to Excel resulted in a format that was not compatible with pandas in Python</li>
 <li>Fixed an issue where a large grid that was exported to a PDF was not properly formatted</li>
 <li>Fixed an issue where, if the caption of a measure was modified, printing from embed displayed the original caption instead of the updated one</li>
 <li>Fixed an issue where a visual appeared blank in a PDF print of a publication</li>
 <li>Fixed an issue where a printable slicer that had all items selected showed a blank selection in the print</li>
</ul>
<h3>Admin</h3>
<ul>
 <li>Fixed an issue where Azure Blob Storage data sources did not appear in the Source Manager</li>
 <li>Fixed a geojson parsing issue which was causing custom maps imports to fail</li>
 <li>Fixed an issue where the Test button in the Add Data Source panel consistently displayed a Success message when utilizing "Service Account" as the Authentication Method</li>
 <li>Fixed an issue where SSH data sources did not show up in the Source Manager</li>
 <li>Added support for installation of optional features of a Python package</li>
 <li>Fixed an issue where the System Schedule failed to open</li>
 <li>Fixed an issue where the Task Manager did not show error messages</li>
 <li>Fixed an issue connecting to S3 storage</li>
 <li>Fixed an issue where a server statistics retrieval problem triggered an error message popup in the admin console</li>
 <li>Fixed an issue where a new conversation template lacked a functional link for the collaboration</li>
 <li>Fixed an issue where Security tables were not visible in the 'Member Security' tab under Source Manager within Model Settings</li>
 <li>Fixed an issue where the Server Instances screen was cut off in some resolutions</li>
 <li>Fixed an issue where the "Remove" button erroneously appeared when selecting an unrecognized database in the Databases tab under Data &gt; Source Manager</li>
 <li>Fixed an issue where Additional Parameters were not sent properly on Snowflake connection</li>
 <li>Fixed an issue where additional parameters were ignored for AWS Athena connections</li>
 <li>Fixed an issue where Weka files didn't get deleted automatically</li>
 <li>Fixed an issue where connecting to an OLAP cube failed due to a Folder Overlay problem</li>
</ul>
<h3>Security</h3>
<ul>
 <li>Updates to various 3rd party libraries for vulnerabilities</li>
</ul>
<h3>API</h3>
<ul>
 <li>Fixed an issue where /API2/content/getFolderItems did not bring back deleted items</li>
</ul>
<h3>Mobile</h3>
<ul>
 <li>Fixed an error when using a Jump action on the iPad</li>
</ul>
<h3>Install/upgrade</h3>
<ul>
 <li>Fixed an issue which was causing the upgrade from 2020 to 2023.01 to fail</li>
 <li>Fixed an issue where adding services on upgrade, the added services did not start</li>
 <li>When deploying Kubernetes, the metrics server is now only accessible internally</li>
 <li>Fixed an issue where Python and R did not install on the AI server if other services were already installed</li>
</ul>
<h3>Login</h3>
<ul>
 <li>Improved login performance</li>
 <li>Fixed an issue that was causing the login process to fail</li>
</ul>
<h3>Other</h3>
<ul>
 <li>Online help updated</li>
 <li>Fixed an issue where the IMDB stopped running at on a daily basis at midnight UTC</li>
 <li>Fixed an issue that was causing the client browser to crash after working in Pyramid for a while</li>
 <li>Fixed an issue that was causing PROM errors to appear in the system logs&nbsp;</li>
</ul>]]></description>
          <pubDate>Thu, 07 Dec 2023 16:10:20 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/35yyvba/pyramid-2023-10-issues-addressed</guid>
          <dc:creator>Itamar Birenzweig</dc:creator>
        </item>

      <item>
          <title>Upgrading a Pyramid Oracle repository</title>
          <link>https://community.pyramidanalytics.com/t/83y3qdw/upgrading-a-pyramid-oracle-repository</link>
          <description><![CDATA[<p><span class="pen1">This article only applies to older installations of Pyramid (<strong>prior to version 2020.28</strong>) that <u>use an Oracle Repository database</u><strong><u>&nbsp;</u></strong>or those that have been upgraded <strong>subsequently from a pre-2020.28 version </strong><u>with an Oracle repository</u><strong>.&nbsp;</strong></span></p>
<p>If you have an instance of&nbsp;Pyramid that was initially installed as version 2020.28 or later (including 2023), or that uses an MS SQL Server or PostgreSQL repository, you can <strong><u>ignore this exercise</u></strong>.</p>
<p>Before upgrading to Pyramid 2023.10 it is important to first run the below command as an Oracle admin user on the Pyramid Oracle repository database.&nbsp;<span>This is a one time adjustment to the Oracle repository database.</span></p>
<pre class="language-none"><code class="language-none">GRANT&nbsp;CREATE&nbsp;VIEW&nbsp;TO&nbsp;&lt;PyramidReproName&gt;;</code></pre>
<p>Replace "&lt;PyramidReproName&gt;" with the name of your Pyramid repository database.</p>
<p>Once the above has been done, confirm that the user now has rights to create views. After which the&nbsp;<span>upgrade to Pyramid 2023.10 can be performed.</span></p>]]></description>
          <pubDate>Thu, 07 Dec 2023 16:10:16 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/83y3qdw/upgrading-a-pyramid-oracle-repository</guid>
          <dc:creator>Daniel</dc:creator>
        </item>

      <item>
          <title>Pyramid 2023.10: Your Product Ideas Delivered</title>
          <link>https://community.pyramidanalytics.com/t/83yyvwg/pyramid-2023-10-your-product-ideas-delivered</link>
          <description><![CDATA[<p style="text-align:start">The following list enumerates all the new features implemented in <a href="/t/q6yy0fz/pyramid-2023-10-released" rel="nofollow noopener noreferrer">Pyramid 2023.10</a>. Over <strong>80%</strong> are built off the product ideas on this forum or suggestions made by customers.</p>
<p style="text-align:start"><a href="/t/35yyvba/pyramid-2023-10-issues-addressed" rel="nofollow noopener noreferrer">Click here</a> to see the issues fixed in 2023.10.&nbsp;</p>
<h3>Discover</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Visual Tool-tips</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Extended%20Functionality/Actions/TooltipActions.htm?Highlight=tooltip%20actions" rel="nofollow noopener noreferrer" target="_blank">Help</a></p> <p><span class="pen2">▶</span> <span class="pen2"><a href="https://pyramidanalytics.wistia.com/medias/j99cda6xcp" rel="nofollow noopener noreferrer" target="_blank">Video</a></span></p></td>
   <td>Create new visual tool-tips using Discover visuals or mini Present dashboards that can be auto adjusted with the context from the primary visualization.<br> The new Action option will replace the default built-in tool-tips.</td>
   <td>Provide users with enhanced insights into the data instantly with visual tool-tips and enable them to make more informed decisions, quicker. The capability is available in both Discover and Present.</td>
   <td><p><a href="/t/g9ht312/custom-visualsdiscoveries-within-a-tooltip" rel="nofollow noopener noreferrer">Custom Visuals in a Tool Tip</a></p> <p><a href="/t/83hmd24/advanced-tooltip-options" rel="nofollow noopener noreferrer">Advanced Tool Tip Options</a></p> <p><a href="/t/g9yq0nd/enhancement-to-the-mouse-over-tooltips-on-top-of-discovery-report" rel="nofollow noopener noreferrer">Mouse Over Tool Tips</a></p></td>
  </tr>
  <tr>
   <td><p>Multi-Select option in slicers and lists</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Drop%20Zones/Slicers/Filters%20and%20Slicers.htm?Highlight=select%20multiple%20members" rel="nofollow noopener noreferrer" target="_blank">Help</a></p> <p><span class="pen2">▶</span> <a href="https://pyramidanalytics.wistia.com/medias/bip1eyvfp0" rel="nofollow noopener noreferrer" target="_blank">Video</a></p></td>
   <td>Improved capability to select multiple items in multi-select slicers using CTRL+click and SHIFT+click actions</td>
   <td>Quicker, more intuitive ways to select multiple elements in a slicer streamlines the user experience.</td>
   <td><p><a href="/t/h7hkhyr/hold-shift-to-select-multiple-options-in-a-slicer-at-the-same-time" rel="nofollow noopener noreferrer">Hold Shift to Multi-Select</a></p></td>
  </tr>
  <tr>
   <td><p>Forecasting Options + Dialog Update</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Advanced%20Query%20Functions/Advanced%20Forecasting1.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p> <p><span class="pen2">▶</span> <a href="https://pyramidanalytics.wistia.com/medias/y4ejwiytk1" rel="nofollow noopener noreferrer" target="_blank">Video</a></p></td>
   <td>Use of Gen-AI to auto=create the forecasting member labels that correspond to the member/s being forecasted</td>
   <td>Provides an easier way to read forecasting results because AI generated member labels directly correspond to existing period time labels.</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><p>Banding Options for Steps in Conditional Formatting</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Visualizations/CF/Conditional%20Formatting%20Logic.htm?Highlight=banding" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New option to provide a specific color for the boundary between color bands. For example, in positive / negative conditional formatting, define a color for zero, the ”step” between positive and negative.&nbsp;</td>
   <td>New option to provide a specific color for the boundary between color bands. For example, in positive / negative conditional formatting, define a color for zero, the ”step” between positive and negative.&nbsp;</td>
   <td><a href="/t/83yq6y5/add-color-band-for-0-value-in-the-logic-color-option" rel="nofollow noopener noreferrer">Color Band for 0 Value</a></td>
  </tr>
  <tr>
   <td><p>SAP BW Key and Text Options</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Trees/alternative%20Captions.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Option to show key, text, or both in columns for SAP BW sources</td>
   <td>Enhance Discover's data organization and identification capabilities to enable user-friendly and insightful reports when using SAP BW.</td>
   <td><a href="/t/h7h0snk/sap-bw-display-both-key-and-text-in-slicers" rel="nofollow noopener noreferrer">SAP BW Display Key and Text in Slicers</a></td>
  </tr>
  <tr>
   <td><p>SAP BW Caption Changer</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Trees/alternative%20Captions.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Allow to change SAP BW captions for hierarchy names</td>
   <td>Enhance Discover's data organization and identification capabilities to enable user-friendly and insightful reports when using SAP BW.</td>
   <td><a href="/t/y4hc4jh/self-serve-change-caption" rel="nofollow noopener noreferrer">Self Server Caption Change</a>&nbsp;&nbsp; &nbsp;</td>
  </tr>
  <tr>
   <td><p>Broken Hierachical Sorting</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Query%20Functions/Sort.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New Option to preserve sorting within hierarchy levels when using SQL data sources&nbsp;</td>
   <td>Provide users better sorting options when working with hierarchies defined against SQL data sources. Ensures consistent behavior across multi-dimensional and relational sources.&nbsp;</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><p>Improved Member Color Locking</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Formatting%20and%20Design/Member%20Color%20Lock.htm?Highlight=color%20locking" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New option to adjust the color directly from color locking dialog instead of formatting panel&nbsp;</td>
   <td>Enables faster development when setting colors related to specific members.&nbsp;</td>
   <td>&nbsp; &nbsp;</td>
  </tr>
  <tr>
   <td><p>Bookmarking</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Extended%20Functionality/Bookmarks.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Bookmarks allow you to save multiple slicer selections in a Discovery. You can then select the required bookmark for the Discovery, rather than manually changing each of the slicers.</td>
   <td><p>Allows users to further personalize their Discover experience by saving favorite views of Discover reports for later viewing and continued exploration.</p> <p>Reduces the time needed to select relevant filters to get desired report views.</p></td>
   <td><a href="/t/60yylx7/extend-bookmark-functionality-to-discovers" rel="nofollow noopener noreferrer">Extended Bookmark Functionality</a></td>
  </tr>
  <tr>
   <td><p>Improved Data Source listing experience with folders and sorting</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/CMS/MCM/Server%20Management.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>The data source selection process for Discover reports has been enhanced with the ability to group data sources into folder, sorting by type in addition to the current sort by name.</td>
   <td>Enhance the data source selection process with a more intuitive and organized structure, especially when navigating a diverse collection of data sources thereby facilitating easier and more targeted data selection process.</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><p>Enabled background chips for Viewers</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Drop%20Zones/Slicers/Background%20Filters.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Enabling viewers to access and remove background chips in Analyze Further</td>
   <td>Removing filtering restrictions gives more flexibility and robust analytic capability for the Viewer user.</td>
   <td><a href="/t/g9yhjh8/disable-background-chip-feature-is-no-longer-available-for-viewer" rel="nofollow noopener noreferrer">Disable Background Chips in Viewer</a>&nbsp;&nbsp; &nbsp;</td>
  </tr>
  <tr>
   <td><p>Smart Insights added into Discover</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/SmartInsights/SmartInsights.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Added the Smart Insights tools into the Discover application</td>
   <td>Brings one-click analysis and insight whilst working interactively with data within Discover.</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><p>Ribbon Updates</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Workspace/Discover%20Ribbons.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Reorganization/reordering of some ribbon elements within Discover</td>
   <td>The new logical grouping enhances the organization and accessibility of Discover's various capabilities and functionalities.</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td>Upgraded tool-tip UI</td>
   <td>Homogenized all tool-tips in Discover</td>
   <td>Building a consistent tool-tip interface in Discover makes it easier to follow and track data and metadata.</td>
   <td>&nbsp;</td>
  </tr>
 </tbody>
</table>
<h3>Querying</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Custom total functions per measure</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Query%20Functions/Adding%20Totals%20to%20Grids.htm?Highlight=totals" rel="nofollow noopener noreferrer" target="_blank">Help</a></p> <p><span class="pen2">▶</span> <a href="https://pyramidanalytics.wistia.com/medias/nj130h64ec" rel="nofollow noopener noreferrer" target="_blank">Video</a></p></td>
   <td>New options in the Discover totaling engine that allows different totaling functions for each measure.</td>
   <td>Increased flexibility in totaling caters for a wider range of use cases with more precise achievement of analytic requirements.</td>
   <td><p><a href="/t/p8hcln3/individjusual-totals-function-per-measure" rel="nofollow noopener noreferrer">Individual Totals Function per Measure</a></p></td>
  </tr>
  <tr>
   <td><p>No totals for certain measures</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Query%20Functions/Adding%20Totals%20to%20Grids.htm?Highlight=totals" rel="nofollow noopener noreferrer" target="_blank">Help</a></p> <p><span class="pen2">▶</span> <a href="https://pyramidanalytics.wistia.com/medias/nj130h64ec" rel="nofollow noopener noreferrer" target="_blank">Video</a></p></td>
   <td>New option to turn off totaling for specific Measures in &nbsp;a query.</td>
   <td>Increased flexibility in totaling allows for greater precision for analytical requirements.&nbsp;</td>
   <td><p><a href="/t/y4hvfn3/can-you-switch-off-totals-for-specific-columns-in-a-matrix-grid" rel="nofollow noopener noreferrer">Can you switch of totals</a></p></td>
  </tr>
  <tr>
   <td><p>Hierarchical treatment in Context Calculations</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Calculations/contextCalcs/Edit_Context_Calculaiton_Logic.htm?tocpath=Client%20Help%7CPro%20User%7CPro%20Apps%7CDiscover%7CDiscover%20Pro%7CNavigating%20and%20Querying%20Data%7CCalculations%20in%20Discover%7CContext%20Calculations%7C_____6" rel="nofollow noopener noreferrer" target="_blank">Help</a></p> <p><span class="pen2">▶</span> <a href="https://pyramidanalytics.wistia.com/medias/clm96ye9lk" rel="nofollow noopener noreferrer" target="_blank">Video</a></p></td>
   <td>New options to incorporate hierarchical structures into the resolution of context calculations. This also extends to totals.</td>
   <td>Handling hierarchical and totaling structures, makes context calculations more useful and more intuitive for end users.</td>
   <td><p><a href="/t/83h5t09/context-rank-calculation-update#m1h5zst" rel="nofollow noopener noreferrer">Context Rank Update</a></p> <p><a href="/t/83h642s/context-calc-to-compute-percent-of-subtotal" rel="nofollow noopener noreferrer">Context Rank to Compute % of Subtotal</a></p></td>
  </tr>
  <tr>
   <td><p>New Statistical Options</p> <p><a href="/t/83yyvwg" rel="nofollow noopener noreferrer">Help</a></p></td>
   <td>New options in the Statistics section of Advanced Query in discover allow the user to select Standard Deviation Upper Bound, Lower Bound or Both simultaneously.</td>
   <td>Quicker, more useable statistical options means faster analytics.</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>21 new PQL Functions</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/fx/PQL.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Twenty-one additional PQL functions across granular, semantic and common libraries, such as Year(), Month(), Quarter() (granular).</td>
   <td>New PQL functions facilitate more calculations, more easily, and more quickly.</td>
   <td><p><a href="/t/83hxb4z/cumulative-rate-changes#y4yy1aq" rel="nofollow noopener noreferrer">Cumulative Rate Changes</a></p></td>
  </tr>
  <tr>
   <td><p>Better control over non-metric query SQL generation</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/data%20sources/Data%20Model%20Management.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Option to switch between 'group-by' an 'distinct' style queries on queries without metrics by data model.</td>
   <td>Provides a mechanism to obtain optimum query response times for different classes of databases and technologies.&nbsp;</td>
   <td><p><a href="/t/g9yydq9/handel-for-performance-on-top-of-very-large-tables-for-detailed-reports-at-low-level-of-data-granularity" rel="nofollow noopener noreferrer">Improve performance on very large tables</a></p></td>
  </tr>
 </tbody>
</table>
<h3>Visuals</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Multi-line data labeling in certain visuals</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Formatting%20and%20Design/FormattingPanel/DataLabels.htm?Highlight=data%20labels" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Support for multi-line data labels within selected visuals</td>
   <td>For improved data interpretation and accessibility, multi-line data labels have been added to many visuals, allowing users to seamlessly access and interpret detailed data information.</td>
   <td><p><a href="/t/g9yym7t/data-label-formatting" rel="nofollow noopener noreferrer">Data Label Formatting</a></p> <p><a href="/t/g9h701c/line-break-in-data-labels" rel="nofollow noopener noreferrer">Line Break in Data Labels</a></p> <p><a href="/t/83h3v87/data-label-visible" rel="nofollow noopener noreferrer">Data Label Visible</a></p> <p><a href="/t/p8hm468/data-labels" rel="nofollow noopener noreferrer">Data Labels</a></p></td>
  </tr>
  <tr>
   <td><p>More control over Gauge Font Scaling</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Visualizations/KPI%20Charts/Guages/AutoFitLabels.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New option to turn responsive gauge font resizing off.</td>
   <td>More flexible design choices lets designers deliver better looking content.</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Value label option for grid indicators</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Visualizations/CF/PercentageIndicator.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New option to show alternative metric values as an indicator 'value'</td>
   <td>Provide users with enhanced reporting grid cell display options and provide additional context to data values</td>
   <td><p><a href="/t/p8yy0d7/please-allow-the-text-indicator-to-display-a-measure-value-andor-allow-the-format-of-the-text-to-be-changed" rel="nofollow noopener noreferrer">Show alternative metric as indicator</a></p></td>
  </tr>
  <tr>
   <td><p>Upgraded legend alignment options</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Formatting%20and%20Design/FormattingPanel/Legend.htm?Highlight=legend%20alignment" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Legend options upgraded to include horizontal and vertical alignment.</td>
   <td>To provide users with greater control over legend presentation to improve their visualizations.&nbsp;</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td>Chart title alignment and padding options</td>
   <td>New capability to display breadcrumbs only as the chart title; in addition to improved alignment and padding options</td>
   <td>Enhancements to chart titles to include the option to display breadcrumbs for improved navigation and context, along with refined alignment and padding options for a more polished presentation.&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Trellis axis alignment and padding options</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Formatting%20and%20Design/FormattingPanel/TrellisAxes.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Addition to define horizontal or vertical orientation of a trellis axis title in addition to improved alignment and padding options</td>
   <td>For improved flexibility and visual appeal, trellis axis titles now support horizontal or vertical orientation, empowering users to adapt title placement to their specific visualization needs, complemented by enhanced alignment and padding options for refined presentation.&nbsp;</td>
   <td><p><a href="/t/m1yq6z5/be-able-to-adjust-the-margins-size-and-orientation-of-trellis-axis-labels" rel="nofollow noopener noreferrer">Ability to adjust the Margins Sizes and Orientation</a></p></td>
  </tr>
  <tr>
   <td><p>Data Shape Fill Options</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Formatting%20and%20Design/FormattingPanel/Shapes.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New options added to control the fill color of 'shapes' for relevant visuals.</td>
   <td>Expanded data shape configuration options enhance the customization of visual representations for relevant data.&nbsp;</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><p>Logarithmic Y-Axis Scales</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Formatting%20and%20Design/FormattingPanel/Axes.htm?Highlight=logarithmic%20axes" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Addition of support for a Logarithmic scale for the Y-axis.</td>
   <td>For improved visualization of data spanning multiple orders of magnitude, logarithmic scale support has been added to the Y-axis of visuals, providing a more accurate and compact representation of expansive data.&nbsp;</td>
   <td><p><a href="/t/y4hyfv7/log-scale-axes-on-charts" rel="nofollow noopener noreferrer">Log Scale Axis on Chart</a></p> <p><a href="/t/q6hcp1n/add-logarithmic-scaling-to-charts-in-order-to-visualize-small-values-when-they-have-a-very-wide-range" rel="nofollow noopener noreferrer">Add Logarithmic Scale</a></p></td>
  </tr>
 </tbody>
</table>
<h3>Content Manager</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Conversation / Workflow upgrade to support interim thread emails</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Extended%20Functionality/Discovery%20Conversations/Start%20a%20Conversation.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New option to email participants in a thread about every additional comment made.</td>
   <td>Provides a more robust notification mechanism for instant alerting of new comments when engaging with a conversation or custom workflow. &nbsp;&nbsp;</td>
   <td><p><a href="/t/p8hmv9s/emailingnotification-for-answers-in-comments" rel="nofollow noopener noreferrer">Mail notification for Answers in Comments</a></p> <p><a href="/t/p8h2v2c/ability-to-enable-sending-emails-not-just-on-initial-conversation-creation-but-also-when-another-comment-is-added-to-that-same-conversation" rel="nofollow noopener noreferrer">Ability to send additional e-mails</a></p> <p><a href="/t/q6hzh7x/email-for-new-comments-in-conversation" rel="nofollow noopener noreferrer">E-Mail for new comments</a></p></td>
  </tr>
  <tr>
   <td><p>Open Multiple files</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/CMS/views/Content%20Item%20Mechanics.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p> <p>&nbsp;</p></td>
   <td>New capability to select multiple items in the content manager and open them as a group</td>
   <td><p>Opening grouped objects speeds the editing and development process.</p> <p>Allows content creators to accelerate access to content for editing.&nbsp;</p></td>
   <td><p><a href="/t/y4hv3sn/opening-multiple-objects-at-once#35hv30l" rel="nofollow noopener noreferrer">Open multiple Items at once</a></p></td>
  </tr>
  <tr>
   <td><p>Content ID's added to all metadata tips</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Workspace/MetadataPanel.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Content ID numbers added to numerous metadata elements throughout the app</td>
   <td>Makes it easier to track which content elements are being used from the catalog.</td>
   <td><p><a href="/t/m1yhlpc/easy-access-to-item-id-metadata" rel="nofollow noopener noreferrer">Add Content ID to Metadata</a></p> <p>&nbsp;</p></td>
  </tr>
 </tbody>
</table>
<h3>Present</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Hide maximise Buttons</p></td>
   <td>New option to hide the maximize button for presentations.</td>
   <td>In some circumstances, a designer of a dashboard may want additional control over how a user interacts with it. This option provides additional runtime control.</td>
   <td><p><a href="/t/h7hbn2v/remove-a-maximize-button" rel="nofollow noopener noreferrer">Remove a maximise button</a></p></td>
  </tr>
  <tr>
   <td><p>Tool Tip Presentations</p> <p><span class="pen2">▶</span> <a href="https://pyramidanalytics.wistia.com/medias/j99cda6xcp" rel="nofollow noopener noreferrer" target="_blank">Video</a></p></td>
   <td>New Present design option for visual tooltips</td>
   <td>A new design option for Presentations that will be used to drive visual tooltips - optimized for purpose and size.</td>
   <td><p>&nbsp;</p></td>
  </tr>
 </tbody>
</table>
<h3>Formulate</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Scripting Tool- tips and Item Click-through</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Formulate/Common%20Functions/ScriptEditor.htm?tocpath=Client%20Help%7CPro%20User%7CPro%20Apps%7CFormulate%7CCommon%20Formulate%20Workspace%7C_____3" rel="nofollow noopener noreferrer" target="_blank">Help</a></p> <p><span class="pen2">▶</span> <a href="https://pyramidanalytics.wistia.com/medias/tzl3qd67gh" rel="nofollow noopener noreferrer" target="_blank">Video</a></p></td>
   <td>New ability to see the metadata of items used in formulate scripts: hover over tool-tip with names and locations; and a CTRL+Click option to open the item.</td>
   <td>Direct inspection and access to item metadata means that developers have faster access to underlying items for inspection and editing, resulting in faster time to debug or construct elements in the catalog.</td>
   <td><p><a href="/t/m1yhlpc/easy-access-to-item-id-metadata" rel="nofollow noopener noreferrer">Easy Access to Item ID Metadata</a></p> <p><a href="/t/p8yyn4p/direct-access-to-content-by-path-severfolder-item-name" rel="nofollow noopener noreferrer">Direct Access to Content</a></p> <p><a href="/t/x2y3qdd/user-defined-name-and-folder-path-as-a-tooltip-for-measures-and-variables-in-script-mode" rel="nofollow noopener noreferrer">User Defined Path as Tooltip</a></p></td>
  </tr>
  <tr>
   <td><p>Improved Options for script interface</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Formulate/Common%20Functions/ScriptEditor.htm?tocpath=Client%20Help%7CPro%20User%7CPro%20Apps%7CFormulate%7CCommon%20Formulate%20Workspace%7C_____3" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Options to change the font size and font style for the Formulate scripting tools</td>
   <td>Ability to set, change and adjust UI of the scripting interface makes for more comfortable editing and coding leading to fewer errors and faster development.</td>
   <td><p><a href="/t/83yycby/formulate-canvas" rel="nofollow noopener noreferrer">Formulate Canvas</a></p></td>
  </tr>
  <tr>
   <td><p>Multi-lingual names and descriptions for all formulated objects.</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Formulate/Formulas/ChooseLanguage.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Multi-lingual support has been extended to Formulate for all Formulate Objects</td>
   <td>Additional support for multi-lingual models in Formulate extends and enhances the usability for multiple language models.</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Support for MSOLAP properties in List Builder</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Trees/List%20Builder.htm?Highlight=list%20builder" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Enhancement to the Member List Builder to match against Member Properties in Analysis Services OLAP cubes as well as the Member Name or Key.</td>
   <td>More flexible and useable options to extend the search and matching against members to create lists.</td>
   <td><p><a href="/t/35hza0z/custom-list-property-enhancements" rel="nofollow noopener noreferrer">Custom List Property Enhancements</a></p></td>
  </tr>
 </tbody>
</table>
<h3>Model</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Added data flows widgets: &nbsp;JSON parser</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Model/Model%20Pro/Data%20Flow/ColumnOperations/JSONExtract.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>JSON parser widget now available for data flows in the Model module to untangle JSON blob data stored in database fields.</td>
   <td>Allows for easy handling of JSON fields embedded or nested in tables.</td>
   <td><p><a href="/t/g9yq51t/variant-type-in-snowflake" rel="nofollow noopener noreferrer">JSON Data&nbsp;Type</a></p></td>
  </tr>
  <tr>
   <td><p>Added data flows widgets: Date-diff calculator</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Model/Model%20Pro/Data%20Flow/ColumnOperations/DateDifference.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Date-diff calculator widget now available for easier date calculations in the data flows in the Model module.</td>
   <td>Provides a simple, no-code way to create date difference functions for date-time columns.</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Added data flows widgets:&nbsp;Data Pivot</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Model/Model%20Pro/Data%20Flow/Preparation/Pivot.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New Data Flow node that provides the ability to pivot rows of data into columns for better table structures.</td>
   <td>This widget surfaces an intuitive way to rotate/transpose your data into a tabular format so it can be consumed properly in semantics and analytics.</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Data modeling option to resync model with database</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Model/Model%20Pro/Data%20Model/Tables/SyncSchema.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New Option within data (semantic) modelling, &nbsp;to 'Sync Schema' of the semantic model to the related data source.</td>
   <td>Provides a more convenient method to synchronize the semantic structures with the underlying data base.</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Added connectors for Dremio</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/data%20sources/sources/Data%20Source%20Listing.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Standardized connector for the Dremio data lakehouse management service.</td>
   <td>This extends Pyramid's library of standard data connectors &nbsp;and provide users with greater variety of options to model, merge, report and analyse additional data sources.</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Added connectors for Google GA4</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/data%20sources/sources/Data%20Source%20Listing.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Standardized connector for the new Google GA4 data service.</td>
   <td>This extends Pyramid's library of standard data connectors &nbsp;and provide users with greater variety of options to model, merge, report and analyse additional data sources.</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Added connectors for Box</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Model/Model%20Pro/Data%20Flow/Sources/Generic/Box.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Standardized connector for the Box cloud storage service.&nbsp;</td>
   <td>This extends Pyramid's library of standard data connectors &nbsp;and provide users with greater variety of options to model, merge, report and analyse additional data sources.</td>
   <td><p><a href="/t/x2hv8nq/box-integration" rel="nofollow noopener noreferrer">Box Integration</a></p></td>
  </tr>
  <tr>
   <td><p>Upgraded connectors for Twitter/X</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/data%20sources/sources/Add%20Twitter%20Server.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Upgraded connector for Twitter/X social media platform metrics.</td>
   <td>This extends Pyramid's library of standard data connectors &nbsp;and provide users with greater variety of options to model, merge, report and analyse additional data sources.</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>"Or" join operator</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Model/Model%20Pro/Data%20Model/Tables/JoinKeys.htm?Highlight=join%20key" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New option to create conditional joins using the 'OR' operator between tables in the Pyramid semantic model.&nbsp;</td>
   <td>Further options on joining characteristics expands the data modelling scope for Pyramid models.&nbsp;</td>
   <td><p><a href="/t/x2hcjkl/increase-join-functionality-in-models" rel="nofollow noopener noreferrer">Increase Join Functionality</a></p></td>
  </tr>
  <tr>
   <td><p>Upgraded options for file targets in data flow</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Model/Model%20Pro/Data%20Flow/Targets/Files/FileTargets.htm?Highlight=file%20targets" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New options available for how to name output files and which folders or buckets to put them in for systems like Azure Blob and Apache Parquet systems.</td>
   <td>Provides data modeler greater flexibility to dynamically automate data pipeline processes and reduce manual updates and maintenance.</td>
   <td><p><a href="/t/x2h983j/new-parquet-target-options" rel="nofollow noopener noreferrer">New Parquet File Target options</a></p></td>
  </tr>
  <tr>
   <td><p>Capability to copy the join syntax from modeling</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Model/Model%20Pro/Data%20Flow/Joins/MergeJoin.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>When creating a join, you now have the option to view and copy the SQL expression that will be generated for the join.</td>
   <td>Allows users to easily copy the SQL code and duplicate a Pyramid join for use in other systems or for testing.</td>
   <td><p><a href="/t/m1hvjfz/add-copy-script-feature-in-join-element-in-model-app" rel="nofollow noopener noreferrer">Copy Script Feature in Join Element</a></p></td>
  </tr>
 </tbody>
</table>
<h3>Tabulate</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Cell formatting interface</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Tabulate/Tabulate%20Pro/Working%20with%20Spreadsheets/Formatting/NumericFormatting.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New cell context menu option to format Tabulate spreadsheet cells in addition to the menu options - including advanced numeric formatting.</td>
   <td>Further enhances and simplifies the user experience, increases productivity and aligns to other spreadsheet type functionality.</td>
   <td><p><a href="/t/g9h92bk/tabulate-font-formatting" rel="nofollow noopener noreferrer">Tabulate font formatting</a></p></td>
  </tr>
  <tr>
   <td><p>Upgraded slicer importing</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Tabulate/Tabulate%20Pro/Working%20with%20Spreadsheets/Using%20Live%20Data/Slicers.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New option to update the elements displayed once the slicer has been imported from source Discover object into Tabulate</td>
   <td>Improved flexibility to control slicer content based on changes in the semantic model and data source.</td>
   <td><p>&nbsp;</p></td>
  </tr>
 </tbody>
</table>
<h3>Solve</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Upgrade to Solve engine capacity</p></td>
   <td>Upgraded the Solve Optimization engine &nbsp;- incorporating significantly stronger capabilities and scale.</td>
   <td>Updated Solve engine allows the processing of larger and more complex optimization and prescriptive analytical scenarios.&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Added Solve engine choices and settings</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Tabulate/Tabulate%20Pro/Solve/Ref_AdvancedSettings.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Added two levels of Solve engine capacity with numerous advanced settings.</td>
   <td>Reduces TCO by allowing you to select the Solve engine capacity that best aligns with your unique business needs.</td>
   <td><p>&nbsp;</p></td>
  </tr>
 </tbody>
</table>
<h3>Printing</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>PDF compression</p></td>
   <td>New, improved file compression applied to all printed PDF output (Discover, Present, Publish, etc.)</td>
   <td>Reducing the PDF file size by up to 40% means sharing large file attachments is simpler and easier to manage.</td>
   <td><p><a href="/t/35hc998/publish-pdf-file-size-reduction" rel="nofollow noopener noreferrer">Publish PDF File Size reduction</a></p></td>
  </tr>
  <tr>
   <td><p>PDF bookmarking</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Publish/Publish%20Pro/Distribution/Bookmarks.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New option to create bookmark links between table of contents and their related sections in generated PDF output from Publish.</td>
   <td>Simplify the Publication navigation with PDF bookmarks, making it quicker and easier to locate content and analysis in a PDF document.</td>
   <td><p><a href="/t/60hc99l/enable-publish-to-create-bookmarks-in-a-pdf" rel="nofollow noopener noreferrer">Bookmarks in PDF</a></p></td>
  </tr>
 </tbody>
</table>
<h3>Embedding</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Support for Pre-query slicers</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/Extensibility/Embedding/Embedding.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Pre-query slicers have been introduced to embedded content, enabling users to refine their searches before querying from embedded content.&nbsp;</td>
   <td>To enhance the handling of large or slow data sets, the embedded experience has been enriched with pre-query slicers, empowering users to refine their search results before querying, streamlining data exploration.&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Support for slicers and legends on embedded Discover content</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/Extensibility/Embedding/embed%20API/PyramidEmbedClient/embedContent/EmbedOptions/embedOptions.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Embedded Discover content now featuring slicers and legends for embedded Discover objects.</td>
   <td>Embedded Discover objects now offer enhanced interactivity and visual representation with the integration of slicers and legends, enabling users to refine their data exploration and gain deeper insights&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Options to choose export types</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/Extensibility/Embedding/embed%20API/PyramidEmbedClient/embedContent/ExportingOptions/ExportTypes.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Enhancement to Present and Discover embedded to provide options to limit the export types exposed to users.</td>
   <td>Support to define the Export types when embedding Discover and Present content. Providing an improved end user experience &nbsp;for embedded content and the choice of ways to export this content.</td>
   <td><p><a href="/t/h7yqz70/remove-print-to-pdf-in-embedded-mode" rel="nofollow noopener noreferrer">Remove Print to PDF in Embed</a></p></td>
  </tr>
 </tbody>
</table>
<h3>Admin</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Security Section</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/security/Security.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>A new 'Security' section has been introduced to the 'Admin Console', consolidating security-related topics into a centralized hub&nbsp;</td>
   <td>To enhance the administrative experience, we have grouped all security-related configurations and settings into a single, centralized section.&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Certificate Manager</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/security/Certificate_Manager.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New option to manage certificates not issued by a publicly certified certificate issuer. &nbsp; &nbsp;&nbsp;</td>
   <td>Administrators can now easily manage encrypted connections to data sources.</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Options to set/recycle encryption keys</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/security/Security_Settings.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>The Pyramid platform now empowers administrators to set and regenerate encryption keys for enhanced security&nbsp;</td>
   <td>Enhanced security measures have been implemented to mallow administrators to set or regenerate encryption keys.&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Options to adjust admin rights for domain admins</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/access/DomainAdmins.htm?Highlight=domain%20admin" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Domain administrators can now be granted different administrative privileges, limiting their access to different areas of the admin console.&nbsp;</td>
   <td>Enhanced security for multi-tenancy environments has been implemented by allowing the restriction of different administrative tasks for domain administrators.&nbsp;</td>
   <td><p><a href="/t/h7yql14/multi-domain-admin-acces" rel="nofollow noopener noreferrer">Multi Domain Access</a></p></td>
  </tr>
  <tr>
   <td><p>Option to run with Service accounts for MSFT data sources</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/data%20sources/sources/SSAS%20setup.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Administrators can now connect to Microsoft Data Sources using service accounts.&nbsp;</td>
   <td>Allows for administrators to have a greater choice in configuring infrastructure and network security related to Microsoft data sources.</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Updated Global Account mechanism</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/data%20sources/sources/SSAS%20setup.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>The mechanics of the 'Active Directory Global Account' for Microsoft data sources has been improved</td>
   <td>Improves the robustness of the data source connectivity process for more stability.</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Logging Interface upgrade: New time filters, indicators, paging mechanism</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/logs/System%20Logging.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>A revamped interface for querying and viewing logs within the admin console with time filters, indicators and upgraded paging mechanism.&nbsp;</td>
   <td>New time filters allow admins to pinpoint specific time frames, ensuring they only view logs relevant to their investigation. The severity indicators provide visual cues to quickly identify critical events, while the paging mechanism enables efficient navigation through large log volumes.&nbsp;</td>
   <td><p><a href="/t/m1h48zw/allow-log-filtering-based-on-time" rel="nofollow noopener noreferrer">Allow Log filtering based on time</a></p></td>
  </tr>
  <tr>
   <td><p>Option to set language for users</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/access/Users.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>To enhance user convenience, the admin console now provides administrators with the ability to define the native system language for each user.&nbsp;</td>
   <td>Enhanced user attribute management capabilities now include language settings for each users.&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Upgraded user import for languages</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/access/Importing%20Users.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>User import files now support the inclusion of native system language preferences.&nbsp;</td>
   <td>Improves the speed in which new users can be added to the system with their specific settings when using the file-based user imports.&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Solver transaction log</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/logs/SolveLogs.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Aligning with the enhanced Solver engine's capabilities, a Solver transaction log has been introduced to the Platform for enhanced visibility and control.&nbsp;</td>
   <td>The enhanced Solver Engine within the Pyramid platform now provides enhanced telemetry - enabling administrators to gain deeper insights into Solver operations.&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Solver service settings panel</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/Servers/Services_SolveServices.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>To complement the improved Solver engine, administrators can now manage its settings directly through the admin console.&nbsp;</td>
   <td>Pyramid now offers enhanced configurability for the Solver engine, enabling users to tailor its behavior to specific needs.&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Control over system schedule start times</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/access/Provisioning.htm?Highlight=provisioning" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New mechanism to choose the starting hour for certain system schedules</td>
   <td>More flexibility better reflects real world requirements leading to more stability.</td>
   <td><p><a href="/t/h7yyj2w/please-add-the-ability-to-select-the-time-that-the-ad-sync-job-will-be-run" rel="nofollow noopener noreferrer">Select time to run ad sync job</a></p></td>
  </tr>
  <tr>
   <td><p>Sortable and filterable roles panel</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/CMS/actions/Content%20Roles.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>The roles panel through the app now lets users sort and filter roles.</td>
   <td>More intuitive and functional user management tools means faster maintenance and more accurate management of the system.</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Upgraded Audit logging for schedules</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/logs/Transaction.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Better audit logging of actions on schedules</td>
   <td>Improvements in audit logging can lead to better understanding of usage and management of resulting action.</td>
   <td><p><a href="/t/60h4j2z/audit-or-log-when-and-which-user-pressed-the-stop-all-button-for-schedules" rel="nofollow noopener noreferrer">Audit when user press stop on schedule</a></p></td>
  </tr>
  <tr>
   <td><p>Metadata for data connectors – descriptions and folders</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/data%20sources/Servers.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Two new metadata fields, 'folder' and 'description', have been introduced to Data Sources. These are visible when users access data servers throughout the platform.</td>
   <td>To improve data source discoverability and navigation, two new metadata fields, 'folder' and 'description', have been added to Data Sources. The 'folder' metadata allows users to categorize data sources based on business requirements, fostering a more organized and intuitive user experience.&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
 </tbody>
</table>
<h3>Admin Hub</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Upgraded diagnostic dashboard: mini view and tools to restart services</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/home/DiagnosticDashboard.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>The Admin Hub has been enhanced with the introduction of a mini view for quick and easy access to key information, as well as the ability to restart the entire platform directly from the hub.&nbsp;</td>
   <td>For enhanced administrative accessibility and control, the Admin Hub now features the ability to restart the platform and provides a mini view of running services, enabling administrators to quickly manage and monitor the platform.&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Added admin hub widgets: IMDB diagnostics, prints today, export today</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/home/AdminHub.htm" rel="nofollow noopener noreferrer" target="_blank">Help Admin hub</a></p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/home/AdminHub_IMDBStatus.htm" rel="nofollow noopener noreferrer" target="_blank">Help IMDB Status</a></p> <p><span class="pen2">▶</span> <a href="https://pyramidanalytics.wistia.com/medias/nab0j1gjnx" rel="nofollow noopener noreferrer" target="_blank">Video</a></p></td>
   <td>Three new Admin Hub widgets have been integrated, providing insights into the In-Memory database, print counts, and Excel export activity.&nbsp;</td>
   <td>To provide administrators with a better monitoring the In-memory database and its resource consumption. Other widgets cover monitoring of content exports.</td>
   <td><p><a href="/t/p8h0cfs/add-support-for-imdb-servers-resource-consumption-on-the-admin-summarize-panel" rel="nofollow noopener noreferrer">Add Support to manage Resource Consumption</a></p> <p><a href="/t/y4hafcf/imdb-server-monitoring" rel="nofollow noopener noreferrer">IMDB Server Monitoring</a></p></td>
  </tr>
 </tbody>
</table>
<h3>General Infrastructure</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Encrypted connections to the Repository</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/Guides/installation/EncryptedRepoConnection.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New option to provide an encrypted connection to the Pyramid Repository database.&nbsp;</td>
   <td>For organizations looking to provide a higher level of security in their Pyramid environment.</td>
   <td><p><a href="/t/63pqtg/add-support-for-always-encrypted" rel="nofollow noopener noreferrer">Add Support for always encrypted</a></p></td>
  </tr>
  <tr>
   <td><p>Solve Service</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/Servers/Services_SolveServices.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Pyramids optimization engine, Solve, is now implemented as a separate Service in the Pyramid Platform. Supports two levels of capability.</td>
   <td>A separate Solve service greatly expands the scalability and performance of optimization problem solving for prescriptive analytical scenarios.&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Gen-AI integration option for AzureAI</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/ai/AI%20Settings.htm?Highlight=azure%20ai" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Support for a switch between OpenAI and Microsoft Azure AI Large Language Models (LLMs).</td>
   <td>Enhances the options to connect to an additional Generative AI service in Microsoft Azure.</td>
   <td><p><a href="/t/60hvsy0/support-for-azure-open-ai" rel="nofollow noopener noreferrer">Support Azure OpenAI</a></p></td>
  </tr>
  <tr>
   <td><p>Support for encrypted connections to IMDB</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/security/Security_Settings.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>Connections to the Pyramid In Memory Database can now be secured via an encrypted connection</td>
   <td>An option to achieve higher security levels when using Pyramid's In-memory database.</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>FIPS encryption mode [<span class="pen1">BETA</span>]</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/Guides/installation/Main/Encryption%20and%20FIPS.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>BETA FEATURE: Initial support for The Federal Information Processing Standard (FIPS) Publication 140-2, a US and Canadian government cryptographic security standard.&nbsp;</td>
   <td>Specifically designed for those customers requiring FIPS level compliant encryption standards.</td>
   <td><p>&nbsp;</p></td>
  </tr>
 </tbody>
</table>
<h3>K8s Infrastructure</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>Pods running as non-root users</p></td>
   <td>Pyramid Kubernetes pods now run under a non-root &nbsp;account.&nbsp;</td>
   <td>To strengthen security and mitigate potential vulnerabilities, Pyramid Kubernetes now runs pods within a non-root user context, reducing the attack surface and promoting secure container execution.&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
  <tr>
   <td><p>Option to run AWS S3 via IAM roles</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/Guides/installation/Kubernetes/helm/Ref_Installation_Unattended.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>For AWS-S3 storage, Kubernetes cluster storage can now be configured to utilize an AWS IAM roles&nbsp;</td>
   <td>Bolstering security for Pyramid Kubernetes deployments, administrators can now define the installation of AWS S3 storage by utilizing an AWS IAM role, eliminating the need for embedded credentials and minimizing potential attack vectors.&nbsp;</td>
   <td><p><a href="/t/p8yhcf1/support-aws-roles-for-authentication-to-aws-s3-both-the-persistent-storage-and-as-a-source" rel="nofollow noopener noreferrer">Support AWS Roles for Authentication</a></p></td>
  </tr>
  <tr>
   <td>Solver Container</td>
   <td>The Pyramid Kubernetes implementation has been expanded with an additional container type specifically designed to support the Solver engine&nbsp;</td>
   <td>To enhance scalability and resource management for solver-based transactions, the Pyramid platform now employs separate Kubernetes containers for the Solve service, enabling administrators to precisely scale resources based on specific requirements.&nbsp;</td>
   <td><p>&nbsp;</p></td>
  </tr>
 </tbody>
</table>
<h3>APIs</h3>
<table style="font-size:13px">
 <tbody>
  <tr>
   <td style="background-color:#81c6e3; width:19%"><em><strong>Feature Name</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Description</strong></em></td>
   <td style="background-color:#81c6e3; width:33%"><em><strong>Benefit</strong></em></td>
   <td style="background-color:#81c6e3; width:15%"><em><strong>Community</strong></em></td>
  </tr>
  <tr>
   <td><p>API V3 with client SDK libraries in multiple languages [<span class="pen1">BETA</span>]</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/APIs/REST%20API/APIs%20and%20SDKs.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>BETA FEATURE: The Pyramid API Version 3 includes new functions as well as packaged client Software Development Kits for C#, Java, JavaScript/TypeScript, Python and PHP</td>
   <td>Extends the range of development options for third parties wanting to integrate their applications with the Pyramid Platform.</td>
   <td><p><a href="/t/60yqdd8/open-api-spec-for-pyramid-api-2-0-methods" rel="nofollow noopener noreferrer">OpenAPI Spec for API2.0</a></p></td>
  </tr>
  <tr>
   <td><p>New API3 functions: &nbsp;create Discover reports; create Formulate formulas and lists</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/APIs/REST%20API/API3/analytics.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>The ability to create new Discover and Formulate objects programmatically through the Pyramid API version 3.</td>
   <td>Provides a mechanism to develop core Pyramid content through external programming tools.</td>
   <td><p><a href="/t/q6hc944/programmatically-create-formulates" rel="nofollow noopener noreferrer">Programmatically create Formulates</a></p></td>
  </tr>
  <tr>
   <td><p>New API3 functions: &nbsp;get/set hierarchy and measure overlays; get/set hierarchy, measure and member security</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/APIs/REST%20API/API3/dataSources.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New API functions to provide programmatic set and get access to model overlay and security functions</td>
   <td>Provides a mechanism to develop or automate 'overlay' adjustments to semantic models for different roles; or setting granular data security for different roles.</td>
   <td><p><a href="/t/83hs8l7/exporting-attribute-security-and-measure-security-for-roles" rel="nofollow noopener noreferrer">Exporting Attribute Security and Measure Security for Role</a></p></td>
  </tr>
  <tr>
   <td><p>New API3 functions: get/set Data Catalogs</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/APIs/REST%20API/API3/dataSources.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New API functions to provide programmatic set and get access to model catalog details.</td>
   <td>Provides a mechanism to programmatically get or set the data catalog for semantic models. This would facilitate extensibility with other third part data cataloging tools</td>
   <td><a href="/t/q6ha5fk/discoverydata-catalog-export#q6ha5bf" rel="nofollow noopener noreferrer">Discover Data Catalog Export</a></td>
  </tr>
  <tr>
   <td><p>New API3 functions: apply themes to content programmatically</p> <p><a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/APIs/REST%20API/API3/themes.htm" rel="nofollow noopener noreferrer" target="_blank">Help</a></p></td>
   <td>New API functions to programmatically switch the chosen themes of content.</td>
   <td>The new API function will greatly accelerate the adjustment of themes to existing content by offering programmatic access to this operation.</td>
   <td><p><a href="/t/q6yh1kk/api-andor-manual-way-to-batch-apply-themes" rel="nofollow noopener noreferrer">Batch Apply Themes via API</a></p></td>
  </tr>
 </tbody>
</table>]]></description>
          <pubDate>Thu, 07 Dec 2023 16:10:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/83yyvwg/pyramid-2023-10-your-product-ideas-delivered</guid>
          <dc:creator>Christian Langmayr</dc:creator>
        </item>

      <item>
          <title>Pyramid 2023.01: Your Product Ideas Delivered</title>
          <link>https://community.pyramidanalytics.com/t/60hvgrm/pyramid-2023-01-your-product-ideas-delivered</link>
          <description><![CDATA[<p style="text-align:start">The following list highlights all the customer product ideas and suggestions on this forum that have been implemented in Pyramid 2023.01&nbsp;</p>
<h3 style="text-align: start;">Discover</h3>
<p><a href="/t/36vksl/data-labels-for-100-stacked-bar-need-of-total-option-like-pie-charts" rel="nofollow noopener noreferrer">Data Labels for 100% Stacked Bar need % of Total Option like Pie Charts</a><br> <a href="/t/m1hd79l/csv-delimiter-type-selection-in-discover-export" rel="nofollow noopener noreferrer">CSV delimiter type selection in discover export</a><br> <a href="/t/m1hvxyh/searching-for-multiple-members-in-a-single-slicer-search" rel="nofollow noopener noreferrer">Searching for Multiple Members in a Single Slicer Search</a><br> <a href="/t/p8h9wgw/ability-to-include-a-custom-reference-line-on-a-chart" rel="nofollow noopener noreferrer">Ability to include a custom reference line on a chart</a><br> <a href="/t/y4h4gkl/actions-not-to-include-unary-operator-hierarchy-in-destination" rel="nofollow noopener noreferrer">Actions not to include unary operator hierarchy in destination</a><br> <a href="/t/83h0htl/list-builder-from-frontend" rel="nofollow noopener noreferrer">List builder from Frontend</a><br> <a href="/t/q6hpbax" rel="nofollow noopener noreferrer">Easy Tagging using the&nbsp;@sign</a></p>
<h3>Present</h3>
<p style="text-align:start"><a href="/t/83hd0va/present-print-output-not-showing-parameters" rel="nofollow noopener noreferrer">Present Print Output Not Showing Parameters</a><br> <a href="/t/g9hbwv7/slide-jump-actions-enhancements" rel="nofollow noopener noreferrer">Slide Jump Actions enhancements</a><br> <a href="/t/60h5tv3/next-slide-action" rel="nofollow noopener noreferrer">Next slide action</a><br> <a href="/t/q6hwf3j/export-with-parametersslicers-shown" rel="nofollow noopener noreferrer">Export with Parameters/Slicers shown</a><br> <a href="/t/83h0htl/list-builder-from-frontend" rel="nofollow noopener noreferrer">List builder from frontend</a></p>
<h3 style="text-align: start;">Tabulate</h3>
<p style="text-align: start;">Tabulate Slicer not returning data<br> <a href="/t/h7h92nw/tabulate-gridlines" rel="nofollow noopener noreferrer">Remove Tabulate Grid Lines</a><br> &nbsp;</p>
<h3 style="text-align: start;">Model</h3>
<p style="text-align: start;"><a href="/t/83h43yh/add-ability-to-authenticate-with-bigquery-using-a-service-account" rel="nofollow noopener noreferrer">Add ability to authenticate with BigQuery using a Service Account</a><br> <a href="/t/y4h91wb/change-the-owner-of-model-schedules-when-pro-user-is-deleted" rel="nofollow noopener noreferrer">Change the owner of model schedules when pro user is deleted</a><br> <a href="/t/83h9g4s/add-table-name-when-hovering-on-tile" rel="nofollow noopener noreferrer">Add table name when hovering on tile</a></p>
<h3 style="text-align: start;">Administration</h3>
<p style="text-align: start;"><a href="/t/60hv3dd/better-handling-of-the-print-button-and-the-spawning-of-prints" rel="nofollow noopener noreferrer">Better Handling of the Print Button</a></p>
<p>&nbsp;</p>
<p>sin<span id="cke_bm_210S" style="display: none;">&nbsp;</span><a href="/t/y4h0rfr/pyramid2020-27-released" rel="nofollow noopener noreferrer"><img alt="" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/0b6d2b73-d9a7-4ae1-9e35-5bef080912ef/h/547.jpg" style="padding:0px"></a>&nbsp;<a href="/t/p8h945c/pyramid-202301-released" rel="nofollow noopener noreferrer">Back to&nbsp;Pyramid 2023.01 release announcement</a></p>]]></description>
          <pubDate>Wed, 16 Aug 2023 19:04:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/60hvgrm/pyramid-2023-01-your-product-ideas-delivered</guid>
          <dc:creator>Christian Langmayr</dc:creator>
        </item>

      <item>
          <title>Decision Intelligence Blog: How to choose the right calculation method in Pyramid</title>
          <link>https://community.pyramidanalytics.com/t/y4h47nr/decision-intelligence-blog-how-to-choose-the-right-calculation-method-in-pyramid</link>
          <description><![CDATA[<h2 class="toc__permalink"><a href="/t/83h4lwp/decision-intelligence-blog-leveraging-pyramid-analytics-to-migrate-to-data-mesh-architecture-guest-blog#leveraging-pyramid-analytics-to-migrate-to-data-mesh-architecture" rel="nofollow noopener noreferrer">How to choose the right calculation method in Pyramid</a></h2>
<p>&nbsp;</p>
<p><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/b216f7cb-238a-4da3-93c8-e8fef1578b42/h/547.png" style="float:left" width="215"></p>
<p style="text-align:start">&nbsp; This Blog has been written by&nbsp;<span class="mention" data-href="/profile/83htg3s" role="button">Debora Veh</span>&nbsp;from our Partner Prodato</p>
<h3>Applying calculations correctly in Pyramid Analytics.</h3>
<p>The Pyramid Decision Intelligence platform combines Data Preparation, Business Analytics and Data Science in a single Data and Analytics environment. As a partner of Pyramid Analytics, we would like to present tips and tricks especially for new users to make the start with this platform as easy as possible.</p>
<p>Many will have already noticed that the seemingly same calculation can produce different results. But why is that, and which result is the correct one? What is the difference between Row-Level Calculation and Aggregations? And how are they implemented in Pyramid Analytics?</p>
<p>In this article, we will first explain the terms and then illustrate them with a use case example in Pyramid Analytics.</p>
<h3 style="text-align: justify;">When do you use Row-Level Calculation?</h3>
<p>Row-Level Calculation is a row-based calculation. All calculations are first performed at the row level and then aggregated afterwards, just like normal fields. Thus, the calculation is performed for each row in the data. Additionally, merging (row calculation) fields is more performant than splitting fields.</p>
<h4>Use Case:</h4>
<p>If you want to calculate sales, i.e., Price * Quantity, you calculate this at row level. Row level is important here to consider different prices for different products. In our example, the respective prices for different bicycles and bicycle accessories are multiplied by the number of sold items.</p>
<p>In Pyramid Analytics, a Row-Level Calculation is created either in the Model module via Calculated Columns or in the Formulate module. In Model, a new column is generated for the data and the result is calculated row by row. In Formulate, an aggregation block such as "Sum" is selected. Here the row level, for example an ID, is selected as a list and the desired calculation as data point.</p>
<h3>When do you use Aggregations?</h3>
<p>Aggregates are column-based calculations. The values are first aggregated, and then the calculation is performed on the aggregated result. It should be noted that aggregations can be very time consuming when dealing with large amounts of data. Aggregates must not be created in Model but should be created in Formulate or in Discover. Some values cannot be summed up, e.g., profit margin, otherwise they lose their meaningfulness.</p>
<h4>Use Case:</h4>
<p>Sums are used to calculate the share of profit in sales, i.e., profitability. Sums are also used to calculate profitability, Gross profit / Net sales * 100. Here, the total profit, of all products sold, is compared to the total net sales. This results in a percentage value; a subsequent summation would distorte the significance.</p>
<p>The choice of the respective calculation method is crucial for the informative value of the key figures independent of the platform.</p>
<h3>Examples of calculations:</h3>
<p>In the following, the implementation in Pyramid Analytics is explained using the presented use cases.</p>
<h4>Row-Level Calculation in Model:</h4>
<p>For a Row-Level Calculation, SUM ([Measure A] *[Measure B]) is calculated row by row in Model and then aggregated:</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/c2f307c1-9a30-40d0-96e6-61eeac66f34d/h/547.png" style="" width="572"></p>
<h4><strong>Row-Level in Formulate:</strong></h4>
<p>The same calculation looks slightly different in Formulate.</p>
<p>Two steps are necessary:</p>
<ol>
 <li>Create the desired calculation and save it as "Formulate" in our case. Price*Quantity <p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/76e98d80-e468-4b6f-8cbd-e85c25e00315/h/547.png" style="" width="753"></p></li>
 <li>Step 2: Select "Sum" under Aggregation Blocks, then select a list, in our case TransactionsID, to include the row base. <p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/4c3aaed7-181c-44f6-a7be-c4a7fd40c6f6/h/547.png" style="" width="945"></p> <br> For the Data Point, the calculation created above can now be selected. Individually created measures can be found under the folder symbol "FX". It opens below "My Content". All formulas based on the selected model are displayed here.&nbsp; <p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/2b384953-20bd-4801-8b6f-db041799a10d/h/547.png" style="" width="1049"></p></li>
</ol>
<h4>Aggregate:</h4>
<p>With aggregates, the columns are first aggregated individually via Formulate and in the second step the calculation [{SUM([Measure A])} - {SUM([Measure B])}] / {SUM([Measure A])} is executed:</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/db7d6172-4d81-4ab9-abc1-d362dd06005b/h/547.png" style="" width="945"></p>
<p>This formula calculates profitability: {(SUM (Sales)) -(SUM(Expenses))} / (SUM(Sales)). However, you can also calculate it directly in Discover:&nbsp;&nbsp;</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/72a79668-e8ee-44fd-a8a4-e3e1c49b38ce/h/547.png" style="" width="883"></p>
<p>&nbsp;</p>
<p>The formula above can also be easily replicated via Discover by selecting the two measures and calculating a new measure.</p>
<p>If you would aggregate sales instead of using row level, you would get useless results. Here, all prices would be added up and then multiplied by the number. The result is thus distorted since no distinction is made between inexpensive and more expensive goods. On the other hand, the calculation for profitability by using Row-Level Calculation could reach a total of over 100%, since the totals are not taken as a basis for 100%.</p>
<p>In the following figure, the green box shows the results calculated at Row-Level. The red box on the right side shows the aggregate example. Here, the dark blue "Grand Totals" row is the crucial one. The two Row-Level calculations include the sum of the lower rows, while the aggregation also adds up to a meaningful percentage, rather than adding up the percentages underneath.</p>
<p>As you can see, the Totals differ from each other, so you need to think carefully beforehand about which calculation type is the correct one for your use case.</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/91c90f49-f801-44f4-af58-5b2d8b4e9bc0/h/547.png" style="" width="609"></p>
<p>&nbsp;</p>
<p>In Sales_Model and Sales_Formulate_Rowlevel (green box) the individual transactions are calculated:</p>
<p>(Price A* Quantity A + Price B *Quantity B + Price C * Quantity C ... ).</p>
<p>In Sales-Expenses/Sales (red box) all transactions are summarized:</p>
<p>[(Sales A+ Sales B+ Sales C) - (Expenses A + Expenses B + Expenses C)] /( Sales A+ Sales B+ Sales C).</p>
<p>For clarity, here is a snippet of the individual transactions:</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/d4e74635-d486-46c1-bf71-19d6fe2f9522/h/547.png" style="" width="945"></p>
<p>The "Grand Total" row is identical to the data in the previous screenshot, but this time the data has been displayed at a very small granularity, at the transaction level, so you can now clearly see the difference. While the "Sales_Model" columns reflect the respective calculation (Price* Quantity), the results for "Sales_Formulate_Rowlevel" are different to this. Only the totals for each row are shown, because the TransactionID was used to calculate the formula. The percentage calculation in the right column "Sales-Expenses/Sales" now shows the profitability for each row, please notice that the total value still does not exceed 100%.</p>
<p><strong>Attention: </strong>On transaction level different numbers are calculated, only the totals do not differ for Row-level Calculation in Pyramid Analytics! If the same dimension, which was used for calculation in Formulate, is used in the grid, Sales_Formulate_Rowlevel will not show the desired level, but the total sum. This behavior may be desired for certain applications, but you should be aware of this behavior in advance. Aggregate behaves as expected regardless of granularity.</p>
<p>Because of the behavior shown above, it may be advisable to do your row-level calculations in Model.</p>
<h3>Conclusion:</h3>
<p>The choice of the particular calculation method makes a big difference in the results. This can be the difference between useful and useless results. Row-based calculations are implemented in Pyramid Analytics in "Model" via "Calculated Columns", or via Formulate via Aggregation Blocks. Aggregates, on the other hand, are calculated via the "Formulate" or "Discover" modules. The choice of calculations should be carefully considered to suit the intended use and to always get the right result.</p>
<p>Row-Level Calculation is used when the granular level is important for the calculation as in the calculation of sales. Aggregates are used to calculate for business metrics such as profitability or return on investment.</p>]]></description>
          <pubDate>Thu, 15 Jun 2023 08:00:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/y4h47nr/decision-intelligence-blog-how-to-choose-the-right-calculation-method-in-pyramid</guid>
          <dc:creator>Debora Veh</dc:creator>
        </item>

      <item>
          <title>Pyramid 2023 Issues Addressed</title>
          <link>https://community.pyramidanalytics.com/t/60h4jrg/pyramid-2023-issues-addressed</link>
          <description><![CDATA[<p style="text-align:start">The following list enumerates all the main bug fixes in the <a href="/t/p8h4byy/pyramid-2023-released" rel="nofollow noopener noreferrer">Pyramid 2023.0 version</a>.&nbsp;</p>
<h4>Ongoing Support for Pyramid 2020</h4>
<p style="text-align:start">A new service pack (<strong>2020.28</strong>) for the last version of the platform (Pyramid 2020) has been released in tandem with the release of Pyramid 2023. It contains fixes for most customer issues resolved in 2023 (as listed below).</p>
<p style="text-align:start">2020.28 will allow customers to remain with the older platform until they have had time to test and deploy 2023.&nbsp; The release of new service packs for 2020 will continue&nbsp;<u>until the end of 2023</u>.&nbsp;</p>
<p style="text-align:start"><em>Details on the release of 2020.28 <a href="/t/60h4j5l/pyramid-2020-28-released" rel="nofollow noopener noreferrer">can be found here</a>.</em></p>
<h2 style="text-align: start;"><span class="pen4"><strong>Fixes in Pyramid 2023</strong></span></h2>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#model" rel="nofollow noopener noreferrer">Model</a></h3>
<ul>
 <li>Fixed a visual issue where relationships disappeared after processing a model</li>
 <li>Fixed an issue where the Model failed to retrieve the table list of an Oracle data source</li>
 <li>Added "Show More" and "Copy to Clipboard" buttons to error messages that appear in the SQL Editor</li>
 <li>Fixed an issue in the master flow where links between nodes in the For Each loop got removed after moving them</li>
 <li>Fixed an issue where a For Each loop stopped running after 1000 iterations</li>
 <li>Fixed an issue that was causing a hierarchy order to change</li>
 <li>Fixed a "Cannot read properties" error when connecting to Microsoft Access data source</li>
 <li>Fixed an issue where it was not possible to run a Custom Query on a Microsoft Access File</li>
 <li>Fixed an issue where a Python script node error did not present a clear error message: AttributeError: 'NoneType' object has no attribute 'shape' changed to "outputDF is not a data frame"</li>
 <li>Fixed an issue where an Azure Blob source, only some of the files appeared in the Select a File dropdown</li>
 <li>Fixed an issue where Pyramid tried creating unique indexes when processing a direct query with Azure Synapse</li>
 <li>Fixed a mapping error when using Unpivot when the UI language is set to Hebrew</li>
 <li>Fixed an issue where elements that were dragged into a large data flow appeared in the wrong location when using the Hebrew UI language</li>
 <li>Fixed an issue where Table Preview in the data flow on a BigQuery DB was using select *</li>
 <li>Fixed an IRDB paging issue that caused a specific query to return inconsistent results</li>
 <li>Fixed an issue where there was no spinner after opening a data flow and clicking on a select node, indicating that the Preview is running</li>
 <li>Fixed an issue where a message saying "The process is queued for execution" appeared in the Progress panel, although the model was not run</li>
 <li>Fixed an issue where Pyramid tried to create a new database, although Use Existing Database was selected in the Snowflake Target node</li>
 <li>Fixed an issue where processing a model based on BigQuery which was using OAuth had failed with a "OAuth2Credentials instance does not support refreshing the access token" error</li>
 <li>Fixed a "Table does not exist" error when running a data model that writes to BigQuery</li>
 <li>Fixed an issue where incorrect roles were assigned to a new/imported model</li>
 <li>Fixed an OutOfMemoryException error that was thrown although there was sufficient available memory</li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#discover" rel="nofollow noopener noreferrer">Discover</a></h3>
<ul>
 <li><h4 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#queries" rel="nofollow noopener noreferrer">Queries</a></h4>
  <ul>
   <li>Fixed an issue where&nbsp; a query failed when using two Parent Child hierarchies and an AVG formula in a report</li>
   <li>Fixed an issue where a Search in a global parameter filter did not work</li>
   <li>Fixed an issue where a report appeared blank after a change to a combined elements filter</li>
   <li>Quick sort by values is now disabled when the cross-axis is empty</li>
   <li>Fixed an issue where using Change Caption on a BW attribute caused the measure format to change</li>
   <li>Fixed multiple cache issues</li>
   <li>Fixed an issue where using Sub Query Mode with Explicit Lists caused an MDX error</li>
   <li>Fixed an issue where a Sort created duplicate Rows</li>
   <li>Fixed an issue where the 'Hide query error messages from non-admin users' setting didn't work for reports that were already opened</li>
   <li>Fixed an issue that was causing a report to fail when it was using a Parent-Child Hierarchy with an unreachable circular reference between elements</li>
   <li>Fixed an MDX error when using an MTD calculation on SAP BW</li>
   <li>Fixed an issue where Grand Totals were calculated incorrectly in an OLAP cube</li>
   <li>Fixed an issue where a discover failed to run with a "failed run SQL query in model source" error when loaded</li>
  </ul></li>
 <li><h4 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#visualizations" rel="nofollow noopener noreferrer">Visualizations</a></h4>
  <ul>
   <li>Fixed an issue where a line chart was cut off when the chart had a zero value and Auto Scale Bounds</li>
   <li>Fixed an issue where the Custom Y-axis Scale bounds did not allow negative values</li>
   <li>Fixed an issue where a report did not show results when moving between visuals unless Autorun was on</li>
   <li>Fixed an issue where some X-Axis labels were cut off</li>
   <li>Fixed an issue where axis values appeared with a scientific notation</li>
   <li>Fixed an issue that was causing the browser to crash when switching between Discovery tabs</li>
   <li>Fixed an issue where the Dimension Panel and Data Source information did not load in a Discovery report</li>
   <li>Fixed an issue where a Viewer user in Analyze Further could not add a Longitude measure into the Map Location dropzone</li>
   <li>Fixed a slicer issue that was causing a blank screen when clicking analyze further</li>
   <li>Fixed an issue where a blank screen appeared while working on a Discovery</li>
   <li>Added a new "Always start from 0" option in the Scale Bounds allowing to hide negative values</li>
  </ul></li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#present" rel="nofollow noopener noreferrer">Present</a></h3>
<ul>
 <li>Fixed a cascading filter issue which was causing the interacted content to fail after selecting all items in the filter</li>
 <li>Fixed an issue where adding multi-select tree filters from the same hierarchy to a Present caused the filters to keep loading</li>
 <li>Fixed an issue where targets could not be added to a tiled presentation</li>
 <li>Fixed an issue where a report in Analyze Further could not be modified</li>
 <li>Fixed an issue where a parameter that was dragged from a discover to a present could be set as a tree slicer</li>
 <li>Fixed an issue where a direct link to a Present opened the wrong present when using OpenID while in Incognito mode</li>
 <li>Fixed an issue where a filter did not run when running the presentation</li>
 <li>Fixed an Interaction issue from a grid to a mini tab</li>
 <li>Fixed an issue where changing the initial selection of a calculation that used a global parameter caused an error</li>
 <li>Fixed an issue where the Dynamic Text did not update on a Cover Page</li>
 <li>Fixed an issue where Present Mini tabs failed to load after clicking on undo/reset</li>
 <li>Fixed an issue where a Present based on a SQL data source was timing out after an upgrade to 2020.27</li>
 <li>Fixed an issue where multiple grid rows were highlighted after clicking on a single item on rows</li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#publish" rel="nofollow noopener noreferrer">Publish</a></h3>
<ul>
 <li>Fixed an issue where a change to the subscription time of a Presentation caused its filter selection to reset to the default value</li>
 <li>Added paging to the Schedule Manager for Viewer Users</li>
 <li>Fixed an issue where schedules stopped running due to a time zone change</li>
 <li>Fixed an issue where a subscription was printed with an incorrect filter selection</li>
 <li>Fixed an issue where bold text in a Publication was not applied to a printed PowerPoint output</li>
 <li>Fixed an issue where deleted filter caused a scheduled job to fail</li>
 <li>Fixed an issue where images on the Content page covered visuals in a scheduled publication print</li>
 <li>Fixed a printing issue with a publication that had a page repeater and a page trigger</li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#formulate" rel="nofollow noopener noreferrer">Formulate</a></h3>
<ul>
 <li>Fixed an issue where a format string behaved differently after an upgrade</li>
 <li>Fixed a blank screen issue when editing a parameter</li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#illustrate" rel="nofollow noopener noreferrer">Illustrate</a></h3>
<ul>
 <li>Fixed an issue where a dynamic illustration was updated incorrectly based on a filter selection</li>
</ul>
<p>&nbsp;</p>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#content-management" rel="nofollow noopener noreferrer">Content Management</a></h3>
<ul>
 <li>Fixed an issue where a message saying "There was an error opening the file" appeared when trying to run or edit a Present</li>
 <li>Fixed an issue where the Search results returned deleted content for a Viewer user</li>
 <li>Fixed an issue where a user couldn't create folders under Workgroup content</li>
 <li>Fixed an issue where a user couldn't delete/purge items</li>
 <li>Fixed an issue where data sources marked as Favorites did not appear in the Favorites panel</li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#printing-export" rel="nofollow noopener noreferrer">Printing / Export</a></h3>
<ul>
 <li>Fixed an issue where exporting a Publication to PowerPoint had cut-off columns of the grid when using Scale to fit</li>
 <li>Fixed an issue where a pdf export was blank after exporting a map in discovery and selecting the No Scale option</li>
 <li>Fixed an issue where exporting to CSV did not work for a Tabular gird with Sort enabled</li>
 <li>Fixed an issue where a print to CSV contained the filter selection of the report</li>
 <li>Fixed an issue where a shape used as a background of a grid appeared on top of it in a print</li>
 <li>Fixed an issue where a drill-through action export contained more records than expected</li>
 <li>Fixed an issue where printing a tiled presentation with an illustration to a PDF produced a blank print</li>
 <li>Fixed an issue where zero values in a grid did not appear in an Excel export</li>
 <li>Fixed a formatting issue in Excel with content that contained multiple charts</li>
 <li>Fixed an issue where a Unicode character that appeared in an Excel print prevented creating a calculation within the Excel</li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#admin" rel="nofollow noopener noreferrer">Admin</a></h3>
<ul>
 <li>Fixed an issue where the "Reset Password Every XX Months" when using Database Authentication did not work as expected</li>
 <li>Fixed an issue where a SQL Connection parameter caused a connection error</li>
 <li>Fixed an issue where a Mongo DB connection did not work through Pulse</li>
 <li>Fixed an issue where NULL server name values got added to the db after an upgrade and caused an error when trying to view the databases in the Admin Console</li>
 <li>Fixed a Multitenancy issue where a domain admin could not view a data source on a different tenant</li>
 <li>Fixed an issue where an admin couldn't set up the auth method to Windows auth alternative account for SQL server</li>
 <li>Fixed an issue where changing Database List Technique did not reflect in the UI</li>
 <li>Fixed an issue where making bulk changes to the role security in the Data Source Manager did not take the selection in the Tenant Name filter into account</li>
 <li>Fixed a SQL data source connection issue where Pyramid did not use the custom port in the Port field</li>
 <li>Fixed an issue where the Pyramid ad groups failed to sync when using an Oracle repository</li>
 <li>Fixed an Azure Synapse connectivity issue after the 2020.27 upgrade</li>
 <li>Fixed an issue where testing a Databricks connection failed with a missing JDBC connector error</li>
 <li>Fixed an issue where an error 500 occurred when setting up an Oauth data source with incorrect details</li>
 <li>Fixed an issue where errors appeared in the system logs each time a user who didn't have access to the internet logged in</li>
 <li>Added a new "Enable characteristic structures" checkbox in the SAP BW server setting to fix an issue where BW measures appeared as attributes</li>
 <li>Fixed an issue where if Provisioning was disabled, Pyramid still tried to sync the AD groups set up in Provisioning jobs based on the "AD sync time interval" setting or when Run Now was clicked in the System Schedule</li>
 <li>Fixed an issue where Pyramid always used Sync Method 1 when clicking on Run Now in the System Schedule</li>
 <li>Fixed an issue where the System Info did not show accurate RAM info</li>
 <li>Added the option to manually enter a project name into the Big Query data source connection settings</li>
 <li>Added a message indicating that the "Enforce SSL secure cookies and pages" setting will take effect after restarting the web servers</li>
 <li>Added support for the "af-south-1" region for Amazon Athena</li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#api" rel="nofollow noopener noreferrer">API</a>s</h3>
<ul>
 <li>Fixed an issue where purging a folder using the API didn't purge all the subfolders</li>
 <li>Fixed an issue where Pyramid showed an empty Proxy Account 2 after using /createUserSaml and adding a proxy2 value</li>
 <li>Fixed an issue where /access/getUser showed the principle name as the proxy account</li>
 <li>Improved performance of findcontentItem</li>
 <li>Fixed an error when trying to find the ID of a folder using /content/findContentItem</li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#mobile" rel="nofollow noopener noreferrer">Mobile</a></h3>
<ul>
 <li>Fixed an issue where the iPhone PyramidMobileAuth header had no value when logging in through SAML</li>
 <li>Fixed an issue where a preset that was opened with a Direct Link on an iPhone didn't resize correctly after rotating the screen</li>
 <li>Fixed an issue where the mobile application used the English UI language, although Hebrew was selected</li>
 <li>Fixed an issue where interactions didn't work as expected in a dashboard that was opened with a direct link on a mobile device</li>
 <li>Fixed an issue where a filter was unresponsive in Present on the mobile app</li>
 <li>A new Android app version has been published</li>
 <li>Fixed an issue where a Direct Link to a folder in mobile went to the Recent folder and not the linked folder</li>
</ul>
<h3 class="toc__permalink"><a href="/t/60hg3fa/pyramid-2020-20-issues-addressed#other" rel="nofollow noopener noreferrer">Other</a></h3>
<ul>
 <li>Fixed an issue where a Present appeared with the desktop layout when running on a tablet</li>
 <li>Fixed an issue where the upper toolbar of the iPhone was overlying the Present</li>
 <li>Fixed an issue where the size of bubbles on a map was inconsistent between a report and a report snapshot in a conversation</li>
 <li>Fixed an issue where after upgrading to Pyramid 2020.27, users couldn't log in via OpenID when using a proxy</li>
 <li>Fixed an issue where Snowflake OAuth failed to insert a token into the database or read it</li>
 <li>Fixed an OpenID log-in issue where it was not possible to log in due to a missing / in the redirect URL</li>
 <li>Fixed an issue where OpenID failed to authenticate when an array was sent in the OAuth Token</li>
 <li>Fixed an OpenID log-in issue after upgrading to 2020.27</li>
 <li>Fixed an issue where Pyramid was unreachable after restarting the routers</li>
 <li>Fixed an installation failure issue when using Oracle 19c as a repository</li>
 <li>The Pyramid Maintenance Tool now works on Linux</li>
</ul>
<h3>Security</h3>
<p>Numerous third party libraries in the platform have been upgraded to eliminate vulnerabilities - covering both Java and JavaScript.</p>
<h3>Performance</h3>
<p>Numerous adjustments to the application have been made to improve client-side performance and memory management.</p>]]></description>
          <pubDate>Tue, 13 Jun 2023 14:13:54 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/60h4jrg/pyramid-2023-issues-addressed</guid>
          <dc:creator>Itamar Birenzweig</dc:creator>
        </item>

      <item>
          <title>Pyramid 2023: Your Product Ideas Delivered</title>
          <link>https://community.pyramidanalytics.com/t/h7h4rs0/pyramid-2023-implemented-product-ideas</link>
          <description><![CDATA[<p style="text-align:start">The following list highlights all the customer product ideas and suggestions on this forum that have been implemented in <a href="/t/p8h4byy/pyramid-2023-released" rel="nofollow noopener noreferrer">Pyramid "Archimedes" 2023</a>.&nbsp;</p>
<p style="text-align:start">&nbsp;</p>
<p style="text-align:start">Modeling</p>
<ul>
 <li><a href="/t/x2hanjk/data-catalog-export-to-external-repository" rel="nofollow noopener noreferrer">Data catalog export to an external repository</a></li>
 <li><a href="/t/p8hb31x/table-connection-view-in-model" rel="nofollow noopener noreferrer">Table connection view in the Model</a></li>
 <li><a href="/t/80cq7z/add-a-dimension-usage-to-imdb-models" rel="nofollow noopener noreferrer">Add a dimension usage to IMDB models</a></li>
</ul>
<p>Discover</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;Visualizations</p>
<ul>
 <li><a href="/t/h7htqw9/ibcs-add-ons-or-additional-visuals" rel="nofollow noopener noreferrer">IBCS add-ons or additional visuals</a></li>
 <li><a href="/t/60hmvsj/advanced-design-in-presentation" rel="nofollow noopener noreferrer">Advanced design in the Presentation</a></li>
 <li><a href="/t/83ht3f8/grid-sizing-shrink-columns-to-data" rel="nofollow noopener noreferrer">Grid sizing shrink columns to data</a></li>
 <li><a href="/t/y4hb9kp/chart-labels-show-minmax-most-recent-allow-overlap" rel="nofollow noopener noreferrer">Chart labels show Min, Max, Most recent and allow overlap</a></li>
 <li><a href="/t/x2hkm08/dynamic-or-adjustable-size-for-panel-used-with-tree-drop-down" rel="nofollow noopener noreferrer">Dynamic or adjustable size for panel used with tree drop down</a></li>
 <li><a href="/t/p8hagcn/react-component-feature-request" rel="nofollow noopener noreferrer">React component feedback</a></li>
 <li><a href="/t/35h5ccz/have-data-labels-show-for-every-slice-in-a-pie-chart" rel="nofollow noopener noreferrer">Enable data labels visibility for every slice in a pie chart</a></li>
</ul>
<p>&nbsp;&nbsp;&nbsp;&nbsp;Analytics and Functionality</p>
<ul>
 <li><a href="/t/p8hm596/totals-for-stacked-column-chart" rel="nofollow noopener noreferrer">Totals for stacked column chart</a></li>
 <li><a href="/t/m1hxaca/totals-individual-column-aggregations" rel="nofollow noopener noreferrer">Totals individual column aggregations</a></li>
 <li><a href="/t/x2h1qlz/re-ordering-slicers-in-the-hidden-panel" rel="nofollow noopener noreferrer">Re ordering slicers in the hidden panel</a></li>
 <li><a href="/t/m20v83/selecting-all-in-filtered-filters-should-select-only-filtered-entries" rel="nofollow noopener noreferrer">Selecting all in filtered filters should select only filtered entries</a></li>
 <li><a href="/t/83h02p8/when-searching-in-a-multi-select-tree-slicer-the-all-select-should-only-select-the-filtered-results" rel="nofollow noopener noreferrer">When searching in a multi select tree slicer the all select should only select the filtered results</a></li>
 <li><a href="/t/q6h6bwk/allow-bin-by-size-to-use-parameter" rel="nofollow noopener noreferrer">Allow bin by size to use parameter</a></li>
 <li><a href="/t/m2jd61/drill-up-to-all-member-member" rel="nofollow noopener noreferrer">Drill up to all member</a></li>
 <li><a href="/t/y4haw4l/expand-down-all-elements-in-a-column" rel="nofollow noopener noreferrer">Expand down all elements in a column</a></li>
 <li><a href="/t/x2hmdhz/auto-selecting-items-when-searching-in-a-slicer" rel="nofollow noopener noreferrer">Auto selecting items when searching in a slicer</a></li>
 <li><a href="/t/p8hb9k0/multiselect-tree-slicer-description-tooltip-or-expansion" rel="nofollow noopener noreferrer">Multiselect tree slicer description tooltip or expansion</a></li>
 <li><a href="/t/60hd2kj/runtime-option-to-remove-a-dimension-on-a-grid" rel="nofollow noopener noreferrer">Runtime option to remove a dimension on a grid</a></li>
 <li><a href="/t/83hangz/select-all-from-selection-option-for-multi-select-filters" rel="nofollow noopener noreferrer">Select all from selection option for multi select filters</a></li>
 <li><a href="/t/y4h7kn5/size-and-position-for-panels-as-per-shapes" rel="nofollow noopener noreferrer">Size and position for panels as per shapes</a></li>
 <li><a href="/t/83hm963/list-reordering" rel="nofollow noopener noreferrer">List reordering</a></li>
 <li><a href="/t/35h191k/show-serverdatabasemodel-path-on-analyze-further" rel="nofollow noopener noreferrer">Show server database model path on analyze further</a></li>
 <li><a href="/t/m1hardk/ability-to-hide-the-start-new-conversation-option-when-using-custom-workflows" rel="nofollow noopener noreferrer">Ability to hide the start new conversation option when using custom workflows</a></li>
 <li><a href="/t/g9hl085/hide-roles-as-recipients-in-conversations" rel="nofollow noopener noreferrer">Hide roles as recipients in conversations</a></li>
 <li><a href="/t/q6hjkgn/change-the-default-email-text" rel="nofollow noopener noreferrer">Change the default email text</a></li>
 <li><a href="/t/h7ht2kq/multi-select-filter-available-in-analyze-further" rel="nofollow noopener noreferrer">Multi-select filter available in 'Analyze Further'</a></li>
 <li><a href="/t/x2hwjp1/slicer-enhancements" rel="nofollow noopener noreferrer">Slicer enhancements</a></li>
 <li><a href="/t/m1hc7w3/viewer-license-some-features-have-been-removed-conversations-submenus-in-dropzones-in-the-current-version" rel="nofollow noopener noreferrer">Viewer License: Some features have been removed (conversations, submenus in Dropzones) in the current version</a></li>
 <li><a href="/t/60h671j/provide-ability-to-use-variable-in-rolling-average-context-calc" rel="nofollow noopener noreferrer">Provide ability to use Variable in Rolling Average Context Calc</a></li>
</ul>
<p>Present</p>
<ul>
 <li><a href="/t/p8h1836/saving-slicer-selection-views-in-a-presentation" rel="nofollow noopener noreferrer">Saving slicer selection views in a presentation</a></li>
 <li><a href="/t/x2h1qlz/re-ordering-slicers-in-the-hidden-panel" rel="nofollow noopener noreferrer">Re ordering slicers in the hidden panel</a></li>
 <li><a href="/t/x1bd2p/re-order-hidden-slicers-in-presentation" rel="nofollow noopener noreferrer">Re order hidden slicers in presentation</a></li>
 <li><a href="/t/g9hbyqn/simple-calculations-with-different-dynamic-texts" rel="nofollow noopener noreferrer">Simple calculations with different dynamic texts</a></li>
</ul>
<p>Embed</p>
<ul>
 <li><a href="/t/q6hn1sz/resetback-buttons-in-embedded-version" rel="nofollow noopener noreferrer">Reset back buttons in embedded version</a></li>
 <li><a href="/t/m1hma8z/embed-new-smart-discovery-option" rel="nofollow noopener noreferrer">Embed new smart discovery option</a></li>
 <li><a href="/t/q6hangf/pyramid-embed-allow-for-full-screen-option#m1ha0jt" rel="nofollow noopener noreferrer">Pyramid embed allow for full screen option</a></li>
 <li><a href="/t/g9h021j/bring-runtime-navigation-through-on-embedded-dashboards" rel="nofollow noopener noreferrer">Bring runtime navigation through on embedded dashboards</a></li>
 <li><a href="/t/q6hangf/pyramid-embed-allow-for-full-screen-option" rel="nofollow noopener noreferrer">Pyramid Embed - Allow for Full-Screen option</a></li>
</ul>
<p>Content Export</p>
<ul>
 <li><a href="/t/x2h7dv9/print-to-excel-breadcrumbs" rel="nofollow noopener noreferrer">Print to excel breadcrumbs</a></li>
 <li><a href="/t/x2hmrdf/allow-publications-to-have-an-expiration-date" rel="nofollow noopener noreferrer">Allow publications to have an expiration date</a></li>
 <li><a href="/t/m1hwzjg/allow-removal-of-subtitlesbreadcrumbs-from-scheduled-excel-publications" rel="nofollow noopener noreferrer">Allow removal of subtitles breadcrumbs from scheduled excel publications</a></li>
 <li><a href="/t/83hd7xj/dynamic-subscriptions-on-presentations" rel="nofollow noopener noreferrer">Dynamic subscriptions on presentations</a></li>
</ul>
<p>Content Management</p>
<ul>
 <li><a href="/t/m1harzc/search-items-by-id?r=60haspg#60haspg" rel="nofollow noopener noreferrer">Search items by id</a></li>
 <li><a href="/t/83h8wx3/allow-save-in-analyze-further-when-a-report-is-opened-via-an-action" rel="nofollow noopener noreferrer">Allow save in analyze further when a report is opened via an action</a></li>
 <li><a href="/t/83hm13f/ability-to-set-save-to-automatically-save-as-new-version" rel="nofollow noopener noreferrer">Ability to set save to automatically save as new version</a></li>
</ul>
<p>Administrative</p>
<ul>
 <li><a href="/t/m1h598j/specify-emails-to-which-admin-alerts-are-sent-threshold-level-at-which-alerts-get-sent" rel="nofollow noopener noreferrer">Specify emails to which admin alerts are sent threshold level at which alerts get sent</a></li>
 <li><a href="/t/m1hwamp/please-add-logging-to-the-router-service" rel="nofollow noopener noreferrer">Add logging to the router service</a></li>
 <li><a href="/t/h7hah4m/add-app-experience-option-to-disable-learninghub-or-change-its-url" rel="nofollow noopener noreferrer">Add 'App Experience' option to disable LearningHub or change its URL</a></li>
 <li><a href="/t/m1hbxxq/user-usage-analytics" rel="nofollow noopener noreferrer">User usage analytics</a></li>
 <li><a href="/t/g9hy8xs/ability-to-embed-help-desk-widget" rel="nofollow noopener noreferrer">Ability to embed help desk widget</a></li>
</ul>
<p>Authentication and security</p>
<ul>
 <li><a href="/t/83hs9rj/more-granular-authorisations-for-data-model-and-data-source" rel="nofollow noopener noreferrer">More granular authorisations for data model and data source</a></li>
 <li><a href="/t/35hwcgs/windows-authentication-for-powerbi-workspaces" rel="nofollow noopener noreferrer">Windows authentication for PowerBI workspaces</a></li>
 <li><a href="/t/m1hf0jc/save-login-data-via-mobile-app-using-saml" rel="nofollow noopener noreferrer">Save login data via mobile app using SAML</a></li>
</ul>
<p>&nbsp;</p>
<p><span id="cke_bm_210S" style="display: none;">&nbsp;</span><a href="/t/y4h0rfr/pyramid2020-27-released" rel="nofollow noopener noreferrer"><img alt="" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/0b6d2b73-d9a7-4ae1-9e35-5bef080912ef/h/547.jpg" style="padding:0px"></a>&nbsp;<a href="/t/p8h4byy/pyramid-2023-released" rel="nofollow noopener noreferrer">Back to&nbsp;Pyramid 2023 release announcement</a></p>]]></description>
          <pubDate>Tue, 13 Jun 2023 14:13:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h7h4rs0/pyramid-2023-implemented-product-ideas</guid>
          <dc:creator>Richard Osbourn</dc:creator>
        </item>

      <item>
          <title>Decision Intelligence Blog: Leveraging Pyramid Analytics to Migrate to Data Mesh Architecture (Guest Blog)</title>
          <link>https://community.pyramidanalytics.com/t/83h4lwp/decision-intelligence-blog-leveraging-pyramid-analytics-to-migrate-to-data-mesh-architecture-guest-blog</link>
          <description><![CDATA[<h2>Leveraging Pyramid Analytics to Migrate to Data Mesh Architecture</h2>
<p><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/72b9bd45-4d16-4fc3-b7ab-31ae01e4f3b8/h/547.png" style="float:left" width="155"></p>
<p>This Blog has been written by&nbsp;<span class="mention" data-href="/profile/h7hz6ar" role="button">Mastaneh Nikroo</span>&nbsp; from our Partner Reply.</p>
<p>&nbsp;</p>
<p>In today’s world, data plays a crucial role in organisations and is one of the determinants of their success. All businesses and enterprises are focusing on their data management approach and creating added value through their data products. Data is growing at a faster rate than ever due to new technologies such as IoT and Cloud. Indeed, 90% of the world’s data was created in the last two years and every two years, the volume of data across the world doubles in size.</p>
<p>By growing the size of organisations and also the amount of data they produce or consume, the existence of efficient data management and data architecture is inevitable. An inefficient data architecture creates bottlenecks in accessing the necessary data for different teams and increases the environmental footprint of the data storage. By optimising the data flows and accesses, Data Mesh creates value for the enterprise, all stakeholders, and the environment.</p>
<p>In this article, we will explore Data Mesh Architecture and how Pyramid Analytics can be used to migrate to this data architecture. The first section introduces the concept of data mesh and its importance and necessity in data governance. The next section explores the breadth of tools in Pyramid Analytics’ platform that can help facilitate with the transition to a Data Mesh Architecture.</p>
<h3>What is a Data Mesh</h3>
<p>Originally, organisations used central data teams to manage their data, however this process proved to be inefficient in large organisations with different domain teams, as a central data team would often become a bottleneck by being unable to grant access to necessary data sources for different domain teams on time.<br> As a result, Data Mesh Architecture was developed as a much more streamlined way&nbsp;of managing data. Data Mesh decentralises the ownership of data from the central team to domain teams and allows the domain teams to conduct cross-domain data analysis on their own. This results in domain-orientated decentralisation which creates better and more efficient access to data sources in each domain team, which in turn creates business value.&nbsp; The Data Mesh Architecture generates a platform for creating, monitoring, discovering and accessing data products.</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/c8daa380-4891-4b43-8ab8-5ff3ed109eb7/h/547.png" style="" width="648"></p>
<h3>Main Characteristics of Data Mesh</h3>
<p>There are four main features that distinguishes a Data Mesh when compared to other types of data architecture:</p>
<ul>
 <li><em><strong>Domain Ownership:</strong></em> This shifts the responsibility and accountability of the data to the domain teams.</li>
 <li><em><strong>Self-Serve Data Platform:</strong></em> This feature provides access to high-level infrastructure abstractions for users.</li>
 <li><em><strong>Data as a Product:</strong></em> It solves the problems related to data quality and data silos. According to this principle, data is not a siloed product but a business product that benefits different stakeholders.</li>
 <li><em><strong>Federated Computational Governance:</strong></em> creates shared responsibility between the domains and the central Data team and allows adequate autonomy for each domain.</li>
</ul>
<p>Thanks to these principles, each domain team will be in charge of its own operational and&nbsp;analytical data, data security, and compliance. Data Mesh enables the domain teams to be able&nbsp;to ingest operational data,&nbsp;create their own analytical data, and grant access for other teams to&nbsp;use their published data.</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/0c77422c-863d-4981-ab13-f68a2595a9eb/h/547.png" style="" width="650"></p>
<h3>Using the Pyramid Tenant System to Migrate to Data Mesh Architecture</h3>
<p>The Content Management System (CMS) in the Pyramid platform facilitates the migration to Data Mesh Architecture. CMS provides the possibility to define different groups of users and refer to&nbsp;each group as a tenant. All users in a tenancy share the same privileges in terms of accessing&nbsp;the software. Besides, the Multi Tenancy feature enables different tenants to co-exist on a single&nbsp;instance of the platform and the central data team has visibility and control across all tenants.&nbsp;</p>
<p>In addition, CMS provides the chance for the central data team to assign domain admins who&nbsp;can freely manage all the users, roles, data sources, profiles, logs and licencing within their&nbsp;respective tenant domains.&nbsp;Content Management System (CMS) in the Pyramid platform facilitates the migration to Data&nbsp;Mesh Architecture. CMS provides the possibility to define different groups of users and refer&nbsp;to each group as a tenant. This allows different tenants to coexist on a single instance of the&nbsp;platform and the central data team has visibility and control across all tenants. In addition, the&nbsp;CMS admin (enterprise admin) provides the chance for the central data team to assign domain&nbsp;admins who can freely manage all the users, roles, data sources, profiles, logs and licensing&nbsp;within their respective tenant domains. A tenant admin can set up tenant-specific data source&nbsp;connections which cannot be viewed or accessed by users in a different tenant. Users within a&nbsp;tenant can be added to specific roles which the tenant or enterprise admin can use to control&nbsp;row-level security to the connected data sources.</p>
<p><em><strong>How would this look like in the CMS:</strong></em></p>
<p><em>Overview of total available Data Products in the System</em></p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/ef3248dd-4a67-4740-8854-4cf26657cacd/h/547.png" style="" width="1552"></p>
<p>Available Data Sources in the Data Landscape</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/b135710a-af5e-433a-9061-a4aeaaeacc44/h/547.png" style="" width="1550"></p>
<p>Selection of Curated Data sources with Access Management and Metadata Information</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/b42ae7eb-3d94-41b0-9a3f-1c8405e5d629/h/547.png" style="" width="1550"></p>
<p>&nbsp;</p>
<h3>Cross-Tenant Content and Roles</h3>
<p>Cross-tenant content refers to the content seen and accessible by different tenants without having to create duplicates and it can only be set and managed by the Central Data Team. Cross-tenant roles allow users to join roles outside of their own tenancy. This feature allows domain admins to add and remove users, from outside their domain/tenancy, to existing&nbsp; roles without Enterprise admins.</p>
<h3>Conclusion:</h3>
<p>In summary, Data Mesh Architecture offers a much more efficient way of managing data and through Pyramid’s CMS and other features such as Multi-Tenancy, the transition to data mesh can be achieved with relative ease.</p>
<p>&nbsp;</p>
<p>by&nbsp;<span class="mention" data-href="/profile/h7hz6ar" role="button">Mastaneh Nikroo</span>&nbsp;from our Partner Reply, read the full whitepaper on DataMesh and ESG here:&nbsp;<a href="https://www.reply.com/data-reply/en/Data-Mesh-ESG-and-Leveraging-Pyramid-Anaytics" rel="nofollow noopener noreferrer" target="_blank">https://www.reply.com/data-reply/en/Data-Mesh-ESG-and-Leveraging-Pyramid-Anaytics</a>&nbsp;</p>]]></description>
          <pubDate>Tue, 23 May 2023 14:46:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/83h4lwp/decision-intelligence-blog-leveraging-pyramid-analytics-to-migrate-to-data-mesh-architecture-guest-blog</guid>
          <dc:creator>Mastaneh Nikroo</dc:creator>
        </item>

      <item>
          <title>Decision Intelligence Blog: Reports, Dashboarding and Color Blindness</title>
          <link>https://community.pyramidanalytics.com/t/g9h48j3/decision-intelligence-blog-reports-dashboarding-and-color-blindness</link>
          <description><![CDATA[<h2><strong>Reporting and Dashboarding Tips and Tricks</strong></h2>
<p>Using reports and dashboards to analyse business performance and make decisions is a fundamental aspect of a Decision Intelligence strategy. However, it is possible to get a little carried away when developing this type of content as we have so many options and possibilities to make our visualizations ‘stand out’, particularly when using color and images. In this series of articles we will look into different aspects of report and dashboard design.</p>
<h3 style="text-align: left;">Building Dashboard for Visually Impaired users</h3>
<p style="text-align:left">To kick off, we will look into colours, most specifically, how some choices will work out for people with colour blindness. 1 in 12 men and 1 in 200 women suffer from some type of colour blindness or CVD (colour vision deficiency). Bearing this fact in mind, we should be aiming at making our visualizations as user-friendly as possible.&nbsp;&nbsp;</p>
<p style="text-align:left">In this entry, we will showcase five color combination do’s and don’t’s, explained in simple terms, so they’re easy to remember and apply in everyday visualizations. At the end of this article, you will find some user-friendly color palette suggestions.&nbsp;</p>
<h3 style="text-align: left;">Types of Color Blindness&nbsp;</h3>
<p style="text-align:left">There are different types of color blindness, although most users with CVD will struggle with reds, oranges, yellows, browns and greens. You can see below an example of how these colors might look like to users with Deuteranopia and Protanopia. &nbsp;</p>
<p style="text-align:center"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/8472325f-bbdb-4b46-9b4b-f59e92d49573/h/547.png" style="" width="500"></p>
<ol>
 <li style="text-align: left;"><strong>First Tip:</strong> Avoid using green and red. These are the colours that will present most issues to your CVD&nbsp; audience. Some shades of these colors can be extremely problematic as seen in the example below.&nbsp; <p style="text-align:center"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/838bbeeb-d159-48cc-bf84-3fa5775e77c3/h/547.png" style="" width="285"></p> <p style="text-align:center"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/6e39d504-46ad-4107-9a5d-6a500c0c10fd/h/547.png" style="" width="282"></p> Other color combinations to avoid are:&nbsp;<br> GREEN + brown<br> GREEN + blue&nbsp;<br> GREEN + grey&nbsp;<br> GREEN + black&nbsp;<br> LIGHT GREEN + yellow&nbsp;<br> BLUE + grey&nbsp;<br> BLUE + purple&nbsp;</li>
 <li style="text-align: left;"><strong>Second Tip: </strong>However, if you really need to use one of these combinations, a good solution will be using a lighter shade of one of the colors; and a darker shade of the other one, so the difference won’t lie in the actual colour itself, but on the contrast between shades.&nbsp;&nbsp;&nbsp;<br> In this example, we have used a darker red and a lighter green. The difference now is much more obvious for CVD users.&nbsp; <p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/84313c8b-f6ed-4003-95e1-41483c937321/h/547.png" style="" width="285"></p></li>
 <li style="text-align: left;"><strong>Third Tip:</strong> We can follow the same dark/light shade principle; this time, using a monochromatic palette.&nbsp;&nbsp;<br> For example, using grey scales are a great, safe alternative to using colour. The color palette presented below will be perceived the same for CVD and non-CVD users.&nbsp; <p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/bdef2fa8-ee69-44d0-b84d-c5460b68c1fc/h/547.png" style="" width="380"></p> If you would still like to use color, stick to one monochromatic palette, e.g. using blue from the darkest shade to the lightest. <p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/712120e5-14f5-4a84-a39a-9586a93f223d/h/547.png" style="" width="500"></p> &nbsp;</li>
 <li style="text-align: left;"><strong>Fourth Tip:</strong> If you would like to use two colors, try to use blue and orange. These will always be your ally, as they are considered the best color-friendly palette because of their evident contrast!&nbsp; <p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/4e911499-17dd-47bd-af4e-14be1bf9c00a/h/547.png" style="" width="500"></p></li>
 <li style="text-align: left;"><strong>Fifth Tip:</strong> USER-FRIENDLY COLOR PALETTES&nbsp;<br> Visit the <a href="https://venngage.com/tools/accessible-color-palette-generator#colorGenerator" rel="nofollow noopener noreferrer" target="_blank">Venngage website</a> for more information on user-friendly, accessible color palettes. Some suggestions:&nbsp;<br> <em><strong>Palette 1&nbsp;</strong></em> <p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/4bc5313f-da08-432c-9c61-51c6e7d2a4be/h/547.png" style="" width="500"></p> <br> <em><strong>Palette 2&nbsp;</strong></em> <p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/08c60d07-3cb7-49f8-b6df-80bca26c0196/h/547.png" style="" width="500"></p> <br> <em><strong>Palette 3&nbsp;</strong></em> <p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/762e1175-2d81-44b4-a0f0-ca29c3b3a859/h/547.png" style="" width="500"></p> <br> <em><strong>Palette 4&nbsp;</strong></em> <p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/68c7a16b-41f7-4dcc-8490-d164490053fd/h/547.png" style="" width="500"></p></li>
</ol>
<p style="text-align:left">Learn more about how to set your own color palette in Pyramid and use these Themes across a variety of Modules in this Learning Live Session.&nbsp;&nbsp;<a href="/t/h7hsrks/learning-live-how-to-use-themes-in-pyramid" rel="nofollow noopener noreferrer">How to use Themes in Pyramid</a></p>
<p style="text-align:left">Can you think of any visualizations you have worked on recently that could be more user-friendly if applying these easy principles? Let us know your experiences with Report Design and how you handle these Topics in your Pyramid Environment.</p>
<p style="text-align:left">Thank you for your time.</p>
<p style="text-align:left">*Title Picture from:&nbsp;<a href="https://www.colourstudies.com/blog/2019/9/5/colour-blind-test" rel="nofollow noopener noreferrer" target="_blank">https://www.colourstudies.com/blog/2019/9/5/colour-blind-test&nbsp;</a></p>
<p style="text-align:left">&nbsp;</p>
<p style="text-align:left">&nbsp;</p>]]></description>
          <pubDate>Mon, 15 May 2023 15:51:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/g9h48j3/decision-intelligence-blog-reports-dashboarding-and-color-blindness</guid>
          <dc:creator>Sandra Caballer</dc:creator>
        </item>

      <item>
          <title>Pyramid&#x27;s Product Development Process</title>
          <link>https://community.pyramidanalytics.com/t/h7haz0l/pyramids-product-development-process</link>
          <description><![CDATA[<h2>What should go into the next release?</h2>
<p>We're working on a number of new 'mega' features for Pyramid right now - you may have seen the announcements about Tabulate and Solve&nbsp; - and there will be lots more included in the upcoming 'Archimedes' release for 2023.</p>
<p>A question that we get asked all the time:&nbsp;"How do you decide what to put in each new release?"</p>
<p>To answer this question, there are three main things we consider:</p>
<ol>
 <li>Requests from our customers and&nbsp;partners (check out our User Community and customer forums).</li>
 <li>What is going on in the market - both generally and among similar technologies in the space.</li>
 <li>An appraisal of our original design paradigm for Pyramid and the platform.</li>
</ol>
<p>These are not in any particular order and need to be carefully balanced.</p>
<h2>How to set priorities?</h2>
<p>While the above three items are somewhat obvious, the priority for executing them is not.</p>
<p>For example if you look at requests from specific individuals these may be very important for them but not always helpful to the vast majority of other users and customers.<br> <br>When it comes to the marketplace of course we want to continue to define the&nbsp;decision intelligence&nbsp;space and stay ahead of the competition in the three main areas of the complete platform we provide.<br> <br>(For those that don't know us we uniquely include data prep, business intelligence&nbsp;&amp; Reporting AND data science&nbsp;into one integrated platform).<br> <br>However, it is also the case that some product developments can be driven by an individual deal or deals where a large-scale enterprise commitment to Pyramid demands a similar investment by us in specific capabilities.</p>
<p>And of course bugs are important and need to be prioritized as they can be widely applicable.&nbsp;</p>
<h3>Concentrating on the Core</h3>
<p>As far as our original design principles go these all come together in our 'Data Factory for Decisions' concept. <a href="https://www.pyramidanalytics.com/videos/tabulate-and-solve-for-business-and-decision-modeling/" rel="nofollow noopener noreferrer" target="_blank">(See link for a video on that.)</a><br> <br>We believe in delivering on a start-to-finish platform for all our users' decision making needs. My goal is to deliver a holistic solution that will make it easy to do something that has always been incredibly complex: to support intelligent decision making for business.<br> <br>This year will see us getting very close to completely delivering on the entire factory.&nbsp;</p>
<p>So, please keep inspiring us with new Ideas in the <a href="/category/pyramid-ideas" rel="nofollow noopener noreferrer">Ideas Forum (logged in Users only)</a></p>]]></description>
          <pubDate>Mon, 20 Feb 2023 09:00:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h7haz0l/pyramids-product-development-process</guid>
          <dc:creator>Avi Perez</dc:creator>
        </item>

      <item>
          <title>New Features – 2020.23</title>
          <link>https://community.pyramidanalytics.com/t/x2hbxmw/new-features-202023</link>
          <description><![CDATA[<p> <a href="/t/35hbh7n/pyramid2020-23-released" rel="nofollow noopener noreferrer">Pyramid version 2020.23</a>&nbsp;is primarily a maintenance release addressing identified issues. However,&nbsp;it also delivers several new features. (Some of these are included as beta features). </p> 
<h4>New Semi-Additive Measures: First Child and Last Child in Model (beta)</h4> 
<p> Two new semi-additive measure aggregations have been added to the semantic modeling options. This means that while they may total for some dimensions, they may be aggregated in a different dimension. For example, consider a financial application. One of the Measures may be Cash Balance. If I consider the month of March, the value of Cash Balance will not be the total of Cash Balance added up for all the days in March, but it will be value of Cash Balance on the last day of March or the last day where there is data. In this instance Cash Balance would be declared as a “Last Child” aggregation, so that in a regular Hierarchy where Date was the child of Month, the value would be that last day where data existed, or the 31st of March. Similarly, the opening Cash Balance for March would be the value of Cash Balance for 1st of March, or the First Child. </p> 
<p> Support for such semi additive Measures, coupled with extensive support for Parent / Child Hierarchies means very sophisticated financial analytic applications become possible and remarkably easy to implement with Pyramid. </p> 
<h4>Support for SAP BW Double Structures in BEx Queries (beta)</h4> 
<p> Structures are objects that can be defined in SAP BW BEx Query Designer. A structure forms the basic framework of the axes in a table (rows or columns). The setup of the structure determines the sequence and number of key figures or characteristic values in the columns and rows of the query. </p> 
<p> Pyramid now supports the derivation of the set of measures created by the definition of these “Double Structures”, where one structure holds key figures (Measures) and the other the set of characteristics (Dimension Members). This makes all the calculated items immediately available to users without having to recreate them using Formulate. In many organizations, this may be hundreds or even thousands of calculated, derived values. </p> 
<h4>New Ribbon Tooltips</h4> 
<p> Users can access tooltips on all buttons in the ribbons by hovering the cursor over the button. Clicking on the Learn More link will open the more detailed online help pertinent to the topic. This enables users to immediately understand the functionality of each button, while optionally gaining a deeper understanding by viewing the topic in online help without having to search for it. </p> 
<h4>Model / Alert task cleaner</h4> 
<p> The admin can set the amount of time to keep data alerts and model processing logs. By running the task immediately, the task cleaner allows cleaning up of model and alert tasks with the ability to define how often the logs are deleted. This reduction of data assists in maintaining a more compact, responsive system. </p> 
<h4>New Page Size default</h4> 
<p> The default page size for printing can now be set per tenant. The administrator can define the default page size that will be used for all publications. The user won’t have to select it each time a new publication is created. </p> 
<h4>New Mobile Info button</h4> 
<p> Mobile users can access information relating to the content. By identifying content details like creation dates, source databases and content names, the user can engage meaningfully with content authors when requesting changes or clarification on content issues. </p> 
<h4>Chart Gallery</h4> 
<p> A new ribbon gallery showing different predefined chart styles allowing users to quickly switch the chart design. Users can choose from a selection of six different presets to apply to their charts and ensure a standardized look across all their charts in terms of the display of the Y-axis, legends, grid lines, data labels and report titles. This extends the same feature previously provided for grids and maps to most cartesian charts. </p> 
<h4>New Workday schedule option (beta)</h4> 
<p> Reports can now be scheduled to run on specific workdays of the month. The first workday of the month can be set to a Sunday or a Monday by tenant - to accommodate the different work weeks in different countries. This allows users to run a report on a specific workday of the month. For example, a schedule can be set to run on the third workday, allowing for month-end processes to be completed on the first two days before running the report. </p> 
<h4>Enable or Disable Auto-Discover</h4> 
<p> Users can enable or disable the Auto-Discover option in their profiles. This allows users to set a default for all Discover reports enabling them to only run reports when required. This is particularly useful for users running reports with long processing times where they only want to run the report after making all the changes. </p> 
<h4>New REST APIs for authentication and updating data model flows</h4> 
<p> The API now supports management of additional features related to the Model Flow. There are additional new features and improvements to Authentication APIs. </p>]]></description>
          <pubDate>Thu, 10 Mar 2022 17:39:46 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/x2hbxmw/new-features-202023</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Parent-Child Hierarchy Security</title>
          <link>https://community.pyramidanalytics.com/t/83hjm7k/parent-child-hierarchy-security</link>
          <description><![CDATA[<p> Pyramid offers flexible, intuitive security for parent-child hierarchies, providing role-based control over how members are viewed and aggregated within hierarchies. </p> 
<p> Implementing parent-child hierarchies has long been an Achilles’ heel in most BI tools from query design, processing, structure, to rendering of the hierarchy in a lucid, coherent fashion. If this wasn’t enough of a headache, applying member-level security to the hierarchy makes the challenge extremely difficult (if not impossible). Pyramid’s model tool allows for the easy definition of parent-child hierarchies <a href="/t/35hglcj/creating-parent-child-hierarchies" rel="nofollow noopener noreferrer">(see blog)</a>, and Pyramid’s PYRANA Query Engine resolves the hierarchical structures and provides extensive, fluid, and intuitive reporting. This facilitates direct queries on supported data sources without requiring data ingestion or data source manipulation. </p> 
<p> In this blog, we’ll focus on the setup of member-level security for parent-child hierarchical structures. </p> 
<h3>The Problem</h3> 
<p> The complex requirement to display and roll up or aggregate members within a parent-child hierarchy provides a burdensome challenge for most BI tools. Parent-child hierarchies are often used in financial accounting analytical applications or org-chart analytics. Often, these types of analytics are butchered by various hacks or clumsy workarounds. </p> 
<p> The additional requirement to restrict users’ ability to view specific members further complicates the delivery of an elegant, tight, and intuitive solution. Depending on the business requirement, parent elements may be visible, while child items are hidden; or parent totals might need to include or exclude child members not visible to the user. Analysts are often left with no other viable option than to create multiple custom reports. In addition to the time-consuming task and the difficulty in maintaining the solution, it also becomes the ultimate antithesis of “a single version of the truth.” </p> 
<h3>The Solution</h3> 
<p> Pyramid’s parent-child hierarchy solution facilitates direct query on the existing data source, using the parent-child hierarchy to aggregate and display data as needed. Administrators can apply role-based security to include or exclude specific parents and child members within a hierarchy. When members are not selected, users will be able to view other members together with their amounts while the parent node still accurately accumulates all child nodes. By selecting a parent or child node, all ancestors up the hierarchy tree will be visible. The optional “visual totals” switch enforces totaling only for members that the user can see. </p> 
<h3>Business Case</h3> 
<p> Kate is a BI Analyst at Glennies Trading where they have a Databricks data warehouse with Pyramid for their analytics. </p> 
<p> Kate wants to allow users from all departments to view both overall sales and sales per region, but users should only see the details for their own region. Kate creates a role for the northeastern region in the admin console. Users belonging to this role will be able to see details for all branches in the northeastern region, but they can only see totals for all other regions. </p> 
<p>&nbsp;</p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/96cafb91-d6b6-474f-8a4b-c102c50594a5/547.png">&nbsp; </p> 
<p>&nbsp;</p> 
<p> When a user with the northwestern sales region role views the sales report, Pyramid secures the member-level data from the parent-child hierarchy and only displays the secured data. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/4a0f6891-415f-430a-a222-f04a1f7e9749/547.png">&nbsp; </p> 
<p>&nbsp;</p> 
<p> A user from the southwest region will only be able to view their branch data, together with other regions’ overall data. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/eba574c1-35be-45f4-884e-c66d25da464d/547.png">&nbsp; </p> 
<p>&nbsp;</p> 
<p> Even though total company sales can be viewed by all regions (as it adds to positive competitiveness), when it comes to Standard Cost of Sales, users from one region must not be able to view other region’s expenses as that will give them insight into the company’s overall profitability (which is restricted information). Kate clicks on the visual totals option to ensure total expenses will only reflect expenses accessible to the user, so nobody can calculate total expenses and by extension, the company’s profitability. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/19d4b1d3-1f0b-40ba-a7ed-6c83da987463/547.png">&nbsp; </p> 
<p>&nbsp;</p> 
<p> Now when she views the report, she only sees the totals of the items that she can view. Importantly, note how the parent total consists only of members for which it has access. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/a0e3b5b0-0568-477f-9fde-2956c79cc8ce/547.png">&nbsp; </p> 
<p>&nbsp;</p> 
<h3>Summary</h3> 
<p> Pyramid’s flexible, intuitive security for parent-child hierarchies provides control over how members are viewed, queried, and aggregated within hierarchies. By allowing administrators to include or exclude specific parent and child members within a hierarchy, relevant applications can be optimized to provide world-class reporting and analytics. </p>]]></description>
          <pubDate>Mon, 06 Dec 2021 08:11:21 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/83hjm7k/parent-child-hierarchy-security</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Persisting Visualization Colors</title>
          <link>https://community.pyramidanalytics.com/t/m1hgtq8/persisting-visualization-colors</link>
          <description><![CDATA[<p> Pyramid’s persistent color feature maintains the same color in all visualizations for selected data elements, even after slicing or removing items from a chart. </p> 
<p>&nbsp;</p> 
<p> Analysts often use specific colors to identify distinct hierarchies or measures in visualizations. Predetermined colors can be explicitly selected per hierarchy or measure, but this can be an arduous task when multiple hierarchies are displayed. Default color sets are routinely used by some BI tools to assign colors to categories. Pyramid provides additionally flexibility by allowing default color sets to change when different themes are selected. </p> 
<p>&nbsp;</p> 
<p> However, even when default sets are used, the color assignment can change for specific element selections (for example, New York could change from green to blue) when adjusting the query and the selections (like drilling down, or performing analysis using “analyze further”). This color change can be confusing, and even more baffling when two visualizations in a dashboard initially have the same legends and subsequently use disparate legends. </p> 
<p>&nbsp;</p> 
<p> Pyramid’s “member color lock” feature ensures colors for the targeted items are persistent and do not change even if members are removed or slicing is performed. </p> 
<p>&nbsp;</p> 
<h2>Example</h2> 
<p> In this example dashboard, Australia appears in the Revenue column chart but has been removed from the Expenses column chart. So, for the chart on the right, the standard colors have re-assigned, and we end up with the same countries having two different colors. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/999eb48c-babb-4175-bf26-c03d52cb268a/547.png">&nbsp;By simply selecting the member color lock button from the Design ribbon, the colors for the visuals are locked. </p> 
<p>&nbsp;</p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/3b9ed1ce-a429-4591-bdb3-9a370be2a841/547.png">&nbsp;&nbsp; </p> 
<p> After locking the colors, the same colors persist even after eliminating members. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/e05acece-1889-4f8b-91e3-d5a1e0fa7e6d/547.png">&nbsp; </p> 
<p>&nbsp;</p> 
<h2>Summary</h2> 
<p> The use of specific colors helps users to immediately identify hierarchies, measures, and members in a visualization. After performing slicing or dicing, assigned colors can change, creating confusion. </p> 
<p>&nbsp;</p> 
<p> Pyramid’s one-click persistent color feature maintains the same color in all visualizations, providing users with consistent and intuitive visualizations. </p>]]></description>
          <pubDate>Thu, 21 Oct 2021 13:50:36 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/m1hgtq8/persisting-visualization-colors</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Custom Subtotals</title>
          <link>https://community.pyramidanalytics.com/t/35hgtqt/custom-subtotals</link>
          <description><![CDATA[<p> Pyramid provides users flexibility over how to apply subtotals&nbsp;in a multi-dimensional matrix grid—using a simple point and click interface. </p> 
<p>&nbsp;</p> 
<p> Adding subtotals to a table or grid enables users to quickly grasp values per dimension or hierarchy. Subtotal functions are often toggle switches that provide subtotaling for either all dimensions or none. This can result in displaying unnecessary subtotal details, confusing and frustrating users. </p> 
<p>&nbsp;</p> 
<p> Pyramid allows users to customize which hierarchies will have subtotals (or not). These can be set for both columns and rows in a classic matrix grid visualization. Additional total functionality allows positioning of totals before or after details. This also includes being able to specify the totaling functions including sum, count, average, min, max, median, and standard deviation. </p> 
<p>&nbsp;</p> 
<h2>Example</h2> 
<p> This Revenue report includes standard subtotaling, but as last name, first name, and email are displayed, the subtotaling is added to all items. This results in unnecessary totaling detail for first name and last name, creating a somewhat unusable report. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/158abc62-fb30-4125-8113-a2e55969dcf4/547.png">&nbsp; </p> 
<p>&nbsp;</p> 
<p> Using Pyramid’s Total Dialog allows users to easily select position, type of totals, and the type of aggregating function to apply to both rows and columns. Importantly, the user can deselect the LastName and FirstName hierarchies, ensuring subtotaling is only applied to the City level, making the result clear, concise, and more useful. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/8737f63c-eac3-4ff6-9925-4ea6667f4659/547.png">&nbsp; </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/a49b22bf-18f3-4a83-89db-d1aa143b1271/547.png">&nbsp; </p> 
<p>&nbsp;</p> 
<h2>Summary</h2> 
<p> Pyramid users have complete control over totaling in grid visualizations including the level at which subtotals are calculated and displayed—for both rows and columns. This means the subtotaling of unnecessary hierarchies can be avoided, resulting in more intuitive, uncluttered visualizations. Together with Pyramid’s additional flexible positioning and total aggregation functions, users can design reports to perfectly match their requirements. </p>]]></description>
          <pubDate>Thu, 21 Oct 2021 13:50:32 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/35hgtqt/custom-subtotals</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Troubleshooting User Setup and Access Issues</title>
          <link>https://community.pyramidanalytics.com/t/h7hgtql/troubleshooting-user-setup-and-access-issues</link>
          <description><![CDATA[<p> Administrators occasionally need to check complicated settings and security structures for users. Sometimes the easiest and most reliable way to do so is to simply log in as that user. Pyramid provides an innovative solution by allowing an administrator to simply log in as a specific user and see exactly what they see. </p> 
<p>&nbsp;</p> 
<p> Server-based software with governance allows different functionality to users dependent on the roles and security structures that are applied to them. For example, role-specific security might hide financial measures from clerical roles, or customer names may be hidden from unauthorized users to comply with Payment Card Industry (PCI) standards. This requires users to log in and test before deploying tenant-, role-, or user-based content. </p> 
<p>&nbsp;</p> 
<p> Pyramid’s impersonate feature allows administrator users to “Log in as a User” to emulate non-administrator users, fully experiencing all content and menu options as if they were the user. This enables comprehensive troubleshooting of all user and role-based logic, without requiring user testing (which might involve ghost logins or other workarounds) before releasing a feature. Advanced logic that uses user-based functions and security can also be tested by administrators. </p> 
<p>&nbsp;</p> 
<h2>Example</h2> 
<p> The administrator views the customer dimensions available from the Discover module, where all personal attributes including name, address, email, and phone are available. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/39f9f236-e44b-498d-870a-5c3804ab82bb/547.jpg">&nbsp; </p> 
<p>&nbsp;</p> 
<p> The administrator sets up role-based security for the ‘Analysts’ role by disabling the Customer name, address, email, and phone attributes. All users logging in under the Analysts role will not be able to see any of these details. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/a9121719-d907-4a61-b11a-9810662bd8c1/547.jpg"> </p> 
<p>&nbsp;</p> 
<p> The administrator then clicks on the Impersonate button for a user categorized under the “Analysts” role. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/16998c96-4cad-4f6c-b915-db1bbb9e971d/547.jpg">&nbsp; </p> 
<p>&nbsp;</p> 
<p> Upon opening a Discover report, none of the personal details are available for display. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/07a38cc5-18d7-4a23-9305-fc1d9cf76219/547.jpg">&nbsp; </p> 
<p>&nbsp;</p> 
<h2>Summary</h2> 
<p> Pyramid administrators can “impersonate” any user by logging in as that user without their credentials, enabling quick and easy testing of user-related issues before releasing features into a test or production environment. </p>]]></description>
          <pubDate>Thu, 21 Oct 2021 13:50:31 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h7hgtql/troubleshooting-user-setup-and-access-issues</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Custom Data Connectors</title>
          <link>https://community.pyramidanalytics.com/t/p8hgtqf/custom-data-connectors</link>
          <description><![CDATA[<p> Pyramid provides administrators the ability to self-configure connectors for almost any JDBC data source, providing users access to these data sources. </p> 
<p>&nbsp;</p> 
<p> As more applications and databases are developed it is important for analytics platforms to be able to access and ingest data from these disparate sources. Pyramid’s Custom Data Connector feature allows administrators to easily add and configure custom JDBC connectors (or “drivers”), adding them to Pyramid’s list of pre-configured JDBC drivers, so users can ingest data from these data sources as if they are a built-in option without requiring any further configuration. Administrators can set the caption and description and upload the “JAR” file for the JDBC driver and use them instantly without requiring any additional coding. Pyramid’s robust governance model also ensures that the drivers are secured in multi-tenant deployments. </p> 
<p>&nbsp;</p> 
<p> Separately, <a href="https://www.pyramidanalytics.com/landers/cdata" rel="nofollow noopener noreferrer" target="_blank">Pyramid has partnered with</a>&nbsp;<a href="https://www.pyramidanalytics.com/landers/cdata" rel="nofollow noopener noreferrer" target="_blank">CData</a>. CData sells over 200 custom JDBC connectors that can be integrated into the platform. </p> 
<p>&nbsp;</p> 
<h1>Example</h1> 
<p>&nbsp;</p> 
<p> An administrator wants to add a JDBC driver for Zendesk to provide users access to ingest their help desk data and integrate with their line-of business systems for reporting. The administrator accesses the custom connectors dialog box and enters the caption and description and uploads the Zendesk Jar file. The user then selects the “Other Sources” category, so the connection can be accessed when working on the “Model” tool. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/3c103d7e-a602-4bdf-9b90-78146b460a6d/547.jpg">&nbsp; </p> 
<p>&nbsp;</p> 
<p> Once the connector has been set up, the connector appears with all “Other Sources” options and even a non-administrator users can drop the connector onto a model as if it were a standard source without requiring any technical knowledge of how to set up connectors. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/96f5199a-d4c9-4acf-892a-56a94ec6cfa3/547.jpg">&nbsp; </p> 
<p> CData </p> 
<p> The CData JDBC driver collection is extremely large and excels with data sources that don't typically come with their own drivers. Click <a href="https://www.cdata.com/drivers/" rel="nofollow noopener noreferrer" target="_blank">here</a> to read more. </p> 
<p>&nbsp;</p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/dd78a6dc-f55d-47fa-9c55-b8baa82f366a/547.jpg">&nbsp; </p> 
<p>&nbsp;</p> 
<h2>Summary</h2> 
<p>&nbsp;</p> 
<p> JDBC data connectors enable users to ingest and combine a variety of data from external sources. Pyramid provides administrators the ability to easily configure custom connectors without new code from Pyramid. Non-technical users can then seamlessly access these data sources in the Model tool as if they were part of the platform itself. Finally, Pyramid’s robust governance model allows the drivers to be secured and deployed in a multi-tenant environment. </p> 
<p>&nbsp;</p> 
<h2>&nbsp;</h2>]]></description>
          <pubDate>Thu, 21 Oct 2021 13:50:29 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/p8hgtqf/custom-data-connectors</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Multiple Chart Types in a Single Report</title>
          <link>https://community.pyramidanalytics.com/t/m1hgtqp/multiple-chart-types-in-a-single-report</link>
          <description><![CDATA[<p> &nbsp;Pyramid lets users display multiple value metrics in a single report, each with its own graphical visualization, providing greater flexibility in displaying analytic content. </p> 
<p>&nbsp;</p> 
<p> Pyramid has had various options to shown different values in the same chart or report, including: </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/71f2bf3e-ace7-4438-8831-3db6553f4aaf/547.png">&nbsp; </p> 
<p> We have added a new option: the ability to use the trellising chart capability with the option to also change chart types per metric via simple, yet sophisticated drop zone tools. This flexibility provides more options for users to better show and understand their data. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/4a7a592b-909f-42ac-91ed-5d41eae0838f/547.jpg">&nbsp; </p> 
<p>&nbsp;</p> 
<h1>Why is it needed?</h1> 
<p> Comparing data with multiple measures in a single chart can be misleading with different scales that apply to the different measures. For example, gross revenue for different sales representatives might be in a range between $500k and $800k, while their net profit might be between $100k and $200k and their margin percentage between 5% and 10%. Allowing multiple charts with different y-axis calibrations greatly improves comprehension by magnifying variations of smaller amounts—and removing the ambiguity of using a single measure scale. This then allows users to show distinct chart types for each metric to better depict the underlying data. For example, instead of using a column chart for margin, a user might want to use a line chart for improved graphic illustration. </p> 
<p>&nbsp;</p> 
<h1>Example</h1> 
<p> This chart illustrates how sales, net profit, and margin can’t be meaningfully depicted on a single chart. </p> 
<p> &nbsp;<img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/a4682983-1e98-4043-a1b1-d667aea4c7e5/547.jpg">&nbsp; </p> 
<p> The range for the margin amount is between 37% and 39%—so low that it isn’t recognizable on the y-axis. </p> 
<p>&nbsp;</p> 
<p> So, one way to address this is to use combo charts with primary and secondary axes. &nbsp; </p> 
<p> The chart below suddenly allows the margin metric to be clearly visible in the same chart plot as the other two metrics, using both a different chart type (line) and a different y-axis. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/5936a866-6595-4061-958e-a804df39cc5b/547.jpg">&nbsp; </p> 
<p> If the measures were of similar scale, then a shared-primary axis chart could also work. For example, revenue and expenses have a similar range of values and can be accommodated on the same y-axis. </p> 
<p> In the chart below, both revenue and expense values are shown on a single plotted chart, sharing the same y-axis. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/15516c9b-03e8-41eb-a3d1-fdcc99fccf5c/547.jpg">&nbsp; </p> 
<p> Another technique, when the measures had different value scales, is to let the application trellis the results so the y-axis scale changes per plot of each measure. </p> 
<p> In the chart below, we get three charts: one for sales, margin, and net profit. By separating them into three distinct plots, each one has its own y-axis values and scale. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/69f5b32e-5a03-4593-9cb0-941bfc30f2e4/547.jpg">&nbsp; </p> 
<p> But what if we want different chart types for each measure in the above trellised plot, so that the margin can be displayed as a line chart, sales as a column chart, and net profit as an area chart? &nbsp; </p> 
<p>&nbsp;</p> 
<p> This can now be achieved by using the new “trellis” sub-drop zone choice and choosing the appropriate chart option. </p> 
<p>&nbsp;</p> 
<p> You can see the effect in the chart below, with each measure in its own plot, its own y-axis and scale, and its own chart type. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/50994b2c-08b7-4cf9-b1fc-fec476666d19/547.jpg">&nbsp; </p> 
<h2>Summary</h2> 
<p> There are many nuances to drawing multi-metric charts. Pyramid supports various approaches through the simplicity of its drag-and-drop drop zone interface. Through this framework, multiple measures with different scales are more easily understood in separate charts with different y-axis ranges, making the analysis easier to read and use, and therefore more impactful. </p>]]></description>
          <pubDate>Thu, 21 Oct 2021 13:50:27 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/m1hgtqp/multiple-chart-types-in-a-single-report</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Multi-Factor Authentication</title>
          <link>https://community.pyramidanalytics.com/t/m1hgtqn/multi-factor-authentication</link>
          <description><![CDATA[<p> Multi-Factor Authentication </p> 
<p>&nbsp;</p> 
<p> Pyramid’s built-in multi-factor authentication (MFA) option adds a rock-solid layer of security to your BI application if your authentication provider does not offer it. </p> 
<p> Passwords alone have proven to be an insufficient means of security in today’s world. More than&nbsp;<a href="https://www.securitymagazine.com/articles/91073-more-enterprises-using-multi-factor-authentication-to-secure-passwords" rel="nofollow noopener noreferrer" target="_blank">55 percent of enterprises</a>&nbsp;use MFA to provide an additional layer of security. While some customers who have implemented Single-Sign-On (“SSO”) enterprise identity provider technologies (like SAML or OpenID) may have access to MFA from those systems, many customers who use other technologies like LDAP or Active Directory cannot access these capabilities. Pyramid’s built-in MFA framework with “Time-based One Time Passwords” allows customers to deploy and use MFA with the click of a button. </p> 
<h2>&nbsp;</h2> 
<h2>The Problem</h2> 
<p> Professionals are facing increasing security threats from tactics like phishing, pharming, and hacking. In response, enterprises now recognize the need to bolster their security. </p> 
<p>&nbsp;</p> 
<p> Most hacking-related breaches are caused by stolen or weak passwords. Classic authentication requires a user login and password, but these are becoming easier to hack and steal. Furthermore, passwords are a headache to remember and change on an ongoing basis, so users often choose to reuse the same password between systems and devices. Consequently, a hack on one system may end up compromising many other systems. </p> 
<p>&nbsp;</p> 
<h2>The Solution</h2> 
<p> <a href="https://searchsecurity.techtarget.com/definition/multifactor-authentication-MFA" rel="nofollow noopener noreferrer" target="_blank">Multi-factor authentication</a> (MFA) is a security protocol that requires multiple methods of authentication from independent categories of credentials to verify a user's identity.&nbsp;Pyramid provides MFA where the user authenticates their credentials via Pyramid — this includes the internal authentication system, LDAP, or Active Directory. &nbsp; </p> 
<p>&nbsp;</p> 
<p> Enrolled users are prompted to enter a machine-generated Time-base One Time Password (or “TOTP”) to log in, along with their username and password. This TOTP solution generates a unique code every 30 seconds using special authenticator applications (usually on the user's mobile device) making it extremely difficult to circumnavigate. The authenticator apps, from vendors like Google or Microsoft, are usually free. </p> 
<p>&nbsp;</p> 
<p> This ensures that even if a user's credentials are stolen, access is blocked without the independent security code from the authenticator app. Administrators can enable MFA for the entire Pyramid deployment, or for each individual front-facing web server. Further, administrators can also reset the MFA token associated with a given user, ensuring that if the authenticator app is compromised, access can be centrally blocked. </p> 
<h1>Example</h1> 
<p> The administrator sets up MFA in the web services panel, applying the authentication for all form-based logins into the platform. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/90acffee-9936-4688-a814-d710af5ddfae/547.jpg">&nbsp; </p> 
<p>&nbsp;</p> 
<p> Users then log in. When they do, they must enroll themselves into the MFA by scanning the displayed QR code into their downloaded authenticator app. Once enrolled, the user is required to enter their username and password as normal and then supply their unique TOTP code, generated by the authenticator app, before gaining access to the system.&nbsp; </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/3c8e5851-e616-47e7-80fb-9d26ac257ec3/547.jpg">&nbsp; </p> 
<p>&nbsp;</p> 
<h2>Summary</h2> 
<p> Passwords alone are an insufficient means of protection against security threats. Pyramid’s in-built multi-factor authentication safeguards your data environment with advanced security, without the hassle of using third-party tools or other applications. </p>]]></description>
          <pubDate>Thu, 21 Oct 2021 13:50:25 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/m1hgtqn/multi-factor-authentication</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Actionable Analytics &#x26; Custom Workflows</title>
          <link>https://community.pyramidanalytics.com/t/q6hgtqa/actionable-analytics-custom-workflows</link>
          <description><![CDATA[<p> Pyramid’s Custom Workflows provides users with new collaborative options from within the analytics platform for delivering actionable analytics that go beyond classic conversations and annotations. </p> 
<p>&nbsp;</p> 
<p> The customization tools and workflow APIs allow customers to build their own data-driven action lists, commentary systems, annotation models, documentation tools, and interfaces with other technology platforms directly into Pyramid using standard HTML, JavaScript, and CSS style sheets. </p> 
<p>&nbsp;</p> 
<h2>Extending Conversations</h2> 
<p> Pyramid’s original conversation workflow framework allows users to annotate and comment on data points, reports, and dashboards using an out-of-the-box tool set. The new Custom Workflow tools use the same demarcation mechanics in the platform which annotate data points (or cells), hierarchical members, reports, or dashboards. However, instead of limiting the workflow to just comments written between colleagues in a conversation thread, the customization opens up the platform to any kind of content and payload; presented in any visual format; and stored internally in Pyramid or externally in any other application. </p> 
<p>&nbsp;</p> 
<h2>The Problem</h2> 
<p> Co-workers collaborating on reports often need to use workflows with custom input fields. For example, upon identifying a patient issue in a patient diagnostic report, a clinician may want to write some action items to the patient management system. While the process of tagging and tracking the patient and their data in Pyramid is a simple click, the format and protocol for the action items is not a simple text message. So, a classic conversation mechanism only solves half the problem. </p> 
<p>&nbsp;</p> 
<p> Most reporting environments don’t extend their collaboration interfaces, resulting in users needing to manually resolve the problem with external tools. This means workflow processes are initialized and run in separate silos from analytics—an approach that is mostly clumsy and inefficient. </p> 
<p>&nbsp;</p> 
<h2>Business Case</h2> 
<p> Vera is the lead clinician for ABC Health Insurance Inc. ABC Health uses Pyramid on their Oracle data warehouse that incorporates medical claims data for their insurance company. The platform has recently been upgraded to include a new patient “action” system using Pyramid’s Custom Workflows, allowing users to annotate relevant patients with intervention flags based on an analysis of their conditions and history that is produced and consumed from Pyramid. The flags, however, are stored in their external patient tracking software, which is used downstream to action the items flagged upstream. The workflows have been setup to both write new status flags to the software as well as read the status flags back into Pyramid for edit and review in the context of the reports and data that generated them. </p> 
<p>&nbsp;</p> 
<p> Vera browses her weekly high-risk patient report and notices that eight new patients have been flagged as potential candidates for HBA1C testing (related to diabetes). She initiates a high-risk patient workflow to one of her nurses to indicate the course of action that should be taken. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/af0c8aa6-11da-4aeb-bbef-4e8a2d4abfc1/547.png">&nbsp; </p> 
<p>&nbsp;</p> 
<p> The workflow process writes flags to the patient tracking software to indicate the patients require bloodwork and follow-up with a liaison officer. No additional software or manual reminders are required in this integrated solution. The custom workflow has been designed to also allow Vera to set a due date for the actions items and designate a specific nurse to track the patient. </p> 
<p>&nbsp;</p> 
<p> In the future, anyone reviewing the analysis of the selected patients will see the annotation flag inside Pyramid and can use the same workflow mechanism to read the tags that have been set by Vera. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/89b063c1-2e43-4100-966b-d1795f013b6f/547.png">&nbsp; </p> 
<p>&nbsp;</p> 
<h2>Summary</h2> 
<p> Most reporting environments have limited annotation interfaces, requiring users to utilize other tools. This results in inefficient processes when trying to deliver actionable outcomes from analytics. Pyramid has extended their conversation workflow framework to a Custom Workflow tool allowing any content, presented in any format, to be stored internally in Pyramid or externally in any other application. The customization tools and workflow APIs allow customers to build their own data-driven action lists, commentary systems, annotation models, documentation tools, and interfaces with other technology platforms directly into Pyramid using standard HTML, JavaScript, and CSS style sheets. </p>]]></description>
          <pubDate>Thu, 21 Oct 2021 13:50:23 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/q6hgtqa/actionable-analytics-custom-workflows</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Numeric Formatting in Pyramid</title>
          <link>https://community.pyramidanalytics.com/t/p8hgtq4/numeric-formatting-in-pyramid</link>
          <description><![CDATA[<p> Static data format masks, used to format values in analytics) is a standard feature in most BI applications. However, data-driven formats, which change formats per value item, are anything but standard. Pyramid provides data-driven formatting using labels like currency and numeric units. This is a critical capability when the same metric has values with different units or currencies being embedded in a single column of data. </p> 
<p>&nbsp;</p> 
<p> In most application designs, space limitations or aesthetic considerations require the units, currencies, or both (e.g., USD and EUR) to be included in the same column as the measure column. Reporting on multiple units and currencies in most BI tools usually requires separate columns to be displayed for the units or currencies in addition to the measure column—and can typically only support the static format mask approach. Alternatively, a separate hierarchy is needed to provide context to the numbers to show what currencies or units may be applicable to the set of figures. The better approach is to format the data with the right labels from the data itself—making it more intuitive for users and generally much more foolproof. </p> 
<p>&nbsp;</p> 
<p> Pyramid provides built-in capabilities to set both prefix and suffix label formatting for measures, allowing users the option to set data-driven currency and unit data formatting in Pyramid’s Model toolset. This enables the visualizations to seamlessly display currency and/or unit data in all reports and visualizations. </p> 
<p>&nbsp;</p> 
<h2>Example</h2> 
<p>&nbsp;</p> 
<p> This report displays sales of dried fruit and nuts per unit and currency. For easier readability and better design, the units and unit type must be displayed in a single column, and the currency and amount should also be displayed in a single column. </p> 
<p>&nbsp;</p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/5924b84e-f628-41a0-b504-48ac55a37fe0/547.jpg">&nbsp; </p> 
<p>&nbsp;</p> 
<p> In the model tool users can select the currency as the prefix column for the amount measure, and the unit type as the suffix for the units measure. </p> 
<p>&nbsp;</p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/7f04bf9b-fce3-4470-ad3f-fbd8ed069eb1/547.jpg">&nbsp; </p> 
<p> The resulting report now neatly incorporates the combined prefix and suffix for the disparate measures, providing a more elegant, ergonomic report. </p> 
<p>&nbsp;</p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/fa451762-fbe5-44f3-9fdd-c3e6a1b007bb/547.jpg">&nbsp; </p> 
<h2>Summary</h2> 
<p> Currencies and numeric units are a critical element in data analysis. Too often, they are not incorporated in an intuitive, easy-to-use manner within BI tools. Pyramid’s data-driven numeric formatting allows data values to be formatted fully, using either static format masks or those driven from inside the dataset itself. </p>]]></description>
          <pubDate>Thu, 21 Oct 2021 13:50:21 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/p8hgtq4/numeric-formatting-in-pyramid</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Report Personalization</title>
          <link>https://community.pyramidanalytics.com/t/60hgtqv/report-personalization</link>
          <description><![CDATA[<p> Pyramid lets users customize and personalize the labels of value metrics and hierarchies for a given data model. These customizations can be set for all sessions (present and future) or to a specific report without affecting other users; breaking the functionality of the underlying data model; or compromising the enterprise-wide governance and security features required by administrators. </p> 
<p>&nbsp;</p> 
<p> By definition, self-service analytics is about letting users work creatively with data to produce their own data discoveries and visualizations and ultimately drive better decisions. The self-service component means changing queries, calculations, visualizations, and anything else needed to deliver useful information. </p> 
<p>&nbsp;</p> 
<p> One contentious area, however, is the changing of the data structures themselves. On one hand it offers full control over the analytics process. However, it also lets end-users potentially break or tweak data models and structures in a way that is inconsistent with how they are designed or should be used. This breaches “governance” and makes the general process of self-service analytics significantly weaker because there is no single source of the “truth”. In short, centrally defined reports ensure governance and shareability of enhancements made to a report but provide a challenge for users wanting to customize their view of the report. </p> 
<p>&nbsp;</p> 
<p> To address both paradoxical needs, Pyramid lets end users build content, queries, and calculations as needed within a governed framework. This includes tweaking data models—but without breaking technical structures or corrupting the “truth” along the way. </p> 
<p>&nbsp;</p> 
<p> Personalization options allow users to customize the models and set their own captions for measures and hierarchies within a report. Hierarchy types can be set (this is useful for triggering different analytical capabilities) while metric data formats can also be changed to any numeric format. When making changes, users have the option to set the personalization for the current report, for all their reports (and sessions), or, if they are an administrator, apply the changes for different roles in the system. </p> 
<p>&nbsp;</p> 
<p> In this way, Pyramid offers the best of both worlds by allowing personalization of reports while still retaining the governed, centralized report definition. </p> 
<p>&nbsp;</p> 
<h1>Example</h1> 
<p>&nbsp;</p> 
<p> The user of this report wants to use the term “Revenue” instead of “Sales”. In addition, the user wants to use the term “Branch” instead of “City” and wants to replace “dates year” with the title “Year”. The amounts must be displayed in the thousands format (K), rounding to the closest thousand. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/a2076d88-7d51-4629-8226-f064dd83624f/547.jpg">&nbsp; </p> 
<p>&nbsp;</p> 
<p> By right clicking on the sales chip, the user can adjust the caption, the format string, and the label format. The user can also choose to apply these changes for this report only, for all of their subsequent reports, or for all roles that an administrator user has the security authorization to apply this for. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/1a900a82-3ee0-4150-870a-3716a720100e/547.jpg">&nbsp; </p> 
<p> After applying the changes, we can see how the captions have been adjusted on the chips, in the report, and even in the title of the report. The numbers have also been adjusted to display the “K” format. Any other user will not see these changes, as the user specified that these overlays will only be applied “For Me”. </p> 
<p>&nbsp;</p> 
<p> Pyramid has retained a single definition for this report, retaining governance and shareability, while providing the flexibility to customize the report per user. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/94fe0458-7682-4aad-b8c7-da39e80ccae9/547.jpg">&nbsp; </p> 
<p>&nbsp;</p> 
<h2>Summary</h2> 
<p> Pyramid users can personalize reports by changing data model elements to customize things like the report title, column names and measures formats—while still retaining a central definition with its inherent enterprise-wide governance and security. </p>]]></description>
          <pubDate>Thu, 21 Oct 2021 13:50:20 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/60hgtqv/report-personalization</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Automated Key Driver Analysis</title>
          <link>https://community.pyramidanalytics.com/t/y4hgt1n/automated-key-driver-analysis</link>
          <description><![CDATA[<p> Pyramid’s AI-driven “Explain” feature allows users to dig directly into their source data with a single click, giving them faster insights into key drivers and influencers through automated analysis, with little effort. </p> 
<p> Real insight into data is usually only gained after traversing and mining mounds of data, until the golden nuggets are finally found. Rather than manually drilling into the data, using intuition, or educated guesses to choose dimensional elements to find what’s driving results,&nbsp;“Explain”&nbsp;automatically determines the elements that contribute to a data point's value. </p> 
<h1>The Problem</h1> 
<p> A huge amount of time-consuming effort is usually expended to source data, manipulate it, and arrive at insights. Analysts need to devote considerable time combing through a myriad of permutations of hierarchies and metrics, looking for drivers influencing high concentrations of values and/or average values. An automated AI function would be the ideal solution to this quagmire. Often BI tools don’t provide such capabilities directly on any data source requiring data ingestion first. And then they can only perform automated analysis on predefined metrics and hierarchies, effectively relinquishing the self-service, on-demand functionality. </p> 
<h1>Pyramid’s solution</h1> 
<p> Pyramid’s “Explain” feature performs automated analysis in a single, on-demand click without requiring any data preparation or complex development. Insights can be gleaned immediately against any data source. An advanced machine learning algorithm is used to automatically traverse all hierarchies and metrics, finding the most significant drivers and influencers behind the values in question. </p> 
<p> The Explain feature deploys a two-pronged approach, analyzing both high concentrations of values and influencing factors, revealing the most significant items and metrics. </p> 
<p> The feature combines automatically generated textual commentary with graphical representations. While an advanced interface exposes a larger set of contextual reports and AI-generated explanations for each selected node. </p> 
<p> The depth and intensity of the algorithm can be customized to suit the user’s requirements in an intuitive, user-friendly interface. While all generated insights, reports and dashboards can be saved as standard artefacts and further enhanced using Pyramid’s Analytics platform. </p> 
<h1>Business Case</h1> 
<p>&nbsp;</p> 
<p> Amy, a business analyst at XYZ Telco, is using Pyramid to analyze data from her SAP system using HANA Calculation Views. During her analysis, she discovers that monthly charges for customers that have multiple phones lines and online security is $1,044. She wants to understand why it’s so high, and what other items in the data best explain its value? </p> 
<p>&nbsp;</p> 
<p> Amy right clicks on the data point and selects “Explain”, triggering the underlying query engine to retrieve all the details for that data point across the ENTIRE data model and present it to the&nbsp;Explain&nbsp;machine learning engine for automated analysis. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/b292a8e5-76b3-47ce-a2a6-f822cb61ac9a/547.png">&nbsp; </p> 
<p> Within a few seconds, Amy can start to review the results (shown below). First, she reviews the first tab that explains what items are dominating the value drivers shown in the “eyeball” diagram. It shows that customers with streaming TV (StreamingTV = “Yes”), are the most significant element and account for $884.25. Within that, two-year contracts account for $638.90, and within that, $463 is accounted for with customers who have technical support. By clicking on the middle oval, she can also see textual commentary describing the breakdown on the right-hand side, with a contextual column chart depicting how the Two-year contract monthly charges compares with other members in the contract hierarchy. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/cd41a7be-4ece-4c67-b7b0-ac84e21e3cde/547.png">&nbsp; </p> 
<p> Next, Amy wants to determine what factors are pushing the average value of monthly charges higher for the specified datapoint. This may give her a sense of the relative sizing, versus absolute value concentrations. </p> 
<p> She clicks on the second tab, (the influencers tab), where the AI engine traverses all hierarchies AND other metrics&nbsp;in the data model, using average values in determining the impact, rather than simple summation. Here it shows that when the contract tenure is greater than 63 days, it has an impact of just 1, while within that, a fiber optic internet service has a 1.2 impact (which means those customers with this option pay 20% more on average in monthly charges). And finally, any customers with streaming members impacts the average value of monthly charges by 30% or 1.3. (Factors&nbsp;over 1.0&nbsp;contribute to&nbsp;increasing&nbsp;average values, while factors&nbsp;below 1.0&nbsp;contribute to&nbsp;decreasing&nbsp;average values). </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/e289e195-3a83-48c4-8258-fb6cb97ccd97/547.png">&nbsp; </p> 
<p> Now, Amy wants to increase the depth and breadth of her analysis – and moves to the more advanced interface. </p> 
<p> She first selects three branches and four levels in the search parameters and views the results in a tree. Here Amy can see two additional branches on each level. So, in the first level she can now view two-year contract and partner = “Yes”, on the second level she can view Partner = “Yes” and Tech Support = “Yes” within the context of Streaming TV = “Yes” etcetera. The tree also stretches all the way down to a fourth level where she can view Online Backup = “Yes” and Payment method = “Credit card automatic” within the context of TechSupport = “Yes”. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/53ec8013-58eb-4210-b68b-5b4ab811b8cd/547.png">&nbsp; </p> 
<p> And finally, Amy wants to perform a detailed analysis on the Online backup node on the fourth level. By clicking on it, the advanced interface also exposes a dashboard containing four contextual reports with automatically generated explanations. </p> 
<p>&nbsp;</p> 
<p> The Explain feature has effectively allowed Amy to perform a detailed analysis with a single click in a few minutes, directly against her SAP HANA datasource without requiring any ETL, ingestion or data manipulations. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/859fdd28-9542-4a4e-8a10-3f3e4a1c38f1/547.png">&nbsp; </p> 
<h1>Summary</h1> 
<p>&nbsp;</p> 
<p> Pyramid’s “Explain” feature performs automated analysis directly against any data source in a single, on-demand click. “Explain” finds the most significant drivers and influencers for a selected data point by automatically traversing all hierarchies and metrics. It analyzes high concentrations of value and influencing factors for increasing or decreasing average values, combining textual commentary with graphical representations to highlight results. </p>]]></description>
          <pubDate>Thu, 21 Oct 2021 13:50:18 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/y4hgt1n/automated-key-driver-analysis</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Maintaining Data Models</title>
          <link>https://community.pyramidanalytics.com/t/x2hgt1d/maintaining-data-models</link>
          <description><![CDATA[<p> Data modeling is now central to all business analytic processes as companies embrace the “Decision Intelligence” paradigm. Delivering advanced data modeling options in a self-service framework is challenging – and maintaining the workflows created in the process can complicate things further. </p> 
<p> Pyramid provides enhanced no-code tools to allow users to better maintain existing data flows and ETL logic in its data modeling toolset – making the process of creating and maintaining such complex flows easy, accessible, and fully self-service centric. </p> 
<p>&nbsp;</p> 
<h1>The Problem</h1> 
<p> After having built data preparation pipelines to cleanse, transform and enrich data, model designers often need to adjust them at a subsequent time. For example, when migrating from a development to a production environment, the data sources or targets need to be adjusted; after a change in the data warehouse tables are removed, columns are renamed. </p> 
<p>&nbsp;</p> 
<p> Some of the changes may simply involve the changing of input tables, while all other logic and manipulations remain intact. Alternatively, designers may want to adjust a node in the data pipeline and then walk through the downstream adjustments required. </p> 
<p>&nbsp;</p> 
<p> Instead of creating a sequence of events that disrupts the pipeline such that it is rendered useless, Pyramid identifies the adjustments and provides a specialized mapping wizard to walk the designer through the process of rewiring the logic to the changes. Ultimately this maintains all subsequent logic without requiring a full do-over. &nbsp;The column mapping wizards also let designers correct any variances and issues WITHOUT CODE, sparing the designer the burden of having to recreate all the logic and data manipulations in the model. </p> 
<p>&nbsp;</p> 
<h1>Example</h1> 
<p> This model has been created in a development environment, with a masking process, custom Python code and a Distinct process used for manipulating and enriching the source data. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/5fbacbba-1528-49e7-90fc-ec35c6a9ec59/547.png">&nbsp; </p> 
<p> In moving the environment from testing to production, the server, and subsequent table names have changed in the production environment. The different names used results in an error displayed for the table names. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/8cbaff1b-78e5-4a78-91d8-dae68c91f7ca/547.png">&nbsp; </p> 
<p> By simply clicking on the error and selecting the correct table name, the model “validates” correctly. All pre-existing logic downstream in the pipeline remains valid, so the model designer does not have to recreate any of the logic. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/ef0e53e2-6b7f-484a-9ea9-f110d5d2dcad/547.png">&nbsp; </p> 
<p> If an error exists on a column due to a mismatch or different naming of a column the joins are changed to dotted read links. &nbsp;By clicking on the link between the table and the subsequent process, a column mapping panel is opened where the model designer can rectify the error. Tools are available to either individually or heuristically map or unmap source to destination columns. After clicking on the apply button and saving the model, the new model mapped to the current datasource is fully operational, without having to recreate all logic from scratch. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/57c67dc1-d9b0-4efa-9a6e-85b8488a90ec/547.png">&nbsp; </p> 
<h1>Summary</h1> 
<p> Model designers often perform simply changes like the changing of input tables or adjusting a node in the data pipeline. Instead of disrupting the pipeline and rendering it useless, Pyramid provides a new code-free mapping wizard allowing the designer to rewire the logic to the new changes, sparing the designer the burden of having to recreate all the logic and data manipulations in the model. Saving time and money! </p>]]></description>
          <pubDate>Thu, 21 Oct 2021 13:50:16 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/x2hgt1d/maintaining-data-models</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Creating Parent Child Hierarchies</title>
          <link>https://community.pyramidanalytics.com/t/35hglcj/creating-parent-child-hierarchies</link>
          <description><![CDATA[<p> Pyramid excels in its’ native support for parent-child hierarchies, automatically generating hierarchical structures and providing fluid, intuitive reporting.&nbsp; </p> 
<p> Parent child hierarchies are used to depict the hierarchical, iterative relationship between all members that appear in the same table, enabling a graphic portrayal of the relationships, and facilitating the aggregation of all members according to the hierarchical structure. Reporting on parent child hierarchies is a critical function required in applications that use data structures like a chart of accounts, organizational structures, bill of materials, and many others. Hierarchical reporting for parent child relationships requires specialized iterative capabilities and is usually difficult or impossible to resolve with alternative work arounds. Pyramid’s extensive support for parent-child hierarchies, delivers elegant reporting with full hierarchy expansion and collapse, and provides hierarchical accumulation, directly on supported data sources without requiring data ingestion or data source manipulation. </p> 
<p> In the first of this two-part series, we’ll explore how Pyramid’s extensive data model capabilities support parent child hierarchies, and in the next blog we’ll analyze how Pyramid’s querying and visualization capabilities cater for parent child structures, resulting in fluid, intuitive dashboards, and reports. </p> 
<h1>The problem</h1> 
<p> The unconventional nature of the parent child hierarchy does not lend itself well to classic reporting and data aggregation. Rolling-up or aggregating all members of a parent child hierarchy in a relational data model requires iterative logic to snake through the hierarchy one item at a time. This places an enormous burden on resources, making it infeasible to process data in its’ native format. As a work around, some solutions involve complex pre-processing to flatten the hierarchy, ensuring each child record contains a distinct parent column for all preceding levels. This forces building additional columns back to the data source; or duplicating data to a new data source. And most often, it produces structures that can go stale quickly, so constant hydration is required – challenging the very notion of “a single version of the truth.” </p> 
<h1>Pyramid’s solution</h1> 
<p> Pyramid’s “Model” app provides a code-free, drag-and-drop interface to define parent, child, and descriptive columns in a data model. Pyramid generates the hierarchical structures on the fly, automatically recognizing all levels present in the hierarchy, and generating metadata for each of the levels in the hierarchy dimension. The newly generated data model facilitates direct query on the existing data source, using the parent child hierarchy to aggregate and display data as needed. </p> 
<p> In addition, Pyramid provides several options for calculating rollup aggregates within the elements of the hierarchy to meet business logic requirements. So, an operand per member element can be used to determine whether each item is added, subtracted, or ignored when aggregating up the hierarchy. </p> 
<p> Specifically for accounting applications, another feature – cumulative measure aggregation – can also be added to a data model that applies accumulation of a measures for balance sheet numerical operations. Numerous complex accounting problems can be solved easily and quickly when both the accumulation and operand functionality is combined. </p> 
<h1>Business Case</h1> 
<p> Carla is a BI Analyst at EZ Trading where they have a SnowFlake Data warehouse with Pyramid for their Analytics. Their chart of accounts defines the parent child relationship, with many different levels or reporting, resulting in a typical ragged hierarchy. </p> 
<p> For example, this Discover report reflects how the Balance Sheet is the parent of Assets and Assets is the parent of Current Assets. Current Assets is in turn the parent of both Cash and Receivables. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/a4249ee9-7bf6-4b9f-8974-18d02fde22b0/547.png">&nbsp; </p> 
<p> Carla wants to create a data model that will reflect all levels in the financial structure. She used the Model tool to define the parent child relationships - using the AccountKey to define the Child Key, the ParentKey for the Parent, and the Accounts column to be used as the caption. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/2cee2259-648b-4f12-9a60-70c7cec40f61/547.jpg">&nbsp; </p> 
<p>&nbsp;</p> 
<p> Next Carla wants to display all values in her chart of accounts as positive, including expenses and sales returns. However, she wants to subtract expenses from revenue to result in a net revenue amount. Carla uses an “operator” column to indicate what to add or subtract when aggregating lower levels - so she simply drops the “Operator” column into the Unary Operator property. Finally, she defines "Children" as the Rollup type to that any parent element is simply the aggregation of child values. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/28f0d7b1-d969-4c44-97d4-8c0bab495ed5/547.png">&nbsp; </p> 
<p>&nbsp;</p> 
<p> Once the model has been saved, Pyramid instantly generates the hierarchical structure, automatically recognizing the six levels present in the hierarchy, and generating metadata for each of the levels in the Account hierarchy dimension. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/3484c3cf-ed31-43d0-92ab-9ae74a990ab4/547.jpg">&nbsp; </p> 
<p>&nbsp;</p> 
<p> Carla then uses her new model in a report to display the relationship between the accounts and all children and descendants. </p> 
<p> We see that asset and liability amounts are displayed as positive amounts, but nevertheless, in the background, the unary operator is used to ensure that the balance sheet amount is 0 (by subtracting liabilities from assets). </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/ad876995-bb0f-49f1-a9d9-983fb39fad5c/547.jpg">&nbsp; </p> 
<p>&nbsp;</p> 
<p> Carla then wants to accumulate the balance sheet amounts from the company’s inception, so she creates an additional measure for the amount column, using the cumulative method to aggregate the amount. This will allow Carla to display this year’s balance sheet amounts without having to apply any complex calculation to include data not shown on her balance sheet report. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/ca6bd411-44e0-46a5-9554-d0c3f320e5af/547.jpg">&nbsp; </p> 
<p> And finally, Carla displays the cumulative balance sheet amounts in a hierarchical tree structure, depicting the annual cumulative effect with simplicity and clarity without requiring complicated manipulations and formulas. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/c157d349-1222-43a8-a61c-d1a376583375/547.png">&nbsp; </p> 
<h1>Summary</h1> 
<p> Parent child hierarchies are critically used in financial and other applications to graphically portray relationships between members. </p> 
<p> Hierarchical reporting is usually extremely difficult or impossible to resolve, while aggregating members presents an additional burden in terms of both design and resources. Pyramid’s “Model” app provides a code-free, drag-and-drop interface to define the various elements of the parent child structures on the fly, generating a comprehensive data model, facilitating direct query on the existing data source. Several aggregations are available to meet business logic requirements. Cumulative measure aggregation applies accumulation of measures for balance sheet operations. </p>]]></description>
          <pubDate>Thu, 21 Oct 2021 13:50:14 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/35hglcj/creating-parent-child-hierarchies</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Cumulative Totals</title>
          <link>https://community.pyramidanalytics.com/t/h7hgltl/cumulative-totals</link>
          <description><![CDATA[<p> Pyramid provides time-based cumulative measures as a method for aggregating non-additive values on a cumulative basis in a data model, allowing users to solve analytical problems typically found in financial and accounting applications, where balance sheet values need to be accumulated to a given point in time. </p> 
<p>&nbsp;</p> 
<h1>The Problem</h1> 
<p>&nbsp;</p> 
<p> Cumulative totals are generally required when reporting balances over periods of time for balance sheet accounts in financial accounting. Usually users need to create complex, inefficient models and formulas to replicate the accumulation effect or worse, they manipulate the database into producing raw balancing figures in tables. When done as formulas, the results are constantly recalculated for every cell in every report – further placing tremendous stress on the reporting system. </p> 
<p>&nbsp;</p> 
<p> The cumulative option to aggregate the measure on the granular level ensures the accumulated totals are available and accurately calculated at source. </p> 
<p> Better yet, they automatically accumulate across the chosen time hierarchy in the query – so the balance effect by different period models (calendar vs fiscal) is automatically handled without any programming or additional effort from the user.&nbsp; </p> 
<p>&nbsp;</p> 
<p> Last, cumulative aggregates are the perfect companion feature to <a href="/t/35hglcj/creating-parent-child-hierarchies" rel="nofollow noopener noreferrer">parent-child hierarchy&nbsp;</a>capabilities, running <strong>directly</strong> on any data source surfaced in Pyramid. Together, the two symbiotic functions make the process of building and delivering accounting based analytics accessible, fast, and entirely uncomplicated. </p> 
<p>&nbsp;</p> 
<h1>Example</h1> 
<p>&nbsp;</p> 
<p> Balance sheet values are always displayed as cumulative values. This report uses the classic context-based cumulative total to provide cumulative totals for all assets. Notice how the amounts accumulates per annum for all amounts existing on the report, so amounts for year 2020 is cumulative from previous years starting in 2017. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/a2b02fa5-72d6-4dac-ac40-3b736484fa67/547.png">&nbsp; </p> 
<p> When choosing to focus on a specific year – for example 2020, the cumulative effect is lost, displaying only amounts for the year 2020, because the context calculations are driven from the reporting “context” only. Notice how the amounts differ from the previous report. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/2d9154ad-8ebc-4dc7-8ee3-b183bc23ab70/547.png">&nbsp; </p> 
<p> A new measure – “Cumulative Amount” &nbsp;- is now added by using the “Cumulative” measure aggregation method in the Data Model tool. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/190d2b6f-92a4-4c10-b0d6-fa663aa94eeb/547.png">&nbsp; </p> 
<p> Adding the new measure to the report for 2020, we can see that the cumulative effect is not lost. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/3f8496e4-7a58-491f-a87b-14d1da821846/547.png">&nbsp; </p> 
<p> By using hierarchy chips for accounts and time, the user can expand or collapse the balance sheet or financial year at will, exposing whatever elements of the tree are relevant for the analysis, so the user can track how the allowance for debt has increased per annum, per quarter and by month. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/ace1c3d0-3cc3-4d28-b90b-fcf4f041fcba/547.png">&nbsp; </p> 
<p> And finally, by simply swapping the calendar date hierarchy with a fiscal date hierarchy, Pyramid automatically and effortlessly recalculates the cumulative amount and displays all hierarchies in their expandable and collapsible trees. By combining the power and flexibility of cumulative measures with parent-child hierarchies, Pyramid demonstrates it’s superior support for financial analytics. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/4206b1f1-1822-4830-98be-735efe164492/547.png">&nbsp; </p> 
<h1>Summary</h1> 
<p>&nbsp;</p> 
<p> Pyramid allows users to aggregate measures on the granular level in the data modelling phase. This cumulative feature enables users to independently view accumulated totals of an existing measure without having to create complex models or formulas that constantly recalculate for all cells. This provides accounting-based analytics with instantly available, accurate totals, automatically accumulating across calendar or fiscal date hierarchies. </p>]]></description>
          <pubDate>Thu, 21 Oct 2021 13:50:12 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h7hgltl/cumulative-totals</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Pyramid 2020.20 Issues Addressed</title>
          <link>https://community.pyramidanalytics.com/t/60hg3fa/pyramid-2020-20-issues-addressed</link>
          <description><![CDATA[<p> The following list enumerates all the main bug fixes in the&nbsp;2020.20&nbsp;version.&nbsp; </p> 
<p> <a href="/t/y7c9vp/pyramid-2020-released" rel="nofollow noopener noreferrer"><img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/0b6d2b73-d9a7-4ae1-9e35-5bef080912ef/h/547.jpg" style="margin:0px; padding:0px"></a>&nbsp;Back to&nbsp;<a href="/t/p8hg3wj/pyramid-2020-20-released" rel="nofollow noopener noreferrer">Pyramid 2020.20 release announcement</a> </p> 
<h2>Model</h2> 
<ul> 
 <li>Fixed an issue where unexpected results were returned in Discovery when using a diamond-shaped relationship in a model</li> 
 <li>Fixed a UI issue where it looked like the Pyramid Even Schedule was removed after closing and reopening the ETL</li> 
 <li>Fixed an issue where an error message appeared after clicking on the Undo button and going to the Master flow</li> 
 <li>Fixed an issue where using Divide in a Calculated Column had failed</li> 
 <li>Fixed an issue that limited&nbsp;the output of a 'Calculated Column'&nbsp;to 255 characters</li> 
 <li>Improved error message when using a space in the Target column of a Python script</li> 
 <li>Fixed an issue where using an Excel target in a model created folders when it should not</li> 
 <li>Fixed an issue where VARBINARY fields got discarded and weren't brought through to the data model screens</li> 
 <li>Fixed an issue where an Oracle direct query join had failed</li> 
</ul> 
<h2>Discover</h2> 
<ul> 
 <li>Fixed an issue where Hex values of custom colors were overwritten to slightly different values</li> 
 <li>Fixed an issue where Viewer users were unable to see the Decedents option in the context menu of a member in case Formulation was disabled in the user's profile</li> 
 <li>Fixed an issue where an ODATA link did not open a report that had a dot (.) in the column header</li> 
 <li>Fixed an issue where Ask a Question did not render a map in a report</li> 
 <li>Fixed a visual issue where filters expanded when using the Hebrew UI and based on specific Windows and browser zoom levels</li> 
 <li>Fixed an issue where Include Context in an Action did not work as expected when the user deselected items in the filter after selecting All</li> 
 <li>Fixed a performance issue related to using Set Element Order on a hierarchy with millions of items while the elements tree is open</li> 
 <li>Fixed an issue where a hierarchy was mistakenly marked as a time hierarchy</li> 
 <li>Fixed an issue where a report that was filtered by a background filter and was opened in a pop up didn't show which member it was filtered by</li> 
 <li>Fixed an issue where a parameter did not show in a report when used in a switch list</li> 
 <li>When using a custom color in Columns/Rows/Data of a grid, fixed an issue where Pyramid didn't indicate which custom color was used</li> 
 <li>Added the "Remember user's last selection" option to all filter types</li> 
 <li>Fixed an issue an endless spinner appeared when opening a tabular model with an unprocessed dimension</li> 
 <li>Fixed an issue where filters with long member names didn't seem as expected when using Hebrew UI language</li> 
 <li>Fixed an issue where the URL icon appeared in the grid for a URL column even if the URL value was empty<br> &nbsp;</li> 
 <li> <h3>Queries</h3> 
  <ul> 
   <li>When using a BW data source, fixed an issue where an error message appeared if the query returned a special character</li> 
   <li>Improved handling of dimensions disconnected from the fact table</li> 
   <li>Fixed an issue where an error message appeared when switching between Time Calculations</li> 
   <li>Fixed an issue where the Rank calculation in SQL produced unexpected results when there were multiple columns in a grid</li> 
   <li>Fixed an issue where a calculation that is based on parameter failed when placed in Filters</li> 
   <li>Fixed an issue where a blank member from an outer join was not visible in the selection tree</li> 
   <li>Fixed an issue where "Bin by size" had failed when the value was equal to or higher than 10 million</li> 
   <li>Fixed an issue where the order of&nbsp;non-alphanumeric characters produced unexpected results</li> 
   <li>Fixed an issue where a switch aggregation caused an enumeration error when placed in 'Combined Elements'</li> 
   <li>Added an option to remove Scope Isolation from the query</li> 
   <li>Fixed an issue where a custom logic that used&nbsp;a parameter&nbsp;returned empty results</li> 
   <li>Fixed an issue where running a very big query crashed the Runtime Engine</li> 
  </ul> </li> 
 <li> <h3>Visualizations</h3> 
  <ul> 
   <li>Fixed an issue where entering a high From value and a low To value in Custom Scale Limits caused the Axis Labels to disappear</li> 
   <li>Fixed an issue where a data point appeared for a null value</li> 
   <li>Fixed an issue where it was not possible to change back to the previous visual by clicking Undo after switching to an Open High Low Close chart</li> 
   <li>Fixed an issue where a chart legend showed eliminated items</li> 
   <li>Optimized pie chart labels visibility</li> 
  </ul> </li> 
</ul> 
<h2>Present</h2> 
<ul> 
 <li>Fixed an issue where a Dynamic Text that was placed in the Content master page was not updated as expected</li> 
 <li>Fixed an issue where some slides did not appear in the Presentation Launcher depending on the Windows and Browser zoom levels</li> 
 <li>Fixed several Cross Model Mapping issues where a filter returned unexpected results after selecting all items</li> 
 <li>Improved Cross Modell Mapping performance</li> 
 <li>Fixed an issue where a "The following parameter has no input" message appeared when using an interaction between a parameter-driven calculation and a grid</li> 
 <li>Fixed an issue where an input parameter was not found in a component that was added to a slide and causing the component to fail with a General Error</li> 
 <li>Fixed an issue where a parameter in an interaction was unselected after copy/paste</li> 
 <li>Fixed an issue where a presentation was corrupted after saving it while editing an unsaved one-off illustration</li> 
 <li>Fixed an issue where a disabled cascading filter was still being used in the query</li> 
 <li>Fixed an issue where clicking on Reset in a slide cleared a Dynamic Text value that was injected using a Target</li> 
 <li>Fixed an issue where selecting All in a cascading filter returned unexpected results</li> 
 <li>Fixed an issue where deselecting items after selecting All in a filter and then using Analyze Further opened the report with All selected in the filter</li> 
 <li>Fixed an issue where the 'Tooltip Designer' dialogue was cut off on a screen with 1366x768 resolution</li> 
 <li>Fixed an issue where Cascading filters with highlight interaction failed to load</li> 
</ul> 
<h2>Publish</h2> 
<ul> 
 <li>Fixed an issue where a Placeholder did not populate in a Subscription</li> 
 <li>Fixed an issue where the execution list of a schedule could not be sorted by date</li> 
 <li>Fixed an issue where a Publication schedule ran twice when it was expected to run once</li> 
 <li>Fixed an issue where a scheduled publication failed when the publication contained a report based on a 'SAP BW' data source and using 'Logon Tickets' as the auth type</li> 
 <li>Fixed an issue where a scheduled job name that was saved in Hebrew appears as ???</li> 
 <li>Fixed several issues where a schedule didn't run at the correct time or didn't run at all</li> 
 <li>Fixed an issue where the content was attached to Subscription email although the license did not have this option</li> 
 <li>Fixed an issue where a schedule didn't run if a trigger launch condition contained a Null</li> 
 <li>Fixed an issue where a scheduled Publication didn't run if the schedule had an empty filter</li> 
</ul> 
<h2>Formulate</h2> 
<ul> 
 <li>Fixed an issue where clicking on Refresh Metadata after selecting a 'Named Set' in a list showed Member Not Found as the selection</li> 
 <li>Fixed an issue in the List editor where after clicking on one of the items in the Selected panel, it did not appear in the Select Elements panel</li> 
 <li>Fixed an issue where the 'Contains' function failed when it used a level that is ordered by a different column</li> 
 <li>Fixed an issue where Search Elements within a formulation did not return results unless the hierarchy was expanded</li> 
 <li>Fixed an issue where a Dynamic Caption did not update as expected</li> 
 <li>Fixed an issue where unselecting a single member in a formulation resulted in several members being removed</li> 
 <li>Fixed an issue where a Filter node did not appear in List when using German UI language</li> 
 <li>Fixed an issue where formulations had failed for members with long names when column type was Decimal on IMDB</li> 
</ul> 
<h2>Illustrate</h2> 
<ul> 
 <li>Fixed an issue where an Illustration showed an incorrect color</li> 
 <li>Fixed an issue where renaming a one-off illustration had failed</li> 
 <li>Fixed an issue where Pyramid did not correctly indicate the font type of a Dynamic Text</li> 
 <li>Fixed an issue where it was not possible to create a dynamic text based on a report with BW parameters</li> 
 <li>Fixed an issue where Strike Trough didn't work for some text boxes</li> 
 <li>Fixed an issue where a Dynamic Text was removed after editing it without saving</li> 
</ul> 
<h2>Content Management</h2> 
<ul> 
 <li>Fixed an issue where copy and pasting content from My Content into Workgroup content didn't add a role</li> 
 <li>Fixed an issue where the 'Search' did not return results for users from a non-default tenant searching for cross tenant enabled content located in the default tenant</li> 
 <li>In the Data Source Changer, it is now possible to apply the "Duplicate" and "Cascade to Usages" setting to all items</li> 
 <li>Fixed an issue where the Migrating Wizard did not use the Proxy Settings,&nbsp;configured in the 'Admin Console' under 'Networking'</li> 
 <li>Fixed an issue where a "Request Error - Parallel process interrupted" message appeared when running Analyze Structure</li> 
 <li>Fixed an issue where Structure Analyzer didn't find errors in nested calculations</li> 
 <li>Fixed an issue where Hierarchies selection in the Runtime setting of a Presentation defaulted back to all after an import</li> 
 <li>Added a&nbsp;'Cancel' button&nbsp;to the spinner, which appears when opening a report</li> 
 <li>Fixed an issue where models appear more than once in the Data Source Changer</li> 
 <li>Fixed an issue where presentation data sources changed incorrectly after an import</li> 
 <li>Added an option to select between creating new copies of the content or replacing content when using the Migration tool</li> 
 <li>Fixed an issue a NullPointerException error appeared after deep pasting a Present</li> 
 <li>Fixed an issue where content that was removed from a presentation was re-created in a folder once the presentation was copied and deep pasted</li> 
 <li>Fixed an issue where migrating content to 'Workgroup Content' created a folder in the top-level which couldn't be removed</li> 
</ul> 
<h2>Printing / Export</h2> 
<ul> 
 <li>Fixed an issue where using 'Copy Raw Data' on an extensive report resulted in an Out of memory error</li> 
 <li>Fixed an issue where column headers were cut off in a print when using a custom font</li> 
 <li>Fixed an issue where Custom Visual printing did not work when loading external libraries</li> 
 <li>Fixed several issues where printing had failed</li> 
 <li>Fixed an issue where a large grid failed to print with a "The number of Cell Styles was exceeded" error</li> 
 <li>Fixed an issue where exporting a report with more than eight attributes on rows/columns had failed</li> 
 <li>Fixed an issue where the font size in a PowerPoint print was different than the one in the one set in Pyramid</li> 
 <li>Fixed an issue where only one chart was exported to Excel when exporting a Presentation with a trellised chart</li> 
 <li>Fixed an issue where empty columns appeared in an Excel export</li> 
 <li>Fixed an issue where a Custom Caption did not appear on a scheduled print</li> 
 <li>Fixed an issue where a duration column (hh:mm:ss) was formatted incorrectly when printed to Excel</li> 
 <li>Fixed an issue where the Excel sheets appeared in an incorrect order when printing a Present</li> 
 <li>Fixed an issue where a Present print from one slide had a slicer selection from another slide in the file name</li> 
 <li>Fixed an issue where after copying 'Raw Data' with the &lt;&gt; sign and pasting in an Excel file, the &lt;&gt; did not appear</li> 
 <li>Made German localization improvements in the 'Paper Type' dropdown</li> 
</ul> 
<h2>Admin</h2> 
<ul> 
 <li>Fixed an issue where logs were exported partially</li> 
 <li>Fixed an issue where a filtered User list only returned items from the current page</li> 
 <li>Fixed an issue where the second page of the transaction logs appeared empty</li> 
 <li>Added a new Member Security Cache timeout option</li> 
 <li>Fixed an issue where the Pyramid logs weren't&nbsp;cleared based on the pre-defined interval</li> 
 <li>Fixed an issue where a custom theme had caused slowness in Pyramid</li> 
 <li>Fixed an issue where Publication Schedules did not appear in the Admin after an upgrade</li> 
 <li>Fixed an issue where Provisioning sometimes failed with a "Snapshot isolation transaction aborted" error</li> 
 <li>Fixed an issue where it was not possible to update a non-admin SAML username</li> 
 <li>Fixed an issue where the Conversation button was not removed in Viewer mode when Workflows (Social Collaboration) was disabled</li> 
 <li>Fixed an issue where canceled items appeared in the Schedules &gt; Models list after selecting to hide inactive items</li> 
 <li>Fixed an issue where it was not possible to delete IMDB databases</li> 
 <li>The Display name of a data source was increased from 36 to 255 characters</li> 
 <li>Fixed an issue that caused the license upload to fail</li> 
 <li>Fixed an issue where an incorrect number of licenses appeared under 'Licensing'</li> 
 <li>Fixed an issue where sending an email via AWS had failed with a 'Could not convert socket to TLS' error on a k8s environment</li> 
</ul> 
<h2>Security</h2> 
<ul> 
 <li>Fixed an issue where a login screen appeared when logging into Pyramid using SAML ADFS Windows Authentication</li> 
 <li>Fixed an issue where the restrictive Profile permissions were applied to a Role in case both restrictive and permissive Profiles were assigned to it</li> 
 <li>Fixed an issue where, after switching from AD Authentication to SAML Authentication , a user was unable to log in if it had the same username as one of the AD users</li> 
 <li>Fixed an issue where the SAML setup Test button didn't validate the SSL certificate</li> 
</ul> 
<h2>API</h2> 
<ul> 
 <li>Fixed an issue where dataSource/recognizeDataBase did not validate the DB name</li> 
 <li>Fixed an issue where 'API2/access/createTenant' did not provide an error message when failing due to an already existing&nbsp;tenant</li> 
 <li>Fixed an issue where 'API2/tasks/findSchedule' returned spooled run jobs in addition to scheduled jobs</li> 
 <li>Fixed an issue where 'API2/tasks/runSchedule' logged two entries for the output of the same task</li> 
 <li>Fixed an issue where 'API2/content/getFolderItems' returned fewer items than expected</li> 
 <li>Fixed an issue where 'API2/content/import content did not return anything in the 'importDscMap' property</li> 
</ul> 
<h2>Installer</h2> 
<ul> 
 <li>Fixed an issue where adding AI service&nbsp;to a multi-server installation had failed</li> 
 <li>Fixed an issue where the initial username was saved incorrectly in the DB when using Russian characters on Windows installations</li> 
 <li>Fixed an issue where installing Kubernetes using RDS PostgreSQL failed if the username had an @ in it</li> 
 <li>Fixed an issue where unticking 'Auto Login' caused the Kubernetes deployment to fail</li> 
</ul> 
<h2>Mobile</h2> 
<ul> 
 <li>Fixed an issue where the Scroll position was changed while scrolling a presentation in the mobile app</li> 
 <li>Fixed an issue where the Play button in the motion bar did not work in the iPhone app</li> 
</ul> 
<h2>Other</h2> 
<ul> 
 <li>Made several corrections to the online help</li> 
 <li>The license expiration notice will now only appear for Enterprise Admins</li> 
</ul> 
<p> <u><strong><a href="https://www.pyramidanalytics.com/login" rel="nofollow noopener noreferrer" target="_blank">Installer Download</a></strong></u> </p>]]></description>
          <pubDate>Thu, 21 Oct 2021 13:48:45 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/60hg3fa/pyramid-2020-20-issues-addressed</guid>
          <dc:creator>Yakov Shaul</dc:creator>
        </item>

      <item>
          <title>Implementing row level security on any database</title>
          <link>https://community.pyramidanalytics.com/t/35hf6hx/implementing-row-level-security-on-any-database</link>
          <description><![CDATA[<p> Row-level or ‘Member-level’ security is a fundamental requirement in most analytic projects controlling which data items different users can view and analyze, from the highest level of detail down to the lowest. </p> 
<p> For example, in a company where salespeople are assigned to different regions, one might be able to view customers in the North, another can only view customers in the South, and a third, the manager, can view both regions. As security requirements often have more complex rules governing access policies, a flexible, high-performant approach is required to resolve the different scenarios. Complicating things, few database engines offer a comprehensive solution for enacting row-level security. This goes from bad to worse in organizations that use multiple technologies—where BI managers find themselves enacting multiple security regimes. </p> 
<p> Pyramid’s comprehensive security framework provides solutions for these types of issues—including security controls for access to functionality, content and reports, databases, data columns, and ultimately data rows. The entire framework pivots off a user/role-based model that can be designed centrally and applied to&nbsp;<em>any supported database&nbsp;</em>using point-and-click tools, with a common security model. </p> 
<p> For row- or member-level security specifically, this can be amped up significantly with a more scalable approach, where row-security rules can be materialized using tables and values in the database itself to deliver a fast, efficient mechanism for implementing row-level security. </p> 
<p> In this blog, I am going to focus on the most complicated type of security implementation: row-level security. </p> 
<h2>The problem</h2> 
<p> Without applying access security, users can view all content and data in the database. In a multi-user or multi-tenant database this is not acceptable since most projects require users to only see authorized data and content. </p> 
<p> While many tools often offer functions suitable only to specific levels of expertise (professional, intermediate or beginner), access to reports, databases, and even specific data columns should be controlled by security depending on users or roles. Row- or member-level security enables restrictions on data row access and it’s usually the most essential layer of security in realistic deployments. </p> 
<p> Some BI tools deploy a basic security model that only caters for simplistic requirements, while other BI tools do not apply the security filtering on the query, but rather query all the data and only apply the security filtering on the results—an inefficient mechanism. There are some tools that offer the mechanics but are very unscalable when applied to thousands of different users, each user with their own security profile. And then there are many other tools can only offer row-level security on their&nbsp;<em>own</em>&nbsp;proprietary database technologies. Last, applying security at this level requires an enterprise approach that cannot be achieved in a desktop environment—which then makes many desktop-based technologies difficult to secure. </p> 
<h2>Pyramid’s solution</h2> 
<p> Pyramid’s security framework is designed so that administrators can deploy security operations centrally and then apply it to one or more data technologies to restrict access to functions, content, databases, data tables, columns, and most critically: data rows. For row-level security, Pyramid provides both basic and data-driven options. </p> 
<p> The access restriction logic is always incorporated into the final query, ensuring complete conformity between all aggregated and detailed reports. The same report can then display different results depending on a user’s profile. </p> 
<p> In a basic row-security scenario, using simple point-and-click commands, administrators can assign hierarchy members explicitly to users or roles. This can be done for one or more hierarchies, and to set security on entire hierarchies and measures. However, this is inconvenient if there are hundreds or thousands of security permutations for users and roles. In this case, a data-driven framework becomes a necessity. </p> 
<p> A typical example of this is where a user must be granted viewer permission to all transactional data in one or multiple regions. The regions exist as a column in the customer hierarchy, which in turn is related to the transactional sales data. By mapping the user with one or more regions in a separate security table, access can be controlled through the relationships between the security, customer, and sales transaction tables. </p> 
<p> So, by identifying the user using a standard scripting function, all subsequent relationships in the data model are injected into the query, ensuring all security rules are applied within the query. By designating the mapped user table as a security table, non-administrative users cannot access the table and can’t use it to build reports and queries. </p> 
<p> Best of all, the security mechanics in the data-driven approach are highly scalable, using the database’s inherent capabilities to resolve who should see what&nbsp;<em>without</em>&nbsp;any tremendous memory or querying overhead. </p> 
<h2>Business case</h2> 
<p> Galina manages ILT’s enterprise security for three thousand users. They use SAP HANA for their data warehouse, a Snowflake database for their web logging, and Pyramid for their analytics. Galina adds a new data model for customer sales, where Galina applies security to ensure that customer sector users can only view customer data from their own sector. Several users belong to multiple sectors. A mapping security table has been created that defines which sectors each user is able to view. James, a manager, has access to retail, corporate, and commercial sector customers. Donette is a sales representative for both corporate and commercial sectors and Kris works only in the commercial sector. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/21b31144-1982-4e7e-929e-929402866864/547.png" width="321">&nbsp; </p> 
<p> In this example, the Security table is linked to the Customers table via the Customer Segment, and the Customers table is linked to the Sales Transactions table via the CustomerKey This chain of linked tables enables a user’s view to be automatically filtered by the system-controlled Userid of the logged in user.<br> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/3cdb936e-77fa-465e-898b-171dc35288a5/547.png" width="632">&nbsp; </p> 
<p> This will ensure that each user, when logged in, will only be able to query data pertinent to their defined customer segments. For example, James will be able to query records 1 to 3, Donette will only be able to query records 1 and 2, and Kris will only be able to query record 3. No users will be able to query record 4 as none of them have been assigned to the Government sector.<br> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/eada8f54-3343-4c95-aaa2-ce18fbc9a7c8/547.png" width="632">&nbsp; </p> 
<p> Galina maps the Security Table in the data model and designates it as a security table. Galina also links the Customer Segment in the Security Table to the sector in the Customers table. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/7b091250-95e8-4b50-994d-d6492f3ba2fe/547.png" width="460">&nbsp; </p> 
<p> Galina must now apply security functionality to the Security Table, identifying the logged-in user and linking the user to the Userid member in the Security Table. By doing so, the security parameters will be injected into the query at run time, ultimately linking the fact table to the logged in user. Galina adds a user role from the data source manager in the Admin console that will be used by all these users. She then assigns PQL logic to the Userid hierarchy from the security table. The one-line PQL code utilizes the string to member function to convert the username (derived from the logged-in user), returning a data “member” with the current Userid from the Security Table. The corresponding Customer Segment(s) links to the associated segment in the Customers table, further connecting to all related transactional data to ensure robust member-level security. </p> 
<p> In effect, the PQL function dynamically changes the resolved data member used in the query joins based on the user that is logged in. So, when James logs in, it resolves to “[Security].[UserId].[James]” and when Kris logs in it becomes “[Security].[UserId].[Kris]”. These are then&nbsp;<em>inherently</em>&nbsp;used in any queries to filter the underlying tables and secure the data and results.<br> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/11db49a3-8af8-42fe-b74e-e6dd14bc7065/547.png" width="632">&nbsp; </p> 
<p> When James views the Sales report, he views totals for all records belonging to the retail, corporate, and commercial segments. When Donette views the same report using the same data model and the same role, the report only displays data from corporate and commercial segments. Kris only retrieves totals for the commercial segment when viewing the same report. </p> 
<h3>James’ view</h3> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/5971704c-cfbb-420b-ac94-585eb5ba19a6/547.png" width="391">&nbsp; </p> 
<h3>Donette’s view</h3> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/798e45ee-a54b-4ca2-9eef-9cdfdb7bc443/547.png" width="382">&nbsp; </p> 
<h3>Kris’ view</h3> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/506dc305-48f8-4409-aebd-331bf8c94195/547.png" width="400">&nbsp;&nbsp;&nbsp; </p> 
<h2>Summary</h2> 
<p> Pyramid’s comprehensive security framework provides solutions for controlling access to functionality, content/reports, databases, data columns, and ultimately data rows. The entire framework pivots off a user/role-based model that can be designed centrally and&nbsp;<em>applied to any supported database</em>&nbsp;using point-and-click tools, with a common security model. </p> 
<p> Row-level or Member-level security is a critical requirement in analytics, ensuring the right data is accessible to the right people from the highest level of detail to the lowest. A flexible solution is required to cater for the complex security rules governing access policies, often difficult to implement in row-level scenarios. Many BI tools only cater for basic requirements and are inefficient when deploying member-level security. Other tools either apply query algorithms, use unscalable solutions, or only offer row-level security on their own proprietary databases. </p> 
<p> Pyramid’s row-level basic security framework allows easy point-and-click security assignments. The more advanced, scalable approach for larger security scenarios uses tables and values in the database in conjunction with Pyramid’s Query Language (PQL). Apart from being scalable and efficient, the entire framework pivots off a user/role-based model that can be applied to one or more supported databases or technologies using the same administrative tools and system. </p> 
<p> <em>This post originally appeared at </em><a href="https://www.pyramidanalytics.com/blog/details/blog-implementing-row-level-security-on-any-database" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/blog/details/blog-implementing-row-level-security-on-any-database</a> </p> 
<h2>Other Resources</h2> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/data%20sources/Member%20Security.htm" rel="nofollow noopener noreferrer" target="_blank">Member-level Security - Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/AdminClient/data%20sources/DynamicMemberSecurity.htm" rel="nofollow noopener noreferrer" target="_blank">Dynamic-member Security - Help</a> </p> 
<p> Dynamic Member-Level Security Video </p> 
<p> <iframe allowfullscreen class="wistia_embed" frameborder="0" height="177" name="wistia_embed" scrolling="no" src="https://fast.wistia.net/embed/iframe/qi76vp0gr2" width="320"></iframe> </p>]]></description>
          <pubDate>Mon, 26 Apr 2021 11:48:39 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/35hf6hx/implementing-row-level-security-on-any-database</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Time Intelligence: How date lists and ranges accelerate insights</title>
          <link>https://community.pyramidanalytics.com/t/h7hl1ka/time-intelligence-how-date-lists-and-ranges-accelerate-insights</link>
          <description><![CDATA[<p> <em>This is the fifth blog in the series on how Pyramid brings time intelligence into analytics.</em> </p> 
<p> In my previous blogs, I demonstrated how Pyramid provides&nbsp;<a href="/t/m1hl594/time-intelligence-custom-calculations-for-greater-perspective" rel="nofollow noopener noreferrer">automatic date parameters</a>&nbsp;to&nbsp;<a href="/t/35hl1km/time-intelligence-date-time-groupings-for-better-visibility" rel="nofollow noopener noreferrer">interrogate different data slices at will</a>;&nbsp;<a href="/t/y4hl1kg/time-intelligence-date-time-calculations-made-simple" rel="nofollow noopener noreferrer">how to add intelligent calculations in a few clicks</a>; and&nbsp;<a href="/t/m1hl594/time-intelligence-custom-calculations-for-greater-perspective" rel="nofollow noopener noreferrer">how to edit and adapt them</a>. In this last post, I show how a user can vary the date range of the data being analyzed, offering him full control and flexibility over how the data is displayed. This is a critical element of time intelligence data analysis that is often missing in comparable BI applications. </p> 
<h2>Business case</h2> 
<p> Paul, the data analyst at Intensive Health Care from my earlier post, would like to choose a date for his report and dynamically select the start and end dates for his date range selection. </p> 
<h3>Current report</h3> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/35cfe1b8-b9d7-4d67-b000-15b342c95643/547.png" width="388">&nbsp; </p> 
<p> Paul creates a “from” and “to” date parameter (parameters are simply a predefined list of items that can be injected into another function). He then uses them inside the “Range List” function in the List designer (located within the Formulate module). This function asks the user to designate a range of elements from a start element (“from”) to an end element (“to”). The list engine then creates a functional listing of items between the two points—perfect for building a range of dates. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/c512f3e0-3e89-4dae-abc4-3a5d1a29a062/547.png" width="632">&nbsp; </p> 
<h3>New report format</h3> 
<p> Paul now has a fully dynamic date range report that will give users full control over the dates shown in the report. As you can see in the image, after selecting June 2018 through February 2019 from the two parameter drop downs, the previous report changes to just the monthly data between the two date selections. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/c03c5d2a-5351-416d-8cbb-0ea6eb4da6fa/547.png" width="632">&nbsp; </p> 
<h2>Conclusion</h2> 
<p> In this series of blogs on time intelligence, I have briefly covered Pyramid’s tools for date-time analysis. The automatic date-time grouping function is available during data modeling (ETL) and also on-the-fly (See “<a href="https://www.pyramidanalytics.com/blog/details/blog-time-intelligence-date-time-groupings-for-better-visibility" rel="nofollow noopener noreferrer" target="_blank">Time intelligence: Date-time groupings for better visibility</a>”). The advanced formulation tool for calculating date-time calculations (year-to-date, month-to-date, etc.) are available as ready-built functions (See “<a href="https://www.pyramidanalytics.com/blog/details/blog-time-intelligence-date-time-calculations-made-simple" rel="nofollow noopener noreferrer" target="_blank">Time intelligence: Date-time calculations made simple</a>”) and can also be used in building more advanced user-defined functions (See “<a href="https://www.pyramidanalytics.com/blog/details/blog-time-intelligence-custom-calculations-for-greater-perspective" rel="nofollow noopener noreferrer" target="_blank">Time intelligence: Custom calculations for greater perspective</a>”). In this final blog, we have seen how Pyramid offers powerful tools to create parameters and date range functions that gives users pinpoint control of date ranges. </p> 
<p> The principle of both providing immense power to the business user, combined with the speed and ease to create dynamic functions, are the hallmark of Pyramid’s approach to bringing powerful BI functions to analytics. </p> 
<p> <em>This post originally appeared at </em><a href="https://www.pyramidanalytics.com/blog/details/blog-time-intelligence-how-date-lists-and-ranges-accelerate-insights" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/blog/details/blog-time-intelligence-how-date-lists-and-ranges-accelerate-insights</a> </p> 
<h2>Other Resources</h2> 
<p> <a href="/t/y4hl1fk/time-intelligence-a-critical-element-in-all-analytic-projects" rel="nofollow noopener noreferrer">Time intelligence: A critical element in all analytic projects - Blog</a> </p> 
<p> <a href="/t/35hl1km/time-intelligence-date-time-groupings-for-better-visibility" rel="nofollow noopener noreferrer">Time intelligence: Date-time groupings for better visibility - Blog</a> </p> 
<p> <a href="/t/y4hl1kg/time-intelligence-date-time-calculations-made-simple" rel="nofollow noopener noreferrer">Time intelligence: Date-time calculations made simple - Blog</a> </p> 
<p> <a href="/t/m1hl594/time-intelligence-custom-calculations-for-greater-perspective" rel="nofollow noopener noreferrer">Time intelligence: Custom calculations for greater perspective - Blog</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Formulate/Lists/Add%20Functions/Range_List.htm" rel="nofollow noopener noreferrer" target="_blank">Range List Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Formulate/Parameters/Parameters.htm" rel="nofollow noopener noreferrer" target="_blank">Parameters Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Formulate/Parameters/Date_Range_Parameters.htm" rel="nofollow noopener noreferrer" target="_blank">Example: Date Range Parameters Help</a> </p>]]></description>
          <pubDate>Thu, 22 Apr 2021 07:15:16 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h7hl1ka/time-intelligence-how-date-lists-and-ranges-accelerate-insights</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Time intelligence: Custom calculations for greater perspective</title>
          <link>https://community.pyramidanalytics.com/t/m1hl594/time-intelligence-custom-calculations-for-greater-perspective</link>
          <description><![CDATA[<p> <em>This is the fourth blog in the series on how Pyramid brings time intelligence into analytics.</em> </p> 
<p> My&nbsp;previous&nbsp;posts&nbsp;on&nbsp;time-intelligence&nbsp;covered Pyramid’s powerful and automatic date-time calculation creation capabilities. We saw how users can create custom calculations over a range of dates, and then compare results with other periods. We also saw how Pyramid provides one-click wizards and menus to create effortless date-time calculations. Collectively, these tools provide a comprehensive, ready-to-go solution for non-technical users facing common analytical problems. </p> 
<p> Despite the utility of Pyramid’s built-in time intelligence capabilities, users often need to create custom date-time calculations. In most BI tools, if the user has specific needs, it is almost impossible to achieve the exact result. </p> 
<p> Pyramid provides two foundational tools for creating custom calculations: “lists” and “formulas.” Using these two capabilities we can build and add any type of date-time logic needed for analytics. </p> 
<p> In this post, I will provide an example and outline of these tools and show how they can be used in date-time calculations. While these are advanced capabilities, they demonstrate how complex analytical logic can be implemented with Pyramid. </p> 
<h2>Date-time formulation tools</h2> 
<p> A general approach to date-time formulation requires the definition of three elements: a group of items on which to perform the calculation; a date that defines the grouping of the items; and a measure on which to perform the calculation. </p> 
<p> A classic example of this is month-to-date sales, which we will illustrate below. In our example, the group of items includes all transactions that occurred during the month. The date is an input used to define the day in the month which will be used to define when the transactions occurred. And the sales amount is the measure used to quantify the transactions. </p> 
<h3>Custom lists</h3> 
<p> You can create dynamic lists (or “sets”) with Pyramid’s graphic list designer. For example, we can use the Month to Date (MTD) function to create a group of items that are all dates in the month up to the selected date. We can further enhance the dynamic MTD calculation by using a date parameter—which will allow us to dynamically pick the end date for that range—and change the dates used in the MTD logic. (“Parameters” are simply a predefined list of items that can be injected into another function.) </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/0665a799-b274-432c-85b3-fa812174ff0f/547.png" width="632">&nbsp;&nbsp; </p> 
<h3>Custom formulas</h3> 
<p> The formula tool is used to create calculated values (as opposed to lists of items). Pyramid’s Formulate module has a graphic drop-and-drag user interface that enables you to build custom date-time formulas. For example, a user can sum all expenses incurred during the current year by creating a formula that automatically calculates the year-to-date (YTD) total for different metrics in the data set. </p> 
<p> &nbsp;<img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/3cc97550-e647-4858-82ae-50e14f7de110/547.png" width="632">&nbsp; </p> 
<h2>Business case example</h2> 
<p> Paul, a data analyst at Intensive Health Care, has produced a report that compares current month sales metrics with other period metrics. In addition, his CFO has requested a view of these figures from two years ago. This calculation must appear in the same report and all analyzed data should include this calculation. </p> 
<p> Paul’s current report looks like this: he has MTD, WTD, QTD, and YTD calculations that are driven by a date parameter—currently set to November 15, 2019. This effectively calculates all sales in November through the 15th; then all sales in the quarter through to November 15th. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/e5e47e5a-e7dd-4f3d-974c-e55c04f6e6ae/547.png" width="403">&nbsp; </p> 
<p> Now he needs to duplicate his base YTD calculation (created with the Formulate tool above), rename it as “YTD Previous -2,” and use the “Add Years” function to subtract two years, as seen in the highlighted text below. (Using a negative number with “Add Years” is effectively subtracting those years). </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/a50ca256-b9c5-43e7-b57f-e81028dd5272/547.png" width="632">&nbsp;&nbsp; </p> 
<p> Adding this calculated member will result in an additional “YTD Prev -2” column, as shown in the table below. This column now displays YTD figures for January 1, 2017 through to November 15, 2017 (pivoting off the selection of November 15, 2019). More impressively, it does it for all metrics in the report, not just Sales.<br> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/102208ea-1d8e-4cb4-93fc-8a4b0d6f38af/547.png" width="463">&nbsp; </p> 
<h2>Key takeaways</h2> 
<p> As you can see, Pyramid provides powerful tools to create custom lists and formulations that comprehensively extend basic time-date calculations. These advanced calculations let users examine data from non-traditional perspectives. In my last post in the time intelligence series, I’ll cover how Pyramid offers incredible control over selecting date ranges. </p> 
<p> <em>This post originally appeared at </em><a href="https://www.pyramidanalytics.com/blog/details/blog-time-intelligence-custom-calculations-for-greater-perspective" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/blog/details/blog-time-intelligence-custom-calculations-for-greater-perspective</a> </p> 
<h2>Other Resources</h2> 
<p> <a href="/t/y4hl1fk/time-intelligence-a-critical-element-in-all-analytic-projects" rel="nofollow noopener noreferrer">Time intelligence: A critical element in all analytic projects - Blog</a> </p> 
<p> <a href="/t/35hl1km/time-intelligence-date-time-groupings-for-better-visibility" rel="nofollow noopener noreferrer">Time intelligence: Date-time groupings for better visibility - Blog</a> </p> 
<p> <a href="/t/y4hl1kg/time-intelligence-date-time-calculations-made-simple" rel="nofollow noopener noreferrer">Time intelligence: Date-time calculations made simple - Blog</a> </p> 
<p> <a href="/t/h7hl1ka/time-intelligence-how-date-lists-and-ranges-accelerate-insights" rel="nofollow noopener noreferrer">Time Intelligence: How date lists and ranges accelerate insights - Blog</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/fx/PQL/Semantic/Statistical/Aggregate.htm" rel="nofollow noopener noreferrer" target="_blank">Aggregate (PQL)&nbsp;Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/fx/PQL/Semantic/Date-Time/YTD.htm" rel="nofollow noopener noreferrer" target="_blank">YTD (PQL) Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/developer/reference/fx/PQL/Semantic/Date-Time/AddYears.htm" rel="nofollow noopener noreferrer" target="_blank">Add Years (PQL) Help</a> </p> 
<p> Create a formula in Formulate Video </p> 
<p> <iframe allowfullscreen class="wistia_embed" frameborder="0" height="180" name="wistia_embed" scrolling="no" src="https://fast.wistia.net/embed/iframe/xys60mu7tx" width="320"></iframe> </p>]]></description>
          <pubDate>Tue, 20 Apr 2021 06:15:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/m1hl594/time-intelligence-custom-calculations-for-greater-perspective</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Time intelligence: Date-time calculations made simple</title>
          <link>https://community.pyramidanalytics.com/t/y4hl1kg/time-intelligence-date-time-calculations-made-simple</link>
          <description><![CDATA[<p> <em>This is the third blog in the series on how Pyramid brings time intelligence into analytics.</em> </p> 
<p> As covered in my previous blogs on time-intelligence, adding date-time groupings into your data makes the most basic analysis and reporting of data functional. Depending on your business, seeing sales by month is generally far more functional than seeing it by day. Understanding quarterly profit is easier to digest than seeing it week by week. </p> 
<p> Grouping data into logical time periods is helpful but does not always provide the full story. Business users are looking to understand the changes in values over time, not just static data snapshots, which usually requires clever calculations. </p> 
<h2>Date-time calculations</h2> 
<p> It’s common for a user to want to compare calculated date values over a range of dates against similar date ranges For example, a user may want to compare the difference in quarter-over-quarter sales,. Another user may want to compare year-to-date expenses with previous year-to-date expenses. The creation of these dynamic date-time calculations plays a critical role in the analytics platform. And once they have been made, they should be reusable in many dashboards and reports. </p> 
<p> Pyramid’s analytic tools and query language functions allow date-time calculations to be easily built, covering an almost limitless set of calculation varieties. These capabilities include a freeform function editor to build any type of required logical expression for advanced users and one-click wizards and menus for non-technical users—to auto-generate the different types of logic without code or complexity. </p> 
<p> The power of this approach allows these calculations to work in almost any query configuration—across any other dimensions and applicable to any and all metrics. And like all shared business logic elements in Pyramid, once these calculations have been set, they can be reused in multiple dashboards and reports. </p> 
<h2>Business case</h2> 
<p> John, the CIO of Intensive Health Care, would like to analyze his sales, net profit, expenses, overhead costs, and quantity. His analysis of several time views periods for the above metrics in a single dashboard will give him a bird’s-eye view of all key metrics for year-to-date, quarter-to-date, month to date, and week-to-date amounts. </p> 
<h3>The challenge</h3> 
<p> Using Power BI, John is required to separately write code for each metric, multiplied by the number of time-period calculations required. Using our example, this will mean 20 different sets of code (five metrics times four calculations). Yikes! Worse, they are hard coded to the current date only. Clearly not a BI analyst’s dream solution. </p> 
<p> <strong>DAX example of coding for a single MTD calculation on sales</strong> </p> 
<pre class="prettyprint">so MTD :=
IF (
    HASONEVALUE ( Dates[ISO Year] )
        &amp;&amp; HASONEVALUE (Dates[ISO Month Number] ),
    CALCULATE (
        SUM ( Sales[Sales Amount] ),
        FILTER (
            ALL ( Dates ),
            Dates[ISO Year] = VALUES ( Dates[ISO Year] )
                &amp;&amp; Dates[ISO Month Number] = VALUES ( Dates[ISO Month Number] )
                &amp;&amp; Dates[Date] &lt;= MAX ( Dates[Date] )
        )
    ),
    BLANK ()
)</pre> 
<h3>Pyramid’s tidy, codeless solution</h3> 
<p> Pyramid, on the other hand, offers a quick, codeless solution to add all above time intelligence variables in a single click using the “Time Intelligence” wizard in the Discover app—shown below. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/91e8a73b-443b-4455-afac-2a95bdc2a144/547.png" width="632">&nbsp; </p> 
<p> Once the calculations have been created and added to his report, John can continue adding as many metrics independently without requiring any further coding. In fact, he can select all the date-time calculations in one step, allowing him to view and analyze them in a single visualization. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/1fcdf22f-f963-424c-b663-e9cdb51ea895/547.png" width="485">&nbsp; </p> 
<p> If he elected to parameterize his logic, he can also choose the date that will drive the date-time input selections for determining the WTD, MTD, QTD, and YTD date ranges—making both the use of the calculations and their logic highly flexible at the same time. </p> 
<p> See how all the calculated values for WTD, MTD, QTD and YTD change if we change the date in the parameter below: </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/cfb2cfc9-38e4-4172-9ca2-5a0ffdfbdba5/547.png" width="405">&nbsp; </p> 
<p> This ability to create multiple metrics for various time periods in a few seconds instead of a few hours is a solid example of the power and flexibility of Pyramid’s calculation engine. To further boost the capabilities, advanced users can build fully customized date-time calculations using the underlying functional and querying logic. I’ll cover this in my next blog. </p> 
<p> <em>This post originally appeared at </em><a href="https://www.pyramidanalytics.com/blog/details/blog-time-intelligence-date-time-calculations-made-simple" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/blog/details/blog-time-intelligence-date-time-calculations-made-simple</a> </p> 
<h2>Other Resources</h2> 
<p> <a href="/t/y4hl1fk/time-intelligence-a-critical-element-in-all-analytic-projects" rel="nofollow noopener noreferrer">Time intelligence: A critical element in all analytic projects - Blog</a> </p> 
<p> <a href="/t/35hl1km/time-intelligence-date-time-groupings-for-better-visibility" rel="nofollow noopener noreferrer">Time intelligence: Date-time groupings for better visibility - Blog</a> </p> 
<p> <a href="/t/m1hl594/time-intelligence-custom-calculations-for-greater-perspective" rel="nofollow noopener noreferrer">Time intelligence: Custom calculations for greater perspective - Blog</a> </p> 
<p> <a href="/t/h7hl1ka/time-intelligence-how-date-lists-and-ranges-accelerate-insights" rel="nofollow noopener noreferrer">Time Intelligence: How date lists and ranges accelerate&nbsp;insights - Blog</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Calculations/other/Time%20Intelligence/Time%20Intelligence%20Wizard.htm" rel="nofollow noopener noreferrer" target="_blank">Time Calculation Wizard Help</a> </p> 
<p> Using the Time Calculation Wizard Video </p> 
<p> <iframe allowfullscreen class="wistia_embed" frameborder="0" height="200" name="wistia_embed" scrolling="no" src="https://fast.wistia.net/embed/iframe/1tr71v1lxa" width="320"></iframe> </p>]]></description>
          <pubDate>Tue, 13 Apr 2021 14:40:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/y4hl1kg/time-intelligence-date-time-calculations-made-simple</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Time intelligence: Date-time groupings for better visibility</title>
          <link>https://community.pyramidanalytics.com/t/35hl1km/time-intelligence-date-time-groupings-for-better-visibility</link>
          <description><![CDATA[<p> <em>This is the second blog in the series on how Pyramid brings time intelligence into analytics.</em> </p> 
<p> In my previous&nbsp;<a href="/t/y4hl1fk/time-intelligence-a-critical-element-in-all-analytic-projects" rel="nofollow noopener noreferrer">blog post</a>, I introduced the concept of grouping amounts in data periods by adding date components to your data to make the “bucketing” of information by date-time period easier and deliver more effective analytics. In this blog, I’ll explain this process in more detail. </p> 
<h2>Adding date-time buckets</h2> 
<p> To add “buckets” or groupings, we need to break down the date into all its essential properties: day, week, month, quarter, year, and all the various combinations used in reporting. Pyramid achieves this with two complementary methods: by either physically storing the derived groupings of date-time in the database as part of the data preparation process (technically called “materialization”) or by virtually adding these time groupings as calculations—determined dynamically when used. </p> 
<p> Both methods have their purpose and are used in different circumstances. Having both options will give you tremendous scope for solving your analytic and reporting challenges easily. </p> 
<h3>Storing date-time groups in the database</h3> 
<p> Let’s begin with the physical storage approach. Users typically choose to physically store date-time groupings in the database for performance reasons, and because it offers greater flexibility when designing and configuring the various groups or buckets. In Pyramid’s “Model” application (where data is cleansed or prepared) tools, the “Time Intelligence” node allows users to add this capability in two clicks [see&nbsp;<a href="http://help.pyramidanalytics.com/Content/Root/main%20help/apps/Model/Data%20Flow/Preparation.htm?Highlight=time%20intelligence" rel="nofollow noopener noreferrer" target="_blank">Pyramid Help</a>&nbsp;for more details]. This lets a user choose which time groupings to use and select when different time periods should be calculated from (for example “fiscal” years, etc.). </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/ef37211a-154d-4658-b93e-5ced09bda5f4/547.png" width="350">&nbsp; </p> 
<p> Once the node is set into a data flow, new columns are generated as shown below in the “before and after” image. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/de853a85-cbe4-4f90-b949-032c82940d39/547.png" width="523">&nbsp; </p> 
<p> Alternatively, users can manually create custom date-time groupings using the “Calculated Columns” node and the vast date-time PQL function library. Yet another option involves using R or Python scripting to build out highly sophisticated time logic. These are more advanced choices, which I won’t cover here. </p> 
<p> The drawback of this approach is that the results need to be stored in the database—or “materialized.” This poses issues when the data source is read-only, or if the data model is meant to query the database on the fly. </p> 
<p> If this is the case, the second option comes into play. </p> 
<h3>Virtual date-time groups: Calculations on the fly</h3> 
<p> An on-the-fly solution is ideally suited when sourcing data from a data source when it is not possible to save a new derived column back into the database. </p> 
<p> Pyramid’s Discover tool provides simple right-click functions to create and add a virtual time grouping to your data model that can be dropped and dragged into any report like its “stored” cousin. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/64a202b4-5804-42e0-b56e-436aed2d8021/547.png" width="435">&nbsp; </p> 
<p> Once the “year” option is selected, a virtual year column is created, as shown below in the “before and after” image. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/2e0fc40d-5af6-4f70-9cd1-dc1ee1c0c569/547.png" width="452">&nbsp; </p> 
<p> While the virtual approach can offer the same outcomes as the stored approach, it comes with a few drawbacks. First, on very large datasets, its performance can be slower. Also, there are less options for creating complex time periods and setting the logic for each grouping in a different way (like “fiscal” periods). </p> 
<p> <strong>In the end, it’s up to users to choose the method that suits them and their data, limitations notwithstanding.</strong> </p> 
<h2>MDX models vs. SQL models</h2> 
<p> The last comment in this blog covers some technical minutia. Unlike SQL-based data sources, MDX-based data models (like Microsoft OLAP or SAP BW cubes) generally should have the date-time groupings designed into the cubes natively; since it’s often impractical to add them afterwards. This does not apply to time-based calculations (like “year-to-date” or “year-on-year”)—which will be covered in my next blog. </p> 
<p> <em>This post originally appeared at </em><a href="https://www.pyramidanalytics.com/blog/details/blog-time-intelligence-date-time-groupings-for-better-visibility" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/blog/details/blog-time-intelligence-date-time-groupings-for-better-visibility</a> </p> 
<h2>Other Resources</h2> 
<p> <a href="/t/y4hl1fk/time-intelligence-a-critical-element-in-all-analytic-projects" rel="nofollow noopener noreferrer">Time Intelligence: A Critical Element In All Analytic Projects - Blog</a> </p> 
<p> <a href="/t/y4hl1kg/time-intelligence-date-time-calculations-made-simple" rel="nofollow noopener noreferrer">Time intelligence: Date-time calculations made simple - Blog</a> </p> 
<p> <a href="/t/m1hl594/time-intelligence-custom-calculations-for-greater-perspective" rel="nofollow noopener noreferrer">Time intelligence: Custom calculations for greater perspective - Blog</a> </p> 
<p> <a href="/t/h7hl1ka/time-intelligence-how-date-lists-and-ranges-accelerate-insights" rel="nofollow noopener noreferrer">Time Intelligence: How date lists and ranges accelerate&nbsp;insights - Blog</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Calculations/Custom%20Columns/Date%20Parts.htm" rel="nofollow noopener noreferrer" target="_blank">Date Parts Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Model/Model%20Pro/Data%20Flow/Preparation/Time%20Intelligence.htm?Highlight=time%20intelligence" rel="nofollow noopener noreferrer" target="_blank">Time Intelligence Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/Smart%20Discovery/Build%20Smart%20Discoveries/Date-TimeCalculations.htm" rel="nofollow noopener noreferrer" target="_blank">Date-Time Calculations Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Building%20Queries/Metadata%20Trees/DateTimeHierarchies.htm" rel="nofollow noopener noreferrer" target="_blank">Date-Time Hierarchies Help</a> </p>]]></description>
          <pubDate>Mon, 12 Apr 2021 06:10:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/35hl1km/time-intelligence-date-time-groupings-for-better-visibility</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Time intelligence: A critical element in all analytic projects</title>
          <link>https://community.pyramidanalytics.com/t/y4hl1fk/time-intelligence-a-critical-element-in-all-analytic-projects</link>
          <description><![CDATA[<p> <em>This is the first blog in a series on how Pyramid brings time intelligence to analytics.</em> </p> 
<h2>The two core challenges</h2> 
<h3>Date-time groupings and “buckets”</h3> 
<p> Central to most analytic systems is the requirement to apply time to an analysis or report. The first and usually simplest component is to view amounts grouped in date “buckets” or periods. We can usually achieve this after identifying the existing date-time field on a data set—which is usually on the “grain,” or transactional detail of the stored data in the database. Once we have this date element (or elements if there are multiple dates), we can use time as a key element in all reporting. </p> 
<p> To illustrate this, consider a grid of sale amounts per transactional date that has been converted to a column chart. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/74317636-dd1e-47c1-81fc-7107bcd59c53/547.png" width="632">&nbsp; </p> 
<p> Seeing the data in this example at the individual day level is too granular. We need to add logical super groupings of dates and times to allow the reporting to show more useful period buckets. Grouping amounts into date periods by adding new columns to the data set will allow us to add time intelligence to the original data set. </p> 
<p> Using our example, it is difficult to discern performance over the course of the year. One obvious approach is to total the results by month, which we solve by creating a separate “bucket” for each month and summing all sales by each month. From the visual below, we can now see the monthly grouping, a much clearer picture of our sales performance for that year. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/1427a619-4bdb-4496-9640-1a754ef94809/547.png" width="621">&nbsp; </p> 
<p> Creating multiple buckets for different date and time scenarios will enable us to analyze our data with more flexibility and clarity. </p> 
<h3>Date-time calculations</h3> 
<p> In the next stage, let’s assume I want to see the sales totals for 2017 and compare them to 2018. Here, I not only do I want to see the data bucketed into annual figures, I also want to see the absolute difference and the percentage change between the annual numbers. </p> 
<p> This is the second component of time intelligence: creating calculations over a range of dates and comparing them against previous periods. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/e17c5fc5-32d2-4c13-870a-2bf654ed044d/547.png" width="396">&nbsp; </p> 
<h2>Pyramid’s time intelligence armada</h2> 
<p> The above scenarios are simplistic but cut to the heart of what most analyses need to repeatedly do: visualize data over time. However, what seems a simple task can be difficult with the wrong analytics tool. Indeed, the challenge of making all logical elements of dates and time can become overly complicated or unworkable. Many BI solutions require users to contort data unnecessarily and manipulate report designs to accommodate complex date and time logic, or leave the user with a handful of clumsy options that force them to do the “clever” stuff in offline tools like Excel. </p> 
<p> Pyramid includes an array of tools, wizards, and functions to solve both sets of time-intelligence challenges. The capabilities are highly effective and user-friendly, and work for all data sources and query languages supported by Pyramid (MDX and SQL)—covering the basics all the way through to highly sophisticated functionality. </p> 
<p> <em>The next set of blogs in this series will cover these elements in greater detail.</em> </p> 
<p> <em>This post originally appeared at </em><a href="https://www.pyramidanalytics.com/blog/details/blog-time-intelligence-a-critical-element-in-all-analytic-projects" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/blog/details/blog-time-intelligence-a-critical-element-in-all-analytic-projects</a> </p> 
<h2>Other Resources</h2> 
<p> <a href="/t/35hl1km/time-intelligence-date-time-groupings-for-better-visibility" rel="nofollow noopener noreferrer">Time intelligence: Date-time groupings for better visibility - Blog</a> </p> 
<p> <a href="/t/y4hl1kg/time-intelligence-date-time-calculations-made-simple" rel="nofollow noopener noreferrer">Time intelligence: Date-time calculations made simple - Blog</a> </p> 
<p> <a href="/t/m1hl594/time-intelligence-custom-calculations-for-greater-perspective" rel="nofollow noopener noreferrer">Time intelligence: Custom calculations for greater perspective - Blog</a> </p> 
<p> <a href="/t/h7hl1ka/time-intelligence-how-date-lists-and-ranges-accelerate-insights" rel="nofollow noopener noreferrer">Time Intelligence: How date lists and ranges accelerate&nbsp;insights - Blog</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/Smart%20Discovery/Build%20Smart%20Discoveries/Date-TimeCalculations.htm" rel="nofollow noopener noreferrer" target="_blank">Date-Time Calculations Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Building%20Queries/Metadata%20Trees/DateTimeHierarchies.htm" rel="nofollow noopener noreferrer" target="_blank">Date-Time Hierarchies Help</a> </p>]]></description>
          <pubDate>Thu, 08 Apr 2021 09:04:53 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/y4hl1fk/time-intelligence-a-critical-element-in-all-analytic-projects</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Calculating differences without code</title>
          <link>https://community.pyramidanalytics.com/t/35hl1fx/calculating-differences-without-code</link>
          <description><![CDATA[<p> <em>In part 3 of my blog series on contextual calculations (see&nbsp;<a href="/t/h7hl1t4/stop-writing-code-running-totals-made-easy" rel="nofollow noopener noreferrer">part one</a>&nbsp;and&nbsp;<a href="/t/y4hl1zk/pareto-analysis-using-the-8020-rule" rel="nofollow noopener noreferrer">part two</a>), I cover the powerful ability to calculate differences between current and previous row values for a metric and graphically display results in a waterfall chart.</em> </p> 
<p> Differences between two metrics are very commonly used to analyze period-on-period changes. Calculating differences often highlights other issues that require further investigation. </p> 
<h2>The problem</h2> 
<p> A business user is reviewing monthly sales figures and would like to see the “ups” and “downs” in the numbers as the year has unfolded. In order to achieve this, he would like to see the movements in sales represented in a data visual that is easy for him to grasp the trend. </p> 
<h2>Waterfall chart</h2> 
<p> In our example the business user might want to graphically depict the differences in a waterfall chart that is a great visual to see movements highlights while showing increasing amounts in green and decreasing amounts in red. </p> 
<h2>The headache found in most BI tools</h2> 
<p> In most BI tools, this involves tricky coding that requires multiple, complicated, and time-consuming steps. For example, building differential values and waterfall charts in&nbsp;<a href="https://docs.microsoft.com/en-us/power-bi/visuals/power-bi-visualization-waterfall-charts" rel="nofollow noopener noreferrer" target="_blank">Power BI</a>&nbsp;can be a long and challenging process. Worse, the solution offers no flexibility and hard-codes elements of the query. </p> 
<p> With Pyramid you can create an additional calculated difference column in a simple, one-click step with no code required—while still leaving the user the capability to change the calculations intact. </p> 
<h2>Metric differences in a single click</h2> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/7d2e8f0e-b6da-4484-b7c8-7a269811f608/547.png" width="282">&nbsp;&nbsp; </p> 
<p> With a single right click on the sales metric, we can choose a differential calculation. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/41af312d-904b-4bf3-9c1c-3774c0ad7813/547.png" width="327">&nbsp; </p> 
<p> And the period-on period sales difference is instantly shown in our grid visualization. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/6d6450cf-0b62-42ca-8972-c11a16af43f1/547.png" width="1">&nbsp;<img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/69234336-0707-4da8-9f0c-6776d7e6ae74/547.png" width="632">&nbsp; </p> 
<p> With one more click, we can use Pyramid’s out-of-the-box waterfall chart to draw both the movements and the color of the movements in a graphic. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/b1e3c9a0-3488-4267-aca0-d78473ea3d66/547.png" width="632">&nbsp;<br> &nbsp; </p> 
<h2>Conclusion</h2> 
<p> With Pyramid, a user can create a difference calculation that: </p> 
<ul> 
 <li>Does not need developer assistance</li> 
 <li>Only requires a few clicks</li> 
 <li>Can use the same definition without requiring additional definitions when he decides to analyze by different period type (or any other dimension)</li> 
</ul> 
<p> Pyramid provides a highly versatile, powerful, code-free and user-friendly tool for calculating numerous business analytic applications and reports. </p> 
<p> <em>This post originally appeared at </em><a href="https://www.pyramidanalytics.com/blog/details/blog-calculating-differences-without-code" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/blog/details/blog-calculating-differences-without-code</a> </p> 
<h2>Other Resources</h2> 
<p> <a href="/t/h7hl1t4/stop-writing-code-running-totals-made-easy" rel="nofollow noopener noreferrer">Stop Writing Code:&nbsp;Running Totals Made Easy - Blog</a> </p> 
<p> <a href="/t/y4hl1zk/pareto-analysis-using-the-8020-rule" rel="nofollow noopener noreferrer">Pareto Analysis: Using the 80/20 Rule - Blog</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Visualizations/Finance%20Charts/Waterfall%20Chart.htm?Highlight=waterfall" rel="nofollow noopener noreferrer" target="_blank">Waterfall Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Calculations/contextCalcs/Context%20Calculations.htm" rel="nofollow noopener noreferrer" target="_blank">Context Calculations Help</a> </p> 
<p> Waterfall Charts Video </p> 
<p> <iframe allowfullscreen class="wistia_embed" frameborder="0" height="180" name="wistia_embed" scrolling="no" src="https://fast.wistia.net/embed/iframe/r7m6j8vnvw" width="320"></iframe> </p> 
<p> Waterfall Settings Video </p> 
<p> <iframe allowfullscreen class="wistia_embed" frameborder="0" height="200" name="wistia_embed" scrolling="no" src="https://fast.wistia.net/embed/iframe/lsn2vwh29v" width="320"></iframe> </p>]]></description>
          <pubDate>Wed, 07 Apr 2021 08:06:36 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/35hl1fx/calculating-differences-without-code</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Pareto Analysis: Using the 80/20 Rule</title>
          <link>https://community.pyramidanalytics.com/t/y4hl1zk/pareto-analysis-using-the-8020-rule</link>
          <description><![CDATA[<p> <em>In this second post on my three-part series on contextual calculations, I examine how Pyramid can quickly create business calculations like Pareto with just a few clicks.</em> </p> 
<p> An Italian economist by the name of&nbsp;<a href="https://en.wikipedia.org/wiki/Vilfredo_Pareto" rel="nofollow noopener noreferrer" target="_blank">Vilfredo Pareto</a>&nbsp;observed that 80 percent of the land in Italy belonged to 20 percent of the population. In his research, he found that this rule applied in many diverse domains. Since then we have used his principle when trying to find patterns in our businesses and in our lives. With the explosion and availability of data and analytic capabilities we are now more capable and empowered to find more and more of these 80/20 nuggets that give us actionable insights. </p> 
<h2>Pareto implementation challenges</h2> 
<p> Most modern BI tools do not allow for easy, code-free methods of creating flexible calculations like running totals (<a href="/t/h7hl1t4/stop-writing-code-running-totals-made-easy" rel="nofollow noopener noreferrer">see previous post</a>). And like running totals, the&nbsp;<a href="https://en.wikipedia.org/wiki/Pareto_analysis" rel="nofollow noopener noreferrer" target="_blank">Pareto analysis</a>&nbsp;requires the calculation of cumulative percentages of totals. Such complexity and difficulty in implementing basic formulations make the delivery of comprehensive analytics challenging for most end-users. </p> 
<p> To gauge such complexity, it’s worth looking at the steps needed to add Pareto in competing solutions: </p> 
<ul> 
 <li><a href="https://exceleratorbi.com.au/pareto-analysis-in-power-bi/" rel="nofollow noopener noreferrer" target="_blank">Power BI</a></li> 
 <li><a href="https://help.tableau.com/current/pro/desktop/en-us/pareto.htm" rel="nofollow noopener noreferrer" target="_blank">Tableau</a></li> 
</ul> 
<p> In contrast, Pyramid offers a one-click solution to adding Pareto metrics to your analyses that will be usable in any visual. </p> 
<h2>Identifying your best customers: Pareto in one-click</h2> 
<p> Apex Cycles wants to identify their top customers that account for most of their sales for the current year. Furthermore, they would like to identify which products and branches contribute towards most of their sales. How can we use Pyramid to improve, simplify, and speed-up this analytical process? </p> 
<p> First, we start by building a simple column chart of sales by customer. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/9ee546d2-0f5c-4925-95e3-5490822c4804/547.png" width="632">&nbsp; </p> 
<p> Then, by simply right clicking on the Sales metric, we can instantly add a Pareto metric based on sales that automatically show cumulative sales as a percentage of the total. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/ec984e81-9935-4524-857c-2fa29b130b48/547.png" width="600">&nbsp; </p> 
<p> For added clarity, we put this Pareto metric on the secondary axis as a spline chart. And the Pareto report is complete! Uncomplicated, intuitive, and entirely dynamic. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/3f7e1078-53c4-46c3-85b6-386a7305525c/547.png" width="632"> </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/1744dadb-b5ed-4321-aef8-24be28a22a87/547.png" width="632">&nbsp; </p> 
<p> Reading from this report, we can see that the first five customers account for 80% of all sales. </p> 
<h2>Focus on products</h2> 
<p> Now if we want to complete the same analysis for products instead, we can simply swap out customers with product and instantly get the new analysis without any further manipulation or code. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/7f435a66-7db7-4d4a-a855-f921f2672c71/547.png" width="632"> </p> 
<p> Here, we can see that four products account for roughly 80% of sales. </p> 
<h2>Conclusion</h2> 
<p> With Pyramid the user can create a Pareto analysis that: </p> 
<ul> 
 <li>Does not need any developer input</li> 
 <li>Only requires a few clicks</li> 
 <li>Can instantly re-use the same function even after changing other selections in the report</li> 
</ul> 
<p> Pyramid is a highly versatile, powerful, code-free, and user-friendly tool for creating business calculations like Pareto. </p> 
<p> <em>This post originally appeared at </em><a href="https://www.pyramidanalytics.com/blog/details/blog-pareto-analysis-using-the-80-20-rule" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/blog/details/blog-pareto-analysis-using-the-80-20-rule</a> </p> 
<h2>Other Resources</h2> 
<p> <a href="/t/h7hl1t4/stop-writing-code-running-totals-made-easy" rel="nofollow noopener noreferrer">Stop Writing Code - Running Totals Made Easy - Blog</a> </p> 
<p> <a href="/t/35hl1fx" rel="nofollow noopener noreferrer">Calculating Differences Without Code - Blog</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Advanced%20Query%20Functions/Pareto.htm" rel="nofollow noopener noreferrer" target="_blank">Pareto Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Calculations/contextCalcs/Context%20Calculations.htm" rel="nofollow noopener noreferrer" target="_blank">Context Calculations Help</a> </p>]]></description>
          <pubDate>Mon, 05 Apr 2021 08:55:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/y4hl1zk/pareto-analysis-using-the-8020-rule</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Stop Writing Code: Running Totals Made Easy</title>
          <link>https://community.pyramidanalytics.com/t/h7hl1t4/stop-writing-code-running-totals-made-easy</link>
          <description><![CDATA[<p> <em>In this part 1 of my blog series on contextual calculations, I explore running totals in Pyramid. Running or cumulative totals allow business users to see how different metrics add up from the first item in a report to the last item.</em> </p> 
<h2>The problem</h2> 
<p> Consider the following business problem. A business user sees monthly amounts of sales and would like to track when important milestones have been reached. In order to achieve this, he would like to see running totals of sales so he can track when a $1m milestone was achieved. Due to the ad-hoc discovery nature of his investigation, he might also want to track this on different levels of granularity, such as by quarter, by month, or by week. </p> 
<p> In the image below, the user is not able to see when the $1m, $2m and $3m milestones were achieved. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/1459d849-b530-4518-995a-83c9a8e5fb47/547.png" width="422">&nbsp; </p> 
<p> Creating running totals is often part of an ad-hoc reporting exercise that requires finicky coding with a dependence on developers and the associated software development lifecycle. In Pyramid, however, you can create running totals in a simple one-click step—no coding required. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/69646297-1070-4d58-884b-5b09d595ceeb/547.png" width="632">&nbsp; </p> 
<h2>The headaches found in most BI tools</h2> 
<p> For each calculation the user will need to write code specific to the combination of dimensions and measures he wants to view in his visual or report. This is normally beyond the capabilities of most consumers, and even some proficient end-users will require assistance from an experienced developer. This introduces the common time-to-result lag of specifications, documentations, development, testing etc. In our example, the developer will need to create three different variables for company, salesman and branch, each with three different time options for quarter, month and week, resulting in nine separate variables, each requiring their own code. YIKES! </p> 
<p> Here’s a sample of DAX code for a running total (this would have to be copied and adjusted nine times): </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/8f7e24c9-3d0c-4453-9545-c554fdf530ac/547.png" width="587">&nbsp; </p> 
<p> At this point, business users will either spend a large amount of time creating all the variables and code required for this solution, or decide that it is not worth the effort and instead use off-line tools like Excel that destroy the centrality of analysis and reporting. </p> 
<h2>Running totals in a single click</h2> 
<p> With a single right click on sales metrics in Pyramid’s Discover tools, the user can add a dynamic “Cumulative Total.” </p> 
<p> &nbsp;<img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/445649dd-7d38-4aa6-807b-40bb3c5652f5/547.png" width="632">&nbsp; </p> 
<p> And when you swap out months or any other hierarchy or add additional hierarchies, the running total is automatically recalculated, no further coding required. </p> 
<h2>Conclusion</h2> 
<p> With Pyramid the user can create a running total that: </p> 
<ul> 
 <li>Does not need any developer input</li> 
 <li>Only requires a few clicks</li> 
 <li>Can instantly re-use the same function, even after changing other selections in the report</li> 
</ul> 
<p> <em>This post originally appeared at </em><a href="https://www.pyramidanalytics.com/blog/details/blog-stop-writing-code-running-totals-made-easy" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/blog/details/blog-stop-writing-code-running-totals-made-easy</a> </p> 
<h2>Other Resources</h2> 
<p> <a href="/t/y4hl1zk/pareto-analysis-using-the-8020-rule" rel="nofollow noopener noreferrer">Pareto Analysis: Using the 80/20 Rule - Blog</a> </p> 
<p> <a href="/t/35hl1fx/calculating-differences-without-code" rel="nofollow noopener noreferrer">Calculating differences without code - Blog</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/DiscoverLite/Build%20Lite%20Discoveries/ContextCalcs.htm" rel="nofollow noopener noreferrer" target="_blank">Context Calculations Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Calculations/contextCalcs/context%20cumulatives.htm" rel="nofollow noopener noreferrer" target="_blank">Cumulative Context Functions Help</a> </p> 
<p> Context Calculations Video </p> 
<p> <iframe allowfullscreen class="wistia_embed" frameborder="0" height="180" name="wistia_embed" scrolling="no" src="https://fast.wistia.net/embed/iframe/4ab7nm8tfd" width="320"></iframe> </p>]]></description>
          <pubDate>Thu, 25 Mar 2021 09:04:02 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h7hl1t4/stop-writing-code-running-totals-made-easy</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Amplify your feedback: Pervasive Collaboration with Pyramid</title>
          <link>https://community.pyramidanalytics.com/t/q6hl1tb/amplify-your-feedback-pervasive-collaboration-with-pyramid</link>
          <description><![CDATA[<p> In part 2 of my&nbsp;<a href="/t/x2hl1m9/actionable-data-insights-in-minutesnot-hours" rel="nofollow noopener noreferrer">blog series on analytic collaboration</a>, I cover the powerful ability to comment and annotate data models without specific reports or dashboards. </p> 
<h2>How to share comments on data that appears in many reports</h2> 
<p> How can I collaborate with users I don’t know—who are using reports that I don’t know about—using a shared analytics and BI platform? Pyramid provides a solution that enables me to effortlessly collaborate with all users accessing shared data models, regardless of their access to specific reports or dashboards. </p> 
<h2>The power of annotating data models without attachment to specific reports</h2> 
<p> Without Pyramid’s solution, I would first have to source any and all reports that access this data point. Alternatively, I could provide comments in a specific report knowing that any other variation of this data in another report or dashboard would not include the commentary. It’s common for a user to abandon the task because of its complexity and difficulty. The organization is left all the poorer for its inability to share insights and collaborate on data and analysis. </p> 
<h2>Use Case</h2> 
<p> The following scenario illustrates Pyramid’s commenting capabilities: </p> 
<ul> 
 <li>John, the CFO for Apex Bicycle Company, sees the sales figures for the “Mountain-200 Black bicycle, 46” for the Manufacturer Woolson is down to zero after three consecutive months of positive sales from January to March 2019.</li> 
 <li>After an initial investigation, he wants to alert all users that there is an issue with the vendor, and they should be aware that this could impact future sales in other states.</li> 
 <li>He knows that there are no other users that view his report, but there are three additional departments (Sales Department, Product Department and Procurement Department) that track sales, including the mountain bike referenced above. In some cases, numerous users in each department are running between 10 and 20 different sets of analysis for each department.</li> 
 <li>He would like all users within the three departments to be aware of this issue and to consider this in all reports that reference the declining sales figures.</li> 
</ul> 
<h2>Pervasive Collaboration</h2> 
<ul> 
 <li>With Pyramid, Mike can initiate a conversation thread on the relevant sales data points and invite stakeholders to participate in further discussions.</li> 
 <li>As all stakeholders across all departments access Pyramid’s platform through a centrally hosted browser, Mike knows that all users will be instantly alerted when he comments on the data, regardless of which specific report or dashboard they are using or reviewing. Better yet, the comments will also show up in any ad-hoc review of the data as well.</li> 
</ul> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/048664d4-d7a5-41dc-b6c5-37f5bfbf8168/547.png">&nbsp; </p> 
<p>&nbsp;</p> 
<ul> 
 <li>In addition, Mike can take a snapshot of the data—along with specific query at the time of his comment—so that all users will have a historical view of the data at the time the comment was made in case the data changes.</li> 
</ul> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/e1d02e98-a139-4834-9c6e-76ccea3dbda9/547.png" width="632">&nbsp; </p> 
<p> In summary, Pyramid is the only BI tool supplier to provide a powerful, ubiquitous, simple, user-friendly, and pervasive collaboration tool that works on reports and data models alike with live, simultaneous collaborative features. </p> 
<p> <em>This post originally appeared at </em><a href="https://www.pyramidanalytics.com/blog/details/blog-amplify-your-feedback-pervasive-collaboration-with-pyramid" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/blog/details/blog-amplify-your-feedback-pervasive-collaboration-with-pyramid</a> </p> 
<h2>Other Resources</h2> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Extended%20Functionality/Discovery%20Conversations/Discovery%20Conversations.htm" rel="nofollow noopener noreferrer" target="_blank">Discovery Conversations Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Extended%20Functionality/Discovery%20Conversations/Start%20a%20Conversation.htm" rel="nofollow noopener noreferrer" target="_blank">Start a Conversation Help</a> </p> 
<p> Comments and Annotations Video </p> 
<p> <iframe allowfullscreen class="wistia_embed" frameborder="0" height="180" name="wistia_embed" scrolling="no" src="https://fast.wistia.net/embed/iframe/0pfixkl4am" width="320"></iframe> </p>]]></description>
          <pubDate>Wed, 24 Mar 2021 09:21:44 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/q6hl1tb/amplify-your-feedback-pervasive-collaboration-with-pyramid</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Actionable data insights in minutes—not hours</title>
          <link>https://community.pyramidanalytics.com/t/x2hl1m9/actionable-data-insights-in-minutesnot-hours</link>
          <description><![CDATA[<h2>&nbsp;How to share data with colleagues with your comments on specific data</h2> 
<p> Effective collaboration by multiple stakeholders is very difficult to achieve when all members utilize a desktop version for analysis and server versions for collaboration. Pyramid provides business users with a collaboration tool on a platform that all users are actively using exclusively for all their BI functions.&nbsp; </p> 
<h2>Why is collaboration so important?</h2> 
<p> Today, more than ever before, businesses have converged on the idea that our decisions need to be collaborative. An individual may not uncover insights by analyzing data alone. Knowledgeable stakeholders and colleagues can provide additional insight into why data may be trending up or down based on external factors that are not immediately apparent. </p> 
<h2>Does this scenario sound familiar?</h2> 
<p> John, the CFO for Apex Electronics using his desktop BI tool, sees the sales figures for the current quarter is down by 3%, after a consistent 2-year upward trend of between 5% and 8%. </p> 
<p> &nbsp;<img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/531bd972-c52c-4b85-a300-6ceec201a6d9/547.png">&nbsp; </p> 
<p> After further interrogation of his cube (drilling, slicing and dicing), he discovers that sales in the Boston store’s electronics department have decreased by 30% in December, dragging down company-wide quarterly sales.&nbsp; </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/9f2a9344-9af0-494c-9416-7eab8caab27c/547.png">&nbsp; </p> 
<h2>Difficulties collaborating with traditional desktop BI tools</h2> 
<ul> 
 <li>Team members using a desktop version of their BI tool are unable to share their reports and visualizations after drilling, slicing and dicing their data. In order to share their results with others, they must upload/publish individual reports or analysis to the web-based solution (usually with inferior capabilities), and in the process force their fellow-collaborators to change platforms too.&nbsp;</li> 
 <li>Users can’t view historical data at the time of initial collaboration and compare it against current data and report views.</li> 
</ul> 
<ul> 
 <li>Users are unable to record voice messages and attach multimedia files.</li> 
</ul> 
<p> Data security is bypassed when a snapshot of the report is sent via email to all fellow collaborators as all members don’t always have the same access rights and users could view unauthorized data. </p> 
<h2>Ease of collaborating with Pyramid</h2> 
<ul> 
 <li>All users use the same universal web-based client, so the initial collaborator can share their reports and discoveries in a central repository after drilling, slicing and dicing. No change in platforms required.</li> 
 <li>Comments and annotations within analytic reports and dashboards provide direct access to both current and historical versions of both the report and component data.</li> 
 <li>Users can record voice messages and attach multimedia files in a user-friendly interface.</li> 
 <li>Data security is applied on a per-user basis, so users can only view data they are authorized to view.</li> 
</ul> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/5d85bac9-f422-4586-808c-0e0d8cc2c6ae/547.jpg">&nbsp; </p> 
<h3>Threaded Conversations and Comments</h3> 
<p> In the Pyramid application, comments and conversations among colleagues can take place directly within analytic reports and dashboards. Conversations greatly expand the depth of analytics by creating social hubs around analyses. Sharable insights make it easier to discuss results and to create actionable lists for users on the platform. Data and report snapshots allow users to track changes over the lifecycle of a conversation thread. </p> 
<h2>Comparison between Pyramid vs Classic Collaboration</h2> 
<p> Below, we compare the approximate time it takes to produce a single data visualization using a desktop-based BI application versus Pyramid. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/ce7842e6-58a8-4458-82fe-8cfad0bf1fde/547.png">&nbsp; </p> 
<p> With Pyramid’s commenting functions, users have a powerful, ubiquitous, simple and user-friendly collaboration tool built right into their analytics platform. </p> 
<p> <em>This post originally appeared at <a href="https://www.pyramidanalytics.com/blog/details/blog-actionable-data-insights-in-minutes-not-hours" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/blog/details/blog-actionable-data-insights-in-minutes-not-hours</a></em> </p> 
<h2>Other Resources</h2> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Extended%20Functionality/Discovery%20Conversations/Discovery%20Conversations.htm" rel="nofollow noopener noreferrer" target="_blank">Discovery Conversations Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Extended%20Functionality/Discovery%20Conversations/Start%20a%20Conversation.htm" rel="nofollow noopener noreferrer" target="_blank">Start a&nbsp;Conversation Help</a> </p> 
<p> Comments and Annotations Video </p> 
<p> <iframe allowfullscreen class="wistia_embed" frameborder="0" height="180" name="wistia_embed" scrolling="no" src="https://fast.wistia.net/embed/iframe/0pfixkl4am" width="320"></iframe> </p>]]></description>
          <pubDate>Mon, 22 Mar 2021 10:47:35 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/x2hl1m9/actionable-data-insights-in-minutesnot-hours</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Learn and predict with Python and Pyramid</title>
          <link>https://community.pyramidanalytics.com/t/35hl1xy/learn-and-predict-with-python-and-pyramid</link>
          <description><![CDATA[<p> Today, more businesses are using machine learning (ML) to perform business predictions. They rely heavily on their small team of data scientists to drive these initiatives. </p> 
<p> As organizations adopt advanced ML techniques into daily analytics, we see key three trends emerging. First, Python is now the predominant language being used by data scientists for all things ML and beyond—outpacing R and replacing SAS. Second, there is a groundswell of demand for access to these capabilities by “citizen data scientists” and classic data consumers. This feeds a third trend: a heavy push to merge data, analytics, and data science pipelines into a singular, interconnected technology arc. </p> 
<p>&nbsp;</p> 
<h3>Learning, evaluating, and predicting</h3> 
<p> The process of learning, evaluating, and predicting using ML is classically performed in three distinct stages. In the initial stage, the ML code is run on a sufficiently large sample of data to learn and create an algorithm that will be used as a model to predict the required result. Following this, the model is evaluated and adapted, if necessary, to achieve the required accuracy. Finally, the model is classically used on a powerful server against a massive set of production data to predict results.<br> &nbsp; </p> 
<h2>The challenges</h2> 
<p> Python has become the language of choice for ML projects because of its accessible language structure and large collection of rich package libraries. However, up to 80 percent of data scientists’ time can be spent finding, cleansing, and organizing data—which is far less about ML and more about “ETL.” Furthermore, the language is still not for everyone, and can exclude most non-code-savvy data users from testing, developing, and deploying machine learning models to produce useful outcomes. </p> 
<p> Finally, as I have written previously about Pyramid’s Python integration, most BI tools—like Power BI and Tableau—do not offer a real-world “application pipeline” for integrating Python and R-based ML projects with classic data visualization, analysis, and reporting. </p> 
<p> Instead of allowing users to learn, evaluate and predict, then build content in distinct phases, they expect users to insert and execute Python code and build reports and dashboards, all in one step. This is often performed on a desktop against a subset of data, severely decreasing the likelihood of accurate results. There is no framework for crunching millions of rows of data to build ML models (“learn”); and there is no venue to reapply models for predictions. In many respects, most BI tools treat Python (and R) as a side-show gimmick, without providing a serious framework to produce accurate, scalable ML-driven analyses. </p> 
<h2>Pyramid’s solution</h2> 
<p> Pyramid features deep integration of both Python and R, tracking with the key trends above. It acknowledges Python’s and R’s widespread use among data scientists, while simultaneously giving citizen data scientists the ability to perform basic ML functions—and it enables all of this in an integrated environment that lets all users perform analytics across the full pipeline. </p> 
<h3>Aspect 1: Deep Python and R integration</h3> 
<p> Pyramid has made Python (and R) a first-class citizen in its architecture and product strategy. Pyramid integrates Python into its data modeling tools, allowing users to utilize Python code as a data source or as a data manipulation and calculation element. Python ML models can, in distinct phases, be trained, tested, and then deployed to run predictions on millions—or billions—of records and can be shared and re-used in other data sources. </p> 
<p> Governance of the Python scripts is also maintained with managed access and content versioning. The ability to write back results from the Python code to the original data source adds further value. Pyramid provides a marketplace of free, reusable Python source code for non-technical analysts, with a large library of predefined functions. Further editing, authoring, testing, and running of Python code can all be performed from within Pyramid. This approach is central to delivering a proper “learn and predict” framework for real data sets. </p> 
<h3>Aspect 2: Empowering citizen data scientists with real ML tools</h3> 
<p> Pyramid enables both data scientists and non-coding citizen data scientists to perform testing and development of ML models, while using Pyramid’s powerful model tool to perform basic ETL tasks—freeing data scientists to focus solely on data science and ML coding. The process of data extraction and preparation for a learning script normally performed by a Python developer can be performed by individuals without deep Python skills using drag-and-drop actions, saving huge development effort. This approach democratizes access to serious ML-based data operations. </p> 
<h3>Aspect 3: Bringing the whole ML workflow into a single environment</h3> 
<p> Pyramid’s entire platform drives a self-service paradigm where all users (data scientists, analysts, and non-technical end users) can use one application to run ML project from “soup to nuts.” They can prepare data, build, and process ML models, generate predictions, visualize results, create and launch dashboards, and consume insights to drive better business decisions—all from one spot. </p> 
<h2>Business case</h2> 
<p> Lynette is a data scientist for M&amp;P Furniture Finance. They use SAP HANA for their data warehouse and Pyramid for their BI development and analytics. Lynette wants to apply a Python script to predict possible customer defaults on future payments. </p> 
<p> She will use her script to learn from a sample of their large dataset, save the model, and then reuse the same model to perform predictions. The script (which is freely available in Pyramid’s marketplace) uses random forest, a slight variation of a decision tree, to predict customer payment defaults. The random forest builds multiple decision trees and averages the results to provide the best prediction. </p> 
<p> Lynette initially selects several customer profile columns (income, number of children, number of cars) as inputs to predict the possibility of a customer defaulting on their monthly payment. Right off the bat, Pyramid’s data preparation capabilities come into play. An Income_Period column indicates if the income is annual or monthly. Lynette uses Pyramid’s data cleaning functions in the Model tool to convert all income to an annual amount. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/3c3b6112-9d43-44dd-b1b4-415558c06f7f/547.png">&nbsp; </p> 
<p> She then includes her Python script to run the random forest algorithm on the data. </p> 
<pre class="prettyprint">import pandas
from sklearn.ensemble import RandomForestClassifier

def pyramid_learn(df):
target_feature_idx = df.columns.size-1;

X = df.iloc[:,0:target_feature_idx]
y= df.iloc[:,target_feature_idx]
clf = RandomForestClassifier(max_depth=5, n_estimators=10, max_features=1)
clf.fit(X, y)
return clf

def pyramid_eval(model, df):
target_feature_idx = df.columns.size-1;

X = df.iloc[:,0:target_feature_idx]
y = df.iloc[:,target_feature_idx]
output = model.predict(X)
correctCount=0
for idx,item in enumerate(output):
if item == y.iloc[idx]:
correctCount+=1
return str(correctCount / len(y))

def pyramid_predict(model, df):
output = model.predict(df)
return pandas.DataFrame({'prediction':output})</pre> 
<p> This model uses family income, number of children, and number of cars as input columns and produces a Model Score accuracy of 65.7% when run on a dataset of 200,000 rows of data. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/44a43861-8360-45ae-a90a-f982decf55a9/547.png">&nbsp; </p> 
<p> The report displays the number of cars, number of children, income, default payment (0 = No, 1 = Yes), and prediction of default payment (0 = No, 1 = Yes). We see the prediction to be in line with the accuracy predicted by the model. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/6029d590-3b1a-4969-9e5c-ad3ff64d73bf/547.png">&nbsp; </p> 
<p> After experimenting with various input columns, Lynette uses Pyramid’s data model tool to combine family income and number of family members to produce a new column—Income Per Member. In addition, she changes the number of cars column to a Boolean column—Cars YN, as the number of cars does not prove to be a significant factor, whereas the absence of ownership of a car is a significant factor. With these changes, Lynette’s Model Score accuracy improves to 82.7%. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/fb0c23ac-fd45-4a78-b35f-4eff6ace2165/547.png">&nbsp; </p> 
<p> Lynette now applies the Python script with the adjusted input columns and saves the model so it can be reapplied to her massive dataset of 50 million rows to predict payment defaults for each credit customer. In addition, this same model can be applied daily to new customers as a scheduled job. </p> 
<p> But there’s more to the story. </p> 
<p> John is a BI Analyst who is also interested in predicting payment defaults for his dataset of prospective clients used by the call center. His dataset is separate from Lynette’s. He has not yet run any ML predictions on it. While John has limited experience with Python scripts, he can use Lynette’s for his own dataset. He just needs to apply the saved model to his. Then he can immediately identify customers likely to default on the payment. Thus, John can immediately harness Lynette’s efforts, saving the organization time, money, and resources. </p> 
<h2>Summary</h2> 
<p> Python has become an increasingly popular language for organizations running ML predictions to help them with key strategic and operational decisions. However, creating meaningful ML applications requires data to be trained on a model in a batch process using powerful servers. Further, the algorithms used to perform the predictions need to be evaluated and fine-tuned to increase their accuracy. Then the predictive algorithms need to be applied to data sets that sometimes contain billions of rows. </p> 
<p> These advanced functions cannot be performed on a desktop BI solution with insufficient hardware, on a small subset of data within a report, where the model cannot be saved and the results cannot be stored, as is done by most third-party BI tools. </p> 
<p> In contrast, Pyramid provides a robust, scalable Python integration that allows distinct learning, evaluation, and prediction processes in a server-based batch processing environment, where the resultant model can be saved, shared, and reused to perform additional prediction tasks. The prediction can also be saved and reused in all related analyses. </p> 
<p> What’s more, normally complex data extraction and preparation tasks can be easily accomplished using Pyramid’s drag-and-drop modeling tool, saving huge development time and effort. This accessible tool also makes it infinitely easier for citizen data scientists who may not have the same level of expertise with Python. Lastly, Pyramid’s entire self-service BI platform provides a one-stop-shopping experience for the entire arc, from the very start to the very end. </p> 
<p> <em>This post originally appeared at <a href="https://www.pyramidanalytics.com/blog/details/blog-learn-and-predict-with-python-and-pyramid" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/blog/details/blog-learn-and-predict-with-python-and-pyramid</a></em> </p> 
<h2>Other Resources</h2> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Model/Model%20Pro/Data%20Flow/ML/Python_Learn_and_Predict.htm?Highlight=predict" rel="nofollow noopener noreferrer" target="_blank">Python Learn and Predict Help</a> </p> 
<p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Model/Model%20Pro/Data%20Flow/ML/Learn_and_Predict_Example.htm" rel="nofollow noopener noreferrer" target="_blank">Python Learn and Predict Examples Help</a> </p> 
<p>&nbsp;</p> 
<p> Advanced Forecasting Analytics with Python and Pyramid Video </p> 
<p> <iframe allowfullscreen class="wistia_embed" frameborder="0" height="200" name="wistia_embed" scrolling="no" src="https://fast.wistia.net/embed/iframe/njse3k2avz" width="320"></iframe> </p>]]></description>
          <pubDate>Thu, 18 Mar 2021 08:14:41 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/35hl1xy/learn-and-predict-with-python-and-pyramid</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      <item>
          <title>Forecasting with Python and Pyramid</title>
          <link>https://community.pyramidanalytics.com/t/y4hlflx/forecasting-with-python-and-pyramid</link>
          <description><![CDATA[<p> Forecasting is an indispensable requirement for any modern organization looking to gain a competitive edge. To do it well, today’s companies need the flexibility to adjust algorithms and define their own criteria to best suits their particular business needs. However, many business intelligence tools limit users’ ability to fine-tune forecasting algorithms. </p> 
<p> Pyramid provides&nbsp;<a href="/t/h7hl62p/comprehensive-forecasting-with-pyramid" rel="nofollow noopener noreferrer">out-of-the-box forecasting&nbsp;</a>that can be performed with a single click. More advanced manipulations of parameters can be achieved using&nbsp;<a href="/t/g9hll3x/fine-tune-your-forecasts-with-advanced-controls" rel="nofollow noopener noreferrer">Pyramid’s advanced forecasting</a>&nbsp;dialog. And when a user has a specific forecasting requirement, he or she can deploy custom scripts to achieve this. </p> 
<p> In a&nbsp;<a href="/t/h7hzv2q/first-class-python-integration-in-pyramid" rel="nofollow noopener noreferrer">previous blog</a>, I demonstrated how Pyramid has made Python (and R) a first-class citizen in its architecture and product strategy, using a stock market example to highlight this. In this blog, I will demonstrate how Python (and R) scripts can be used to meet customized forecasting requirements. </p> 
<h2>The problem</h2> 
<ul> 
 <li>Third-party BI tool vendors offer a proprietary “black box” forecasting method where users have no understanding of the algorithm being used and no ability to further tweak it to better fit their unique circumstances.</li> 
 <li>Data scientists with deep domain knowledge often need to be able to apply their own Python and R scripts to generate a more accurate forecast.</li> 
 <li>They may also want to introduce additional parameters or logic to expand the forecasts beyond the current algorithm.</li> 
</ul> 
<h2>Pyramid’s solution</h2> 
<ul> 
 <li>Pyramid gives users the power to deploy customized Python and R scripts to perform a forecasting function.</li> 
 <li>A marketplace with free reusable Python source code provides non-technical analysts with a library of predefined forecasting functions.</li> 
 <li>Existing Python scripts can be further customized to suit more specific business requirements.</li> 
 <li>Scripts can then be shared (and optionally versioned) in the governed content management platform.</li> 
 <li>They can also be configured to run with specific package versions using specific Python or R versions in a&nbsp;<a href="/t/35hlyar/how-to-deploy-enterprise-grade-virtual-python-environments-using-pyramid" rel="nofollow noopener noreferrer">virtual Python environment</a>.</li> 
</ul> 
<h2>Business case</h2> 
<p> Janice is a data scientist for R&amp;G Distributors. R&amp;G uses Oracle as a data warehouse and Pyramid for data visualization, reporting, and analytics. </p> 
<p> Janice wants to apply a forecasting algorithm that calculates forecasted values based on previous averages. Using Pyramid, Janice creates a graph depicting sales for the last three years.<br> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/3d7c8425-13c9-4ea3-bd68-297bb9d529ec/547.png">&nbsp; </p> 
<p> From her Discover report, Janice applies her own Python script that forecasts sales based on previous averages. </p> 
<pre class="prettyprint">import scipy.stats as st
import pandas
def pyramid_forecast(dataLst, period, futures, shouldCalcHistory):

  if period == 0:
    period = 6

  size = len(dataLst)
  movingAvgs = []
  if size &lt; period+1:
    return pandas.DataFrame({'forecast': []})

  if shouldCalcHistory:
    startIdx = period-1
    for i in range(startIdx, size-1):
      sum=0
      for j in range(0,period):
        sum += dataLst[i-j]
      movingAvgs.append(sum/period)

  # Future predictions. First
  for i in range(0,futures):
    sum = 0

    # take the last element of the data into the some
    elementsToTakeFromData = period-i
    for j in range(size-elementsToTakeFromData, size):
      sum += dataLst[j]

    if elementsToTakeFromData &lt; 0:
      elementsToTakeFromData=0

    # take the rest of the elements from the moving avgs itself (includes predictions)
    elementsToTakeFromPredictions = period-elementsToTakeFromData
    for j in range(len(movingAvgs)-elementsToTakeFromPredictions, len(movingAvgs)):
      sum += movingAvgs[j]

    movingAvgs.append(sum/period)

  interval1High = []
  interval1Low = []
  interval2High = []
  interval2Low = []

  startIdx = 0
  if not shouldCalcHistory:
    startIdx = len(movingAvgs)-futures

  for i in range(startIdx, len(movingAvgs)):
    x = movingAvgs[i]
    currInterval1 = st.t.interval(0.95, len(dataLst) - 1, loc=x, scale=st.sem(dataLst))
    currInterval2 = st.t.interval(0.95, len(dataLst) - 1, loc=x, scale=st.sem(dataLst))

    interval1Low.append(currInterval1[0])
    interval1High.append(currInterval1[1])
    interval2Low.append(currInterval2[0])
    interval2High.append(currInterval2[1])

  df = pandas.DataFrame({'forecast': movingAvgs[startIdx:len(movingAvgs)],
             'interval1High': interval1High,
             'interval1Low': interval1Low,
             'interval2High': interval2High,
             'interval2Low': interval2Low})
  return df</pre> 
<p> Janice then applies the script to her report and selects historical forecasting to view the accuracy on historical data. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/7d22d841-1e8d-4ed1-800d-6f19968ca08c/547.png">&nbsp; </p> 
<p> Janice then tweaks the algorithm by changing the previous periods from four to six, and increases the accuracy to ninety-five percent. The newly adjusted forecast is displayed automatically after she applies the changes. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/fc27ab7a-dece-465a-8200-9bf8e587c66d/547.png">&nbsp; </p> 
<p> Janice can then save the adjusted script to ensure it will be available in other reports and dashboards. Janice could optionally introduce additional input factors to the Python script to further modify and enhance the script and view the desired forecast. </p> 
<h2>Summary</h2> 
<p> Pyramid provides multiple forecasting algorithms that can be executed with a single click, as well as an advanced forecasting dialog, where options can be tweaked for improved performance. Most third-party BI tool vendors only offer a standard forecasting method where users have limited ability to adjust the algorithm, with no option to write their own code. </p> 
<p> However, data scientists need to be able to deploy customized Python and R forecasting scripts. With Pyramid, they can create and share their own scripts in a governed content management platform. Scripts can also be configured to run with specific package versions using specific Python or R versions in a virtual Python environment. Pyramid also provides a marketplace with free reusable Python source code with a library of predefined forecasting functions. </p> 
<p> <em>This post originally appeared at </em><a href="https://www.pyramidanalytics.com/blog/details/blog-forecasting-with-python-and-pyramid" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/blog/details/blog-forecasting-with-python-and-pyramid</a> </p> 
<h2>Other Resources</h2> 
<table> 
 <tbody> 
  <tr> 
   <td><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Advanced%20Query%20Functions/Forecasting%20Overview.htm?Highlight=forecasting" rel="nofollow noopener noreferrer" target="_blank">Forecasting Help</a></td> 
  </tr> 
  <tr> 
   <td><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Advanced%20Query%20Functions/Basic%20Forecasting.htm?Highlight=forecasting" rel="nofollow noopener noreferrer" target="_blank">Basic&nbsp;Forecasting Help</a></td> 
  </tr> 
  <tr> 
   <td><a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Advanced%20Query%20Functions/Advanced%20Forecasting1.htm?Highlight=forecasting" rel="nofollow noopener noreferrer" target="_blank">Advanced&nbsp;Forecasting Help</a></td> 
  </tr> 
  <tr> 
   <td> <p> <a href="https://help.pyramidanalytics.com/Content/Root/MainClient/apps/Discover/PRO/Advanced%20Query%20Functions/Custom%20Forecast%20Scripts.htm?Highlight=forecasting" rel="nofollow noopener noreferrer" target="_blank">Custom Forecast Scripts Help</a> </p> <p>&nbsp;</p> <p> Forecasting Video </p> </td> 
  </tr> 
 </tbody> 
</table> 
<p> <iframe allowfullscreen class="wistia_embed" frameborder="0" height="200" name="wistia_embed" scrolling="no" src="https://fast.wistia.net/embed/iframe/njse3k2avz" width="320"></iframe> </p>]]></description>
          <pubDate>Tue, 16 Mar 2021 09:03:05 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/y4hlflx/forecasting-with-python-and-pyramid</guid>
          <dc:creator>David Gordon</dc:creator>
        </item>

      </channel>
</rss>
