Evgeny Shvarov · May 25, 2016 go to post

Here is the case, when you probably will need at least two web apps for DeepSee REST API.

Consider you want  some data to be accessed with authorisation and you provide this access with /webapp1 which is set up with authorisation by password.

And maybe you want some data to be accessible for everyone - you can do it with /webapp2  with option for UnknownUser.

Evgeny Shvarov · May 24, 2016 go to post

No, you don't need gulp to use it. Gulp is used to make releases.

To use it on your  server do following:

Install MDX2JSON first.

  1. Download Installer.cls.xml (from MDX2JSON folder in repository or releases page) and import it into any namespace)
  2. Run in terminal (import namespace) under user with %All role:

    Do ##class(MDX2JSON.Installer).setup()

It will create MDX2JSON Namespace, will create /MDX2JSON webapp, make MDX2JSON package mapping to %All.

Check server:port/MDX2JSON/Test  that installation was successful.

Then download the recent DSWeb release and install it.

How to install:  download installer. Import it to any Namespace (f.e. User).

Run:

d ##class(DSW.Installer).setup()

It will create webapp, folder and will install the client.

To update DSW, run:

d ##class(DSW.Installer).update()
Evgeny Shvarov · May 22, 2016 go to post

Cannot make an answer on my own question. 

Anyway, here are some answers from Russian forum:

DbVisualizer and Caché Monitor can export/import InterSystems Caché data partially via SQL queries.

There is also %Global class wrapper for %GI, %GIF,..etc routines which can help to export/import global nodes partially. Documentation.

Evgeny Shvarov · May 17, 2016 go to post

Oh. I wanted to use this for Combined Cubes to have shared Date dimension with all the dates. It seems it will not help me, though maybe helpful thing in a lot of other cases. Is there any kind of setting in Architect to introduce all the dates in Dimension>

Unless I should create entries in fact table for all the days even there were no facts in this days for both cubes. Right?

Evgeny Shvarov · May 16, 2016 go to post

If you want just 2012, exclude 2011 from the filter - it will still show the percentage for 2012 related to 2011.

Or maybe I didn't get what pivot do you want?

Evgeny Shvarov · May 16, 2016 go to post

Thank you Alex! That is exactly I'm looking for!

What Caché version starts supporting this?

Evgeny Shvarov · May 16, 2016 go to post

Mike, if you don't like it - you don't use it. 

You'll not miss any DC content if you just subscribe for every post and comment in subscription settings.

DC Twitter is intended to increase the audience for DC highlights. 

Write valuable topic and it will be tweeted on DC Twitter.

Evgeny Shvarov · May 15, 2016 go to post

One more optimisation. This:

Set list = $ListFromString(string,",") 
Set pointer = 0 
While $ListNext(list,pointer,piece) 
 { //Do something with piece... 
 }

Can be changed to:

Set list = $ListFromString(string,",") 
Set pointer = 0 
For   { 
 quit:'$ListNext(list,pointer,piece) 
 //Do something with piece... 
 }

Which is faster, as 'for' is generally faster than 'while'.

Took from Russian Caché forum

Evgeny Shvarov · May 13, 2016 go to post

Hi!

You can make it with ParallelPeriod keyword.

F.e. let's take sales in Samples for the Holefoods cube.

To show YearToYear monthly growth in percent add in the pivot calculated measure "YTY growth" with expression:

(DateOfSale.CurrentMember-ParallelPeriod(DateofSale.YearSold,1,DateOfSale.CurrentMember))/ParallelPeriod(DateofSale.YearSold,1,DateOfSale.CurrentMember)

And format: ##.##%

How to use it. 

Place months in a pivot in Rows. Add YTY Calculated Measure to Cols. And add any Measure you want to compare into Measures, f.e. Revenue. 

You'll get following MDX:

 WITH  MEMBER [DateOfSale].[SelectedYear] AS '[DateOfSale].[Actual].[YearSold].$VARIABLE.Year' MEMBER [MEASURES].[YTY growth] AS '(DateOfSale.CurrentMember-ParallelPeriod(DateofSale.YearSold,1,DateOfSale.CurrentMember))/ParallelPeriod(DateofSale.YearSold,1,DateOfSale.CurrentMember)',FORMAT_STRING='###.##%' SELECT NON EMPTY {[Measures].[%COUNT],[MEASURES].[YTY GROWTH]} ON 0,NON EMPTY [DateOfSale].[Actual].[MonthSold].Members ON 1 FROM [HoleFoods]

See the result:

And here are 2011 and 2010 together to prove the measure above works properly:

Hope that helps.

Evgeny Shvarov · May 13, 2016 go to post

Hi!

You can make it with ParallelPeriod keyword.

F.e. let's take sales in Samples for the Holefoods cube.

To show YearToYear monthly growth in percent add in the pivot calculated measure "YTY growth" with expression:

(DateOfSale.CurrentMember-ParallelPeriod(DateofSale.YearSold,1,DateOfSale.CurrentMember))/ParallelPeriod(DateofSale.YearSold,1,DateOfSale.CurrentMember)

And format: ##.##%

How to use it. 

Place months in a pivot in Rows. Add YTY Calculated Measure to Cols. And add any Measure you want to compare into Measures, f.e. Revenue. 

You'll get following MDX:

 WITH  MEMBER [DateOfSale].[SelectedYear] AS '[DateOfSale].[Actual].[YearSold].$VARIABLE.Year' MEMBER [MEASURES].[YTY growth] AS '(DateOfSale.CurrentMember-ParallelPeriod(DateofSale.YearSold,1,DateOfSale.CurrentMember))/ParallelPeriod(DateofSale.YearSold,1,DateOfSale.CurrentMember)',FORMAT_STRING='###.##%' SELECT NON EMPTY {[Measures].[%COUNT],[MEASURES].[YTY GROWTH]} ON 0,NON EMPTY [DateOfSale].[Actual].[MonthSold].Members ON 1 FROM [HoleFoods]

See the result:

And here are 2011 and 2010 together to prove the measure above works properly:

Hope it helps.

Evgeny Shvarov · May 12, 2016 go to post

Oh, thanks for this! I think it worth to make a separate snippet posting how to use the record mapper. Haven't found it in the documentation.

Evgeny Shvarov · May 12, 2016 go to post

Agreed. Will fix it. Anyway, you are very welcome to add your version of the simplest ever file management snippet ;)

Evgeny Shvarov · May 12, 2016 go to post

Didn't get it. You mean I should change the description for the snippet?

Or to change the snippet to make it less "csv" specific?

Evgeny Shvarov · May 12, 2016 go to post

Yes) Timur already answered. This snippet is not very general "read from file" snippet - but snippet to parse "russian-like" csvs) But every time when I work with text files line by line I use it. 

Evgeny Shvarov · May 11, 2016 go to post

Mark, thank you, that's useful!

I use also $T command in terminal, which shows the line with bug, like:

USER> w $T(Method+7^Package.Class.1)

Evgeny Shvarov · May 10, 2016 go to post

Yes, at least these cases. And what is the general approach with your type of installation to show the user:

What's happened?

Were there any errors during installation?

Evgeny Shvarov · May 9, 2016 go to post

Great article, Nikita! What is the general approach in your case to show/save logs of what was installed? Of course, I can open Package.Installer class to see what should have happened during installation, but I think it is good to know what really happened with the target system.

Evgeny Shvarov · May 7, 2016 go to post

To highlight the code you also can simply go into post's html source (press source button or "disable rich text") and insert your code between pre and code tags, like it is shown in the shot