Tuesday, February 28, 2017

Livetiles Collaboration in sharepoint

In SharePoint getting people to collaborate is key to the success of the project. And since custom development of such solutions can get too complex and time consuming more often than not, it definitely makes sense to use a third party solution which greatly reduces efforts and time spent.

One alluring such tool is Live Tiles which makes pretty easy to develop custom collaboration solution without much coding. More info can be found at https://www.livetiles.nyc/

Wednesday, February 8, 2017

MDX aggregate measure over specific dimensions

In the cube in our project, there was a need to aggregate a measure only on 3 out of 6 dimensions, so that the aggregation would not filter this measure on any of the excluded 3 dimensions.

After trying Aggregate and Ancesters functions I could finally get correct results with the root function as explained in this blog

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/3b724376-aa6d-4bcc-afcb-a2ac07c94df5/mdx-to-aggregate-measure-over-specific-dimensions?forum=sqlanalysisservices

To sum it up, I created a calculated measure like:

member [measures].[TotalCustYearCat] as (
root([Date].[Calendar Year].currentmember), 
root([Product].[Category].currentmember),
root([Customer]),
[Measures].[Internet Sales Amount]
)

Tuesday, February 7, 2017

Linq to MDX

Linq to MDX would be a grate feature to have, since that could make it much easier for developers to query SSAS cube and also take care of strong typing objects.

There are a few open source projects and some paid frameworks which aim to achieve this difficult task. I have not yet tested any of them but just mentioning here for future reference.

Free/Open Source:
https://github.com/DynamicTyped/MdxClient
https://github.com/alfathenus/NMDXBuilderLibrary
https://github.com/aprender/MDX-Runner
https://github.com/BalticAmadeus/FluentMdx


Paid:
http://www.agiledesignllc.com/Products.htm
https://code.google.com/archive/p/ranet-uilibrary-olap/

Monday, February 6, 2017

Highcharts lazy drilldown

A lazy drill down in highcharts can optimize performance and speed of the website greatly, fortunately there is very easy way to add this to the chart as explained here:

http://stackoverflow.com/questions/26801793/lazy-highcharts-drilldown

Wednesday, January 25, 2017

Aggregate a calculated measure in MDX

There are some situations where we need to calculate aggregations on some calculated measures in MDX. Though it might be possible to define such aggregations in a pure calculated measure, the performance of such queries is significantly slower since each calculation has to be done at each leaf member level and them add them all up to the desired level.

The other much more preferred alternative is to declare a real measure and define its value at leaf scope in MDX definition. Using this approach, the aggregations are automatically calculated at the desired level, and since results of the calculations are cached at all relevant levels, MDX queries are slow only for the first time.

Chris Webb explains this approach in details in this blog:

https://blog.crossjoin.co.uk/2013/05/29/aggregating-the-result-of-an-mdx-calculation-using-scoped-assignments/

Thursday, January 5, 2017

Create a knockout controller for sharepoint visual webpart

Using a knockout controller in sharepoints visual webpart without referencing any of the server object model is necessary for the new development paradigms of Sharepoint.

The blog below explains a coherent way to achieve this:

http://community.rightpoint.com/blogs/viewpoint/archive/2013/07/01/sharepoint-2013-web-parts-and-the-app-model-part-3-the-web-part-quot-client-quot-architecture.aspx

Regex Email validation in c# dot net core

 Use this regex /^_?[a-zA-Z0-9]([a-zA-Z0-9]*[._+-])*[a-zA-Z0-9_]+@(?!-)[A-Za-z0-9-]{1,63}(?<!-)(\.(?!-)[A-Za-z0-9-]{1,63}(?<!-))*\.[A-...