Thursday, February 2, 2017

Get Period N data in MDX...

In some scenarios, we may need to get Period N data including the current period.
As an example if we select the Year as 2017, we may need to get the values for 2017, 2016, 2015, .., (2017-(n-1)).

I was able to achieve it using the below MDX Query

WITH
SET [Set_PeriodRange] AS
{STRTOMEMBER(@Param_Period+".lag(N-1)" : STRTOMEMBER(@Param_Period)}

SELECT NON EMPTY{[Measures].[Sales]} ON COLUMNS,
NON EMPTY([Set_PeriodRange]) ON ROWS 
FROM [SalesCube]

Here what I did was I created a set for the what ever the required period range, using the lag function.
Then use that Set for the Row axis in the MDX.
@Param_Period is the parameter with the Year value.

The use of the created Set is that if you pass the parameter value based on a hierarchy, it will return the members for the current level of the hierarchy.
If the current level is Quarter, it will return the N number of Quarters.

Hope this will be helpful...


Tuesday, January 31, 2017

Hide SSRS Report Items while exporting...

While exporting to PDF, EXCEL or any other format in SSRS report, we may need to hide some images or some contents of the report.
We can set the Visibility of that report content using the below expression for the "Show or hide based on an expression" option

=IIF(Globals!RenderFormat.Name="EXCEL" OR Globals!RenderFormat.Name="PDF", true, false)

Here I just set the visibility for EXCEL and PDF format only, but you can add other formats as well.

Also please note the if it is not working for render format value as "EXCEL", check it with Globals!RenderFormat.Name="EXCELOPENXML"

Saturday, January 7, 2017

How to get the Last Month value of a Measure for a Period in MDX...

There was a requirement to show only the last month value for a particular measure, for the given period.
If the period is 2016, then it show the measure value of the 2016 Dec.
If the period is 2016 Q3, then the measure value has to be 2016 Sep.

I was able to achieve it, by creating a calculated measure using ClosingPeriod function.

Formula of the Calculated Measure is as below

(ClosingPeriod([DimDate].[Year-Quarter-Month].[Month], [DimDate].[Year-Quarter-Month].CurrentMember),[Measures].[Count])

You can test it using the below MDX Query as well.

WITH MEMBER [Measures].[LastMonthValue]
AS (ClosingPeriod([DimDate].[Year-Quarter-Month].[Month], [DimDate].[Year-Quarter-Month].CurrentMember),[Measures].[Count])

SELECT NON EMPTY { [Measures].[LastMonthValue] } ON COLUMNS
 FROM [CubeName]
WHERE STRTOSET(@Period,CONSTRAINED)

Hope this will be helpful...

We couldn't complete the updates, Undoing changes in Windows 10...

I was facing the issue while restarting my laptop with Windows 10 as "We couldn't complete the updates, Undoing changes..".
I tried some of the options available in internet, but I was able to finally fix it by using the "Fix problems with Windows Update", troubleshoot option available in Windows 10.

You can do it using the below steps.

Go to the Control Panel and click on the "Find and fix problems" under "System and Security"

Then click on the "Fix problems with Windows Update" under "System and Security".

It will guide you to identify and fix the problems with the windows updates. This works for me and hope it will be useful for you as well.



Tuesday, November 22, 2016

Split comma separated values in a column to multiple columns in SQL...

In this post I am sharing how to split comma separated values in a column to multiple column in SQL.
In this case, we have a table with two columns. One is with the Code and the other column with the seven number values separated by a comma as Numbers

Code           Numbers
A                10,2,55,5,67,11,45
C                1,32,5,15,7,71,35
--                 ---------------------

The expected output is as below

Code          V1  V2  V3  V4  V5  V6  V7
A                10     2   55    5    67  11   45
C                   1   32    5   15     7   71  35


It can be achieved by using the below query.

SELECT Code, [1] AS [V1],[2] AS [V2],[3] AS [V3],[4] AS [V4],[5] AS [V5],[6] AS [V6],[7] AS [V7]
FROM (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY [Code] ORDER BY (SELECT  null)) as rn
FROM (
    SELECT [Code], [Numbers]
    FROM [SampleTable]
) as a
CROSS APPLY string_split([Numbers],',')
) as SourceTable
PIVOT
(
    MAX([value])
    FOR rn IN ([1],[2],[3],[4],[5],[6],[7])
)as pivotTable

Hope this will be helpful...