TM1 user access to element level dimension - cognos-tm1

USer 1 needs access to this combination – Function “1C0” only – Period “Bud 2019” – Version “ Budget1”
User 2 needs access to this combination - Functions “1B0”, “1D0” and “1C1” only – Period “Bud 2019” – Version “Budget1”
function, period and version are dimension
1CO,1BO and 1C1 are elements of function dimensions
Bud 2019 is element of Period dimensions
"Budget1" is element of version dimension
how to provide write access for users for this element in above dimension, how to achieve this tm1 and to test as well
Thanks,
Sathya

You should be able to set Read/Write rights in }CellSecurity_<cubename> cube for that cube setting. Have you tried that?
You can define cell security very precisely there from these cubes.

Related

Google Data Studio : how to obtain a SUM related to a COUNT_DISTINCT?

I have a dataset including 3 columns :
ID transac (The unique ID of the transaction - Dimension)
Source (The source of the transaction - Dimension)
Amount € (The amount of the transaction - Stat)
screenshot of my dataset
To Count the number of transactions (for one or more sources), i use COUNT_DISTINCT function
I want to make the sum of the transactions amounts (for one or more sources). But i don't want to additionate the amounts of the transactions with the same ID !
Is there a way to do this calcul with a DataStudio function ?
Thanks for your answers. :-)
EDIT : I saw that we could do this type of calculation via SQL here and I would like to do this in DataStudio (so that I don't have to pre-calculate the amounts per source.)
IMO, your dataset contains wrong data. Each value should be relative only to that line, but this is not the case: if the total is =20, each line should describe the participation of that line to the total. With 4 sources, each line should be =5 or something else that sums 20.
To solve it in DataStudio, you need something like CALCULATE function in PowerBI, but currently DataStudio doesn't support this feature.
But there are some options to consider to repair your data:
If you're sure there are always 4 sources, just create a new calculated field with the expression Amount/4 and SUM it. It is not an elegant solution, but it works.
If your data source is Google Sheets, you can easily repair the data using formulas, like in this example:
Link to spreadsheet
For this spreadsheet, I used this formula in adjusted_amount column: =C2/COUNTIF(A:A,A2). With this column in DataStudio, just use the usual SUM aggregation function to summarize it correctly.

How do I create a default everyday date dimension?

I am trying to create a line chart counting all the optins per date, however the only dimension that is will allow me to choose from have to be a date column on my source. The problem with this is it only chooses from dates that are populated in those fields with an optin date.
For example: I have 5 optins on 1/1/2019, 0 on 1/2/2019, and 3 on 1/3/2019
If I use this series and want to include another metric, 1/2/2019 will not show anything for that other metric
I just want a standard everyday series that counts every metric on a given day. The google analytics connection source has a generic Date dimension but I can not figure out how it was done
Ive tried creating a new column with everydate on it and trying to use that as a dimension without any luck
You should be able to use a Time Series graph (of which there are 3 types) instead of a Line graph.
A Time Series will keep the days where no data is available unlike the Line Graph which only presents labels for those which have values in the data.

MDX - How to know if a measure has been pivoted with a dimension?

I was hoping someone could help me with this problem.
In a sum type measure, i need to know if this measure has been pivoted with my time dimension. If is not, the measure must show the sum of the last day. In other case, the measure must show the sum of the day with has been pivoted.
I have the measure "Users", if this measure hasn't been pivoted with my time dimensión, it shows the sum of all users of all the time. For example it shows: 5,000,000. When it has pivoted with the time dimension, it shows de users from the day. For example: 100,000 for today 21/05/2015.
When this measure hasn't been pivoted with the "time" dimension, the measure must show 100,000 and not the total sum of all days.
I've been trying white some MDX formulas but i have not found some solution for this.
Thanks
I've interpreted this as when pulling your Users measure without pivoting on the Time dimension you would prefer to see the value that corresponds to the current date.
This can be achieved by modifying the Default Member of your Time dimension. Setting the default date to this last available date
Within your Dimension in SSAS, browse to the Dimension Structure tab and select the attribute which represents the key column (ie. the Usage property is set to Key for only one column)
Within the Properties pane (strike F4 if you do not see it already to open it) select the Default Member property, then select the elipses (...)
The Set Default Member - [Dimension Name] pane will have 3 options, select the last Enter an MDC expression that specifies the default member
Use ONE of the following expressions
TAIL([Date].[DateAttribute].Members).Item(0)
TAIL(NONEMPTY([Date].[DateAttribute].Members)).Item(0)
TAIL(EXCEPT([Date].[Date].Members,{[Date].[Date].[Unknown]}),1).Item(0)
In my case I used the last as I only want to exclude my UnknownMember member
Now when you pull the measure down the value will be for the last date in your cube. This will affect other cubes built on this date dimension of course.

Creating custom rollups with SSAS

I am currently working on a requirement as follows and would appreciate some help in figuring out a way to configure the aggregation of my measure:
I have a fact table that contains the following Item ID, DateID,StoreID, ReceivedComments. The way received comments work is that on a daily basis a new record is created that adds to the value of received comments (for example if Item 5 in Store 5 on 1 Jan had 23 Received Comments and it received 5 comments the following day, the row for Jan 2 would be Item 5, Store 5, Jan 2, 28)
We created a measure using MAX and it works fine whenever Item ID is used in the query. When we start moving to a higher level the max produces wrong results. Our requirement is to setup the measure to be as follows:
If the member selected is on the Item Level then MAX, if it's on any other level (Date or Store) then the measure should aggregate the Max of all Items under this date or store.
Due to the business rules and structure of the database Store and Item are different dimensions so I can not include them in 1 Hierarchy.
We have been playing around with Custom RollUps but so far haven't been able to get it to work.
Thanks
I would solve this by using a more traditional approach to your fact table. Instead of keeping a cumulative count in the ReceivedComments column, I would keep only the number of comments received THAT DAY.
That way, instead of using MAX, you can create your measure using SUM, and it will automatically rollup when you go to higher levels.
The only disadvantage I can see to this approach is that you will need to use a range of dates, instead of only the most recent date, to get a full total of all the comments for a given item/store/date. But that's a very small change to your MDX.
Someone suggested using ISLEAF to determine the level, Instead of using ISLeaf i went with AS CASE WHEN [Item].[ItemID].CURRENTMEMBER.LEVEL IS [Item].[ItemID].[(All)] so I don't have to account for other dimensions such as Date, Store, etc as I have several other dimensions that all behave the same way.
And then I went with this formula to determine the Sum of the Max of the items in a particular store like this:
SUM({[Item].[Item ID].children},[Measures].[ReceivedComments]), Now I expect some performance issues with this measure but we are currently running some tests to see if it's gonna be reliable to work with it on actual data.

TM1 Rules - Linking multiple source cubes into one target cube

I have two (so far) source cubes and their respective dimensions:
EXPENSE: Date1, Date2, Supplier, Cost/Profit Center, Project, Type of Payment, Measures.
INCOME: Date1, Date2, Subcontractor, Customer, Cost/Profit Center, Project, Type of Payment, Measures.
I want to use the above mentioned cubes as a source for a third cube:
FINANCE: Date1, Cost/Profit Center, Project, Type of Payment, Measures.
The dimension Cost/Profit Center is used is each of these cubes and has following structure:
TOTAL
--EXPENSE
---10000 - Consulting
----11000 - Personal Expense
-----11100 - Sallary
------11101 - Gross Salary*
------11102 - Bonus*
...
--INCOME
---2000 - Services
----2100 - Projects
-----2110 - Support
------2111 - Support for ABC*
------2112 - Support for XYZ*
...
(*) Leaf elements
The goal is to load data from EXPENSE cube into FINANCE cube under Expense, and from INCOME cube to FINANCE cube under Income.
How do I define the rule without manually linking the corresponding leaf level members? I am looking for something like
['TOTAL':'Expense'] = N:DB(... data from Expense cube)
['TOTAL':'Income'] = N:DB(... data from Income cube)
So far I came up only with one solution which works although I am quite sure it is not the right approach:
[] = N: DB('Expense', '...) + DB('Income', '...)
Thanks a lot!
Using DB is of course required for any link between two cubes. Having said that, depending on your version of TM1, if performance modeller is available, creating graphical links is probably the easiest way to get the job done. It creates the rules in the respective cubes rule files so it is also a good learning tool.
To the essence of your question, as a high level view, let's assume that TM1 calculates the cube by running through its cells. Each cell is defined by members for all dimensions specified. When you rule something, the !Date1 variable (i.e. ! in front of the Date1 dimension name) gives you the member for the Date1 dimension of the current cell. Therefore, given that your Cost/Profit Centre dimension is the same, shared across cubes (not optimal and it should probably be Account) you can map one leaf element to the other (!Account).
For dimensions that you have in the source cube, but not in the target, you have to create a total element to use in the DB.
Finally, whatever rule you create to pull data in your Finance cube, you also have to create a feeder in your respective source cube.

Resources