Using Cell Properties defined in the Measure to format icCube Table - iccube-reporting

I have one Measure with BACK_COLOR and FORE_COLOR defined and another without this definition. I would like to show these measures in an icCube Table as they are defined. In icCube5 there was a flag 'Allow HTML' that did exactly that.
Now in icCube6.8.11 and 7.0.0 I don't find it anymore.
Here is the definition of the first measure (traffic quality):
format_string = '##0.00 %', BACK_COLOR = traffic_quality_color(currentCellValue()), FORE_COLOR=RGB("#666666")
In the beginning the BACK_COLOR in the table is always white and the FORE_COLOR is always black.
If I change the Cell Background Color in the chart to MDX->Cell Property->BACK_COLOR then both columns have the BACK_COLOR defined in the first Measure, but the FORE_COLOR seems to be used.
What do I have to do, in order to have the second measure in black and white and the first measure colorful?

I just checked out the new version and the coloring is correct in the icCube table without any further configuration. Thank you very much!

Related

Highlight selected bar in a column chart in Power BI

I have got a column chart with 79 geographies and a slicer with the 79 geographies. The column chart is NOT dependent on the slicer however there are other visualisations in the page that are dependent on the slicer.
What I would to achieve is when I select a specific geography in the slicer the bar that corresponds to that selected geography should be highlighted (i.e. a different colour fill). Can someone please let me know if it is possible to achieve.
I was able to achieve this partly by creating an independent slicer. Not coming from the table or joined to the table. I created 2 new measures, one that shows the selected value in the slicer and the second measure to give it a colour. I used this to change the data colour by using "fx" to determine the colour of the column. I am attaching the Power BI file that shows this solution for your reference.
But by doing an independent slicer my other visualisations don't update. I am wondering if it is possible to achieve this without creating an independent slicer so that my other visualisations are not affected.
Any help is greatly appreciated. Thank you.
Measure 1: Measure = SELECTEDVALUE(Locality[Locality])
Measure 2: Colour = IF(MAX(Sheet1[Locality]) = selectedvalue(Locality[Locality]),"red","blue")
Please see below the screenshot and also link to the sample .pbix file for your reference.
Sample Power BI file - https://1drv.ms/u/s!AubIV2PXG9p4gqhykbbmeMfFYlChCw?e=w6UABf
Disconnected table solution file - https://1drv.ms/u/s!AubIV2PXG9p4gql1_KvyEK82cZZDMw?e=7TAR6i
You did a great trick as I checked your solution file. But slicer not working as expected which is your issue as per your explanation. To make it work, you can just think reverse of what you have done now.
You have separated slicer value from other data, so that selecting a value in the slicer still keep all Locality in the Bar chart. But problem is, its also keeping all localities in other charts where you wants to take effect of slicer selection. Right?
If the above explanation and assumption is correct, just separate your Locality and Population column to a different island (no relation) table. And create your BAR chart from the new table. Now, if you select a value in the slicer, all charts will be filtered accordingly but the BAR chart.
Finally, apply the Color measure to FX as you implemented currently. This will work as I tried it here and got success. Following is the sample output-

PowerBI issue with visuals, asTimeline and a Table

I have asTimeline visual and below a Table. The idea is to display in the Table a Link to the specified record in another system. The problem is that I would like to show this Table only when there is exactly 1 record selected in asTimeline. Generally, the filtering works fine, but the table should be shown when there is only 1 element in it, and hidden otherwise.
Currently it is something like this:
Now, I have tried using the solution with a Transparent measure, similar to this. Tbe problem is that it doesn't work, the background of the table visual doesn't change when changing the selection (it is not a color problem, I have tried others). The question is whether the ISFILTERED is triggered at all when changing the selection?
Currently I have Make Transparent measure defined as
Make Transparent = IF(ISFILTERED(Table[Id]), "Red", "Blue")
and in asTimeline I have column Id specified as Entity.
I have a different idea about how to achieve that, It does not hide objects but uses a measure that returns values only when there is only one value selected.
Link = SELECTEDVALUE('Table'[link],BLANK())
or
Link = SELECTEDVALUE('Table'[link],"Please select only one Id")
A different formula might be
Link = IF(HASONEVALUE('Table'[Id]), SELECTEDVALUE('Table'[Link]), BLANK() )
Put one of those measures in a table, alone, and you should achieve what you need (also format the measure as "web URL").

Read value from a different table for Y-axis constant line in Power BI

I have a scatter chart and a db view to get the necessary data from it. This view only returns the names and its's respective values and is enough to make my chart just fine. Problem is that i want to draw a Constant Line on my chart but i want to read its value from a configuration table that i have in my DB. Currently when i try to add the Y-axis constant line in power bi, it only allows me to type the static value and it won't get the data dynamically from somewhere else; a different key-value based table that i already mentioned above. How can i achieve this?
Here's the images:
Thanks in advance.
There is not direct solution for this problem but this workaround did the job for me:
Create a measure (may work with a calculated column that will later be summarized as average, MAX, MIN, etc.). The measure (or aggregation of calculated column) will have the dynamic value of the constant line you want to display. In my case, I used a measure and I am showing a constant line that changes value depending on the current month.
Create your visual without the constant line first. In my case, I am using the clustered bar chart.
Add the measure with the constant value to your list of values of the visual. The value will appear in your visual. In my case, it appeared as another horizontal bar. You'll hide it in a later step.
Go to the analytics tab of the visual and instead of adding a new Constant Line, add a Min Line, Max Line, or whatever line makes more sense for your measure, column, visual, etc. as long as the option you choose allows you to select the measure/column you added in the previous step. From the formatting options of the line you added, click on the dropdown labeled "Measure" and pick the measure that has the value of the constant line.
Finish formatting the line as you want (title, text position, color, etc.).
Go back to the Fields tab of the visual and drag the measure with the constant value from the Value group to the Tooltips group. The value will now disappear from the visual but the constant line should remain.
(optional) If you do not want the value of the now dynamic constant line to show in the Tooltip of the visual, create a custom visual. However, keep in mind that if the user is viewing the report in a way that doesn't support report page tooltips, the user will see the default Tooltip including the value of the dynamic constant line you just created.

Displaying nothing in card values until a single slicer selection is made

Current setup:
I have a basic report with a number of charts on the page that are all controlled by once Slicer element at the top of the page.
As required, the default selection of the slicer is "All", which shows all data across the charts as is required. Once you filter on this value, the charts all filter as normal to the value of said slicer. All good so far, all working and happy with that.
Issue:
At the top of the page, I have 4 cards, these are all counts and sums. These cards behave the same way. When no value is selected in the slicer, ALL of the data in these cards is summed and counted (as you would rightly expect) and when the slicer has a value, these cards display the correct values as per the slicer selection.
This default behaviour is not what I am looking for with respect to the cards. I only want the cards to display a value when the slicer has one single selection. Multiple selections or "All" should display blank, 0, n/a or something of the sort in the cards values.
As far as I understand, the default way of handling this is to create another measure which sets "Y" or "N" and then add this in as a visual level filter, only showing values when the measure is set to Y: EG
SlicerCheck = if(calculate(distinctcount([SlicerColumn]),allselected([SlicerColumn]))=1,"Y","N")
Other options suggest using functions that are not available in Direct Query mode.
This does not work for cards by default. Does anyone know a good way to achieve this solution?
Thanks
Damon
I would approach this by adding conditions to my count and sum measures. E.g.
SumForCard = IF(HASONEVALUE([SlicerColumn]), SUM(TableName[ColumnToSum]), BLANK())
What you can do with the new feature of Field Parameters (check in Preview features):
Create a Column Called None with all blank values of ""
Create a Field Parameter to select None field as well as the other fields you want (this lets you combine the fields together into 1 Slicer).
Make Field Parameter into a Slicer.
Now you will have a Slicer with None option that will give a blank result. Select for this as the default to not show any results. Save the dashboard in this state to keep the selection this way. You can select the other fields to populate data.

How can I have dynamic axis which is responsive on slicer value, without using bridge table, use just DAX

Hi everyone, I have a chart which I need that the x value (Axis) changes by changing the slicer value (this slicer is the yellow one that has all the Dims (x values)) and it comes from DimList table. For example, at the moment the chart is totalfreight by custid, but I need if I check the empid from the yellow slicer the chart value changed to totalfreight by empid. This happens for all of the slicer values.
But I don't like bridge table or any method that has a bad effect on performance because the FactTable has a billion rows and I modeled it in SSAS, tabular model and has a live connection. Thanks in advance.
I assume you're referring to the approach that uses a bridge table described in this article. I agree that you may face some performance problems given the amount of data in your model.
First of all, you should try to see if there's some other Power BI frontend functionality that you can use directly in the report, without changing your data model. Perhaps you can use Power BI bookmarks, links or maybe a custom visual?
If not, there's another approach you can use in the data model, that does not rely on bridge tables. Disclaimer: I haven't tested this - there could be other performance issues involved.
Construct a new dimension table with all the members from your individual dimensions. Ie. create a union of all EmpIDs, CustIDs, etc. Make sure you indicate the type of ID in a separate column. The table should look like this:
DimensionId MemberId
categoryid 1
categoryid 2
categoryid 3
custid 1
custid 2
custid 3
...
Let's name this table 'All Dimensions'. The table should not have any relationships to other tables (this is similar to the Parameter Table pattern.
Change your measures to apply a virtual relationship whenever something is selected on the 'All Dimensions' table, to properly filter the fact table:
SUM('factSale'[Freight])
would become:
SWITCH(
SELECTEDVALUE('All Dimensions'[DimensionId]),
"categoryid", CALCULATE(SUM('factSale'[Freight]),
KEEPFILTERS(TREATAS(VALUES('All Dimensions'[MemberId]), 'factSale'[CategoryId])),
"custid", CALCULATE(SUM('factSale'[Freight]),
KEEPFILTERS(TREATAS(VALUES('All Dimensions'[MemberId]), 'factSale'[CustId])),
"empid", CALCULATE(SUM('factSale'[Freight]),
KEEPFILTERS(TREATAS(VALUES('All Dimensions'[MemberId]), 'factSale'[EmpId])),
// ... etc. for all dimensions ...
, // Fallback, when nothing is selected on 'All Dimensions'
IF(NOT ISFILTERED('All Dimensions'[MemberId]),
SUM('factSale'[Freight])
)
)
Put the [DimensionId] column into a slicer and use the [MemberId] column as the axis on your bar chart. Note that the chart will not show anything unless exactly one item has been filtered on the [DimensionId] slicer.
Explanation: The SWITCH statement determines if any selection has been made on the [DimensionId] column of the 'All Dimensions' table. In that case, a filter is applied to the fact table, depending on which dimension has been selected, using the TREATAS function. We're using KEEPFILTERS to make sure that any existing filters made directly on the individual dimensions are kept as-is.
In case no selection has been made on the [DimensionId] column, we want to fall back to the standard measure SUM('factSale'[Freight]) but since we don't want to repeat this measure for all items on the [MemberId] column, we use IF(NOT ISFILTERED( ... to make sure that we return only a blank value, if [MemberId] is currently used on the chart axis.