Thank for the comment. The result is the same

 

When constructing facts for a cube, each row of the source table is passed through the dimension logic and written to the fact table. In each row, some conditions are true, while others are false. Obviously, when rows pass through this logic, all 14 conditions are expected to be returned. But that does not happen for some reason.

 

Ok, lets say there is table   

SELECT 
userActionone, userActiontwo, userActionthree, userActionfour, userActionfive, userActionsix, userActionseven, userActioneigth, userActionnine, userActionten, userActioneleven, userActiontwelve, userActionthirteen, userActionfourteen
FROM TEST.TEST

Then we randomly populate it with 0 and 1.

 

Then we create a cube, dimension and function for it
 

$SELECT(
%source.userActionone=1:"User action one", 
%source.userActiontwo=1:"User action two",
%source.userActionthree=1:"User action three",
%source.userActionfour=1:"User action four", 
%source.userActionfive=1:"User action five", 
%source.userActionsix=1:"User action six", 
%source.userActionseven=1:"User action seven", 
%source.userActioneigth=1:"User action eigth", 
%source.userActionnine=1:"User action nine", 
%source.userActionten=1:"User action ten", 
%source.userActioneleven=1:"User action eleven", 
%source.userActiontwelve=1:"User action twelve", 
%source.userActionthirteen=1:"User action thirteen",
%source.userActionfourteen=1:"User action fourteen", 1:"Other")


Compile and build. Then look in analyzer. Only four this time. My production tables return 10 no matter what

In ObjectScript "_" is concatenation operator variable _ variable or for defining a name for data class MyPackage_User.Names. In you case the system tries to concatenate two fields. In case when you wrap it in double quotes it realy just became a string, that how syntax works for %source in Architect, you can not workaround it, i suggest you to just rename it without any delimiter if possible.

If you use any other data classes exclusively for SQL tables, delimited field will work just fine with double quotes.

Thanks for the reply!
As i said, the query works perfectly fine when executed normaly (without $$$ tokens). The data is correct

I should add some details then

When I compare dates in the WHERE clause, I convert them to INTs, just to make sure all the data is consistent. I also do a slightly more complex comparison. I've omitted the details because they're not relevant to my case

anotherDateField BETWEEN CAST(TO_CHAR(dateFieldOne, 'YYYYMM') as int) and CAST(TO_CHAR(dateFieldTwo, 'YYYYMM') as int)

Next, the date format is %TimeStamp, and it's very common in my data. I work with it every day, and every time function you can think of works without a problem

So the time data works fine, the outer WHERE clause doesn't catch up because of $$$RESTRICT in the inner section but without it the listing would not work at all

If it is pure ObjectScript how to write IF ELSE statement in %expression for example? Or can i use RETURN stetement? 

There are situations when you need to return a specific value. The Range expression doesn't work, for example, when you need to determine the display value for Null.

So there's only one way

IF 'value {return "Value is False"} else {return "Value is True"}

But this is wont work

I can still define a class method inside the cube and reference it from within, for example, %cube.CustomLogicClass(%source.DBValue), but that seems redundant. It leaves my cube looking cluttered with simple functions containing only if-else logic.

I reproduced your case on our data, and yes, the problem is with treeMap.

The problem is in the columns. If your pivot table has columns (in your case, years), DeepSeeWeb does not know how to display them on the treeMap. As an experiment, try removing years from the pivot table and see if any labels appear there.

I am part of the team that supports DeepSeeWeb. I'll create an issue for our front-end department