go to post Sam Duncan · Mar 15, 2021 The KPI doesn't need to be the data source for the widget. You can specify the KPI class as the actionClass for a cube (this is an attribute of a <cube> element) and then the actions in it will be available to pivots based on that cube. That will in turn make those actions available as controls on widgets whose data source is a pivot based on that cube. If the data source for a widget isn't a pivot or a KPI, I'm not sure whether it's possible to use custom actions on that widget.
go to post Sam Duncan · Mar 15, 2021 Hi Evgeny, Please take a look at the documentation on custom actions. You will need to create a KPI class and define the actions you want to make available in it. You can then add widget controls that correspond to these actions. For a real-world example that includes an action to rebuild a cube, take a look at this class from the CubeEventMonitor. I think you know this, but to clarify for other readers - this allows developers to write any methods they would like and end-users to execute the defined methods at any time. It doesn't allow end-users to define and execute arbitrary methods of their own.
go to post Sam Duncan · Jan 5, 2021 Hi Lee, The "range" language may be a bit confusing, so to be clear - %TIMERANGE() returns a single member expression. I'm on a different version, but COUNT(%TIMERANGE(...)) appears to work for me, and it returns 1 (which is expected because %TIMERANGE() returns a single member). In general, member expressions like the result of %TIMERANGE() can also be interpreted as set expressions containing a single item, so I would expect COUNT(%TIMERANGE(...)) and the like to be valid MDX. I'd suggest opening a WRC issue for this as well - it's great to post questions like this on the Developer Community when you're uncertain about the expected behavior, but once we've determined that the behavior you're seeing is unexpected, there is more that we can do to investigate and help you in the context of a support issue.
go to post Sam Duncan · Jan 5, 2021 Hi Lee, It's not obvious to me what is going on here - ".&[NOW-1]" is certainly expected to work. I think it would be a good idea to open a support issue so that we can help you with this.
go to post Sam Duncan · Nov 16, 2020 Thanks, everyone - creating and saving a workspace in a folder and then opening the folder worked. Since it seems like this is a fairly common problem, I wonder if it's worth going into a little more detail in the installation docs about what is needed to get the button to appear.
go to post Sam Duncan · Jul 23, 2020 Hi Lawrence, The shortest build frequency that the Cube Registry allows you to specify is once per day.
go to post Sam Duncan · Feb 12, 2020 Hi Lawrence, The .DFI files that define the pivots and dashboards will themselves always be found in the "Other" branch of the workspace due to their type. However, it's possible to package pivots, dashboards, and other DeepSee folder items into classes as described here. The resulting .CLS file(s) would be found in the "Classes" branch.
go to post Sam Duncan · Jan 21, 2020 Hi Rodrigo, This MDX query uses several suggestions from my comments below: WITH MEMBER [Measures].[CondicionesContCompletaCalc] AS 'ISNULL([Measures].[CondicionesContCompleta],0)' SELECT NON EMPTY [Gerencia].[Gerencia].[Gerencia].MEMBERS ON 1, NON EMPTY [Measures].[CondicionesContCompletaCalc] ON 0 FROM [Condiciones] If you try that and it doesn't work, please feel free to contact InterSystems support and we can help you with further debugging.
go to post Sam Duncan · Jan 21, 2020 After looking at this some more, there are another couple of suggestions I would make: - If you want to display each member of the [Gerencia].[Gerencia].[Gerencia] level in its own row, you should use [Gerencia].[Gerencia].[Gerencia].MEMBERS as the set expression on rows. Your current syntax will return a single row. - It's unnecessary to wrap the set expressions on rows and columns in parentheses. (You may, of course, need to use parentheses in these expressions if they involve functions such as NONEMPTYCROSSJOIN(level1.MEMBERS,level2.MEMBERS), but an expression like [Gerencia].[Gerencia].[Gerencia].MEMBERS by itself doesn't need them.) - If you aren't already using it, you may find it helpful to use the Analyzer, as this gives you an interface to create pivot tables to display the data you want without having to write the MDX from scratch and worry about its syntax. When you create or modify a pivot table in the Analyzer, the underlying MDX query is generated, and is executed either automatically (by default) or when you refresh the pivot. If your goal is to create pivot tables and dashboards, you may not need to interact with the query text at all if you don't want to; if you're running queries programmatically, you can create a pivot table and then view the MDX that was generated (click on the pencil-and-paper icon above the "Columns" box) and use it as a template for your queries.
go to post Sam Duncan · Jan 21, 2020 I agree with Peter's suggestions, and I would also recommend wrapping the value expression for your calculated measure in single quotes rather than parentheses. After making these changes (and adding a missing [ to the hierarchy of the level you put on rows), your query might be roughly this: WITH MEMBER [Measures].[CondicionesContCompletaCalc] AS 'ISNULL([Measures].[CondicionesContCompleta],0)' SELECT NON EMPTY ([Gerencia].[Gerencia].[Gerencia]) ON 1, NON EMPTY ([Measures].[CondicionesContCompletaCalc]) ON 0 FROM [Condiciones]