go to post Peter Steiwer · Mar 7, 2017 Hi Derrek,I generally recommend using the "All Member". This will allow the proper aggregation function from the measure to be applied to your total. This may cause your % of Total to not display the desired results and you may be required to create a new measure to display the % of Total instead of using the column summary option. The summary options will base their results on the data inside of the table, not on the data behind the table. In some basic cases, they summary options will give the desired results, but in more complicated queries, they will not.
go to post Peter Steiwer · Mar 7, 2017 Have you tried creating a "Searchable Measure"? This may partially solve your problem. Checking the "Searchable" option in Architect for a measure will make the measure available within a Named Filter. It will also allow you to create a filter control on a widget with the measure.This is not available for calculated measures because creating a "Searchable" measure creates a special index on that measure (this index is populated at build/synchronize time).
go to post Peter Steiwer · Mar 7, 2017 Samuel is correct, using NOW-1 on a Day level will give you the information from yesterday.For the second part, please see the following two queries:>>select PERIODSTODATE([DateOfSale].[Actual].[MonthSold],[DateOfSale].[Actual].[DaySold].[NOW]) on 1 from HOLEFOODS 1 Mar 1 2017 *2 Mar 2 2017 *3 Mar 3 2017 *4 Mar 4 2017 *5 Mar 5 2017 *6 Mar 6 2017 *7 Mar 7 2017 *---------------------------------------------------------------------------Elapsed time: .009242s>>select COUNT(PERIODSTODATE([DateOfSale].[Actual].[MonthSold],[DateOfSale].[Actual].[DaySold].[NOW])) on 1 from HOLEFOODS COUNT 7---------------------------------------------------------------------------Elapsed time: .006043s
go to post Peter Steiwer · Dec 14, 2016 Ok, I have reported it to the learning services team to take a look at. If I receive any updates, I will let everyone know here
go to post Peter Steiwer · Dec 14, 2016 I got the same results for this specific course. Did you submit anything through the learning site? On the bottom of the "About" page, there is a contact section for feedback/questions. I can submit this if you have not already
go to post Peter Steiwer · Dec 12, 2016 For the programmatic purpose of comparing two instances of the same object (I was hoping to keep the use case separate from this post in order to get a good generic example of iterating through properties of an object - but I can go into more details if needed).
go to post Peter Steiwer · Dec 11, 2016 I am occasionally logged out, I do not know how frequently though. Maybe once or twice per week?
go to post Peter Steiwer · Dec 7, 2016 Ah yes, creating some new dimension, for example, called "IsDifferent" and having values of 0 or 1 would definitely work. If this dimension makes sense within your cube, then it would be OK to add (for performance and simplicity reasons). If the case presents itself where you have another two dimensions you need to compare, you will need to add "IsDifferent2". This pattern may repeat based on the use case.It would be possible to create a PlugIn that takes dimension names as parameters, which would allow you to dynamically compare values without needing to pre-define all of your combinations.
go to post Peter Steiwer · Dec 7, 2016 You can definitely write a PlugIn to evaluate the two values and exclude any records from your returned count that are equal. Off the top of my head, I can not think of anything that will do this automatically or easily from MDX functions
go to post Peter Steiwer · Dec 7, 2016 Hi Bahram,Within Studio there are a couple ways to determine what code a macro is running1). You can right click a macro and select "goto" (or F12) - this will take you to the definition2). You can hover your mouse over the macro and it should show the code in a tooltip3). You can look at the .int code to see what the macro was compiled into
go to post Peter Steiwer · Dec 5, 2016 Hi Derrek,These requests are not possible to do "out of the box", but as Evgeny points out, using alternate methods such as accessing DeepSee results from the REST API, you can render your own graphs and dashboards with any 3rd party library that allows this level of customization.We also have a couple samples that show DeepSee results being displayed in a basic HTML page, links to these samples can be found in the Documentation.
go to post Peter Steiwer · Nov 30, 2016 It looks like this error is happening when a key that does not exist is passed into the PlugIn through %CONTEXT. Would it be possible to only pass in Keys for members that exist? This seems to work without errors
go to post Peter Steiwer · Nov 23, 2016 Hi Benjamin,In DeepSee, you can create custom widgets called "Portlets" (Documentation). Portlets will allow you to write HTML or ObjectScript that will generate the contents of a widget. This can include things like simple text, embedded web pages, and even third party chart libraries.
go to post Peter Steiwer · Nov 21, 2016 Some interesting things to note: If you DO NOT put your custom class in the %DeepSee.Time package, it will not be visible through the Architect UI. Even if you do not include it in the %DeepSee.Time package, you will be able to modify your cube definition from Studio and specify your custom class. For example, I created the following class: Class User.CustomTime1 Extends %DeepSee.Time.AbstractLevel This custom class IS NOT visible in the Architect's "Extract value with function" drop down. However, I created a level with the following timeFunction value in my cube class from Studio: timefunction="CustomTime1" Manually entering this value will work and your custom time functions will be able to survive upgrades. If you do include your class in %DeepSee.Time, it will be listed in the Architect UI
go to post Peter Steiwer · Nov 21, 2016 As Daniel suggests, the class should extend %DeepSee.Time.AbstractLevel to be visible from Architect
go to post Peter Steiwer · Nov 21, 2016 Hi Benjamin,In DeepSee, Null data is handled differently than 0. This being the case, you can use the ISNULL function (Documentation). Each of these three members can be placed in ISNULL() as the first parameter and 0 as the second. If there is no data, instead of being Null, it will be treated as 0 and your calculation should work.
go to post Peter Steiwer · Nov 7, 2016 Hi Ryan,In reference to the Troubleshooting Guide -> Build Problems -> Errors During Build -> Check ^DeepSee.BuildErrors/ run ##class(%DeepSee.Utils).%PrintBuildErrors(pCube) are two options for this case. To check ^DeepSee.BuildErrors, you can either use the Management Portal's Global Explorer page or you can use terminal. This global will be populated with the error messages that are caused as well as the ID of the record that caused this error. Using ##class(%DeepSee.Utils).%PrintBuildErrors(pCube) will also show the same error messages in a more user-friendly way.Here is an Error that I forced:SAMPLES>d ##class(%DeepSee.Utils).%PrintBuildErrors("HoleFoods") 1 Source ID: 2 ERROR #5002: Cache error: <VALUE OUT OF RANGE>%UpdateFacts+107^HoleFoods.Cube.Fact.1 1 build error(s) for 'HoleFoods'From this output I can see that ID 2 had a Value Out Of Range error on %UpdateFacts+107^HoleFoods.Cube.Fact.1 line of code. At this point I can look into this line of code and figure out why it is out of range. My line of code reads as Set %var("Mx3501588378B") = $S(%source("%ID")=2:$ZD(99282828),%source("UnitsSold")="":"",%source("UnitsSold")>5:1,1:0)We can see that the expression I wrote will cause an error when Source ID 2 is built. In a more realistic situation, it may be harder to determine why this line of code caused the error. This line of code is either generated by DeepSee or it is a user defined source expression. As always, if you are not sure how to determine the cause of the error past retrieving the error message, the DeepSee support team is available 24/7. But accessing this error message is always a helpful first step
go to post Peter Steiwer · Oct 14, 2016 This documentation page describes the use of { } within MDX. As Lexi points out, a single member inside of { } should behave the same way without the { }. This is the syntax for a set. If you come across something that is not working as expected without the { }, please consider submitting a WRC so we can get the behavior resolved.
go to post Peter Steiwer · Oct 14, 2016 This documentation page has some "recipes" for creating calculated measures. What you requested is slightly more advanced than what is described here, and the two provided solutions are complete and precise. But I believe this section of the documentation provides some good recipes for building a calculated measure that does exactly what you need.
go to post Peter Steiwer · Jul 28, 2016 Great tip Evgeny! Because of this reason, I like to create a new hierarchy to contain my week level. This will allow me to keep a single time dimension that uses my date property as the source, but separating the hierarchies will allow my Year->Month->Day structure to be preserved.