Dmitrij Vladimirov · Dec 19, 2025 go to post

There is a refined version of the app isc-dev: iris-bi-utils. The version is more organize, all methods placed in there categories and it has cool and memorable name 😁.

Dmitrij Vladimirov · Dec 19, 2025 go to post

The last part about the "call stack" was supposed to be explained with a GIF, but the DC website posted a static image. I apologize for the inconvenience, I corrected it in the article and repeated it here (just in case). As I said, keep an eye on the call stack window and pay attention to changes.

Dmitrij Vladimirov · Dec 13, 2025 go to post

Sorry for the delay. Your solution solved the problem. I was using the %Integer data type, but the solution was %Boolean.

Dmitrij Vladimirov · Nov 27, 2025 go to post

There's not much code. In fact, there's none at all. All I have is a table with some data (the data is confidential) and a $SELECT() with the conditions described. I reproduced my case almost identically. All happend inside Architect and Analyzer. 

Dmitrij Vladimirov · Nov 26, 2025 go to post

The source table I use in production always contains a matching row. If there's no user data, it's not recorded in the table. Therefore, the SELECT statement must match each condition with 100% certainty. And there are no restrictions (at least not ones that would exclude some conditions).

Dmitrij Vladimirov · Nov 26, 2025 go to post

Both. But if i add trird condition the result is still two
 

$SELECT(%source.userActionone=1:"First user action", %source.userActiontwo=1:"Second user action", 1:"Other")


 

Dmitrij Vladimirov · Nov 26, 2025 go to post

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.

 

Dmitrij Vladimirov · Nov 26, 2025 go to post

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

Dmitrij Vladimirov · Nov 26, 2025 go to post

Thanks for the comment. I tested $SELECT() in a similar script before writing this question and got the same result as yours.

Dmitrij Vladimirov · Nov 11, 2025 go to post

Try this function 

AGGREGATE(%TIMERANGE(YourTimeDimension.hierarchy.level,YourTimeDimension.hierarchy.level.CurrentMember),Measures.YourMeasure)

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.

Dmitrij Vladimirov · Oct 26, 2025 go to post

I solved this problem by creating a SQL view and then join it inside a listing query 

SELECT
v.somefields
FROM $$$SOURCE, CustomSchema.MyView as v
WHERE $$$RESTRICT and source.Field = v.SameField
Dmitrij Vladimirov · Oct 16, 2025 go to post

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

Dmitrij Vladimirov · Sep 29, 2025 go to post

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.

Dmitrij Vladimirov · Sep 27, 2025 go to post

Thanks for the information, but I would like to see more comprehensive documentation. Such feature rich application and no solid docs anywhere. I think i would create an idea on Ideas Portal about it.

Dmitrij Vladimirov · Sep 27, 2025 go to post

I noticed you've stopped publishing app quality reports since january 2025. Why? You can publish the same information in the moderation section. Reviews aren't useful anywhere except for the app's rating on the platform. Quality reports, on the other hand, show how well developers take care of their apps.

Dmitrij Vladimirov · Sep 12, 2025 go to post

Here is your Plotly code.
 

fig = go.Figure(
       data=[
           go.Bar(
               y=df['category'],
               x=df['debit']
           )
       ],
       layout=go.Layout(
           title='Total Monthly Cost'
       )
    )


You should convert df to a list to pass the data to the graph. Since it takes an array, it cannot display a data frame.
Try it like this:
df['category'].tolist()

df['debit'].tolist()

Dmitrij Vladimirov · Aug 12, 2025 go to post

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

Dmitrij Vladimirov · Aug 11, 2025 go to post

Hi
Currently there is no issue with displaying labels on the treeMap. What version of mdx2json and DeepSeeWeb do you use? 

Dmitrij Vladimirov · May 20, 2025 go to post

Thanks for the clarification.

Now that you've answered, I feel embarrassed by how easy it was to set the default data source.

But I must say, the error message is a bit confusing. If there's no way to set a default key:value pair from a termlist, why is the default editor available?

Thanks for the reply.
CASCADE means that the data is deleted also in parent and child tables, RESTRICT means that only parent data is deleted. Changing the default RESTRICT does nothing, the data is still there
Any other option?

UPD: i've managed to delete data with

UPDATE TABLE table SET column = NULL

But issue is still open, why %DELDATA do nothing

Dmitrij Vladimirov · Mar 25, 2025 go to post

As far as I understand from your answer, I have no choice but to apply some hacks to my data. This is unfortunate. I was thinking about using a hash too. I think I will do that.