Hi Virat,

In %OnGetFilterMembers, you will have access to pFilter, which will contain the name of your filter, "SubjectName" in this example. You will also have access to pMembers, which is an array of members that the SearchBox dropdown will use in the UI. By default, this will contain the results from sql="SELECT DISTINCT SubjectName FROM BI.Invoice". You will also have access to pFilterValues, which contains an array of already selected values. In your case, "Virat and Big Show". You would then need to use this information to remove values from the pMembers array to reduce the available members.

By default, IRIS BI does this "member filtering" for you. The use of KPIs is very customized, so it requires some additional custom logic to allow this behavior

Hi Ahmad,

These functions do not exist in MDX, please see the MDX function documentation here: https://docs.intersystems.com/iris20221/csp/docbook/Doc.View.cls?KEY=D2R...

You likely want to use the %OR function: https://docs.intersystems.com/iris20221/csp/docbook/DocBook.UI.Page.cls?...

Using %OR would allow you to reference multiple members, for example:
Expression="%OR({[Demographics].[H10].[Citizenship].&[USA],[Demographics].[H10].[Citizenship].&[U.S.A],[Demographics].[H10].[Citizenship].&[US]})"  

Hi Virat,

Here is a good resource for getting started with InterSystems IRIS BI (DeepSee):
https://learning.intersystems.com/course/view.php?id=1793

If you are interested in creating dashboards and exploring your data, IRIS BI is a good choice.

If you are interested in traditional reporting, you may want to consider InterSystems Reports:
https://learning.intersystems.com/course/view.php?id=1444

Thanks, this works. I did have to click the "+" icon and add a new namespace to the Explorer, since adding the namespace from InterSystems Server Manager did not pull it into the ObjectScript Explorer. This is kind of an unusual case since I don't necessarily have a project/workspace for the generated class I want to view. If I already had one, then I wouldn't need to use the namespace explorer.

Depending on how specific you need to make your sorting, you can also modify the custom drilldown spec with ORDER functions. If needed, you could change the measure and the direction for each level. For example:

ORDER([Product].[P1].[Product Category].Members,Measures.[%COUNT],BDESC)
ORDER([Outlet].[H1].[Region].Members,Measures.[%COUNT],BDESC)
ORDER([Channel].[H1].[Channel Name].Members,Measures.[%COUNT],BDESC)

When executing a query, DeepSee will store intermediate and final results in the cache globals. As the engine was trying to create a new session, it looks like it could not access the database in e:\hs-db\tfoms\. Either this database is mounted read only (in this case you will need to create some DeepSee mappings) or the user executing the query does not have r/w permissions on this database.

I just tested and it worked OK for me. I used the following:

Class:

 Class DC.TestImport Extends %Persistent
{ 
Property TS As %TimeStamp; 
Property Bool As %Boolean; 
}

CSV:

2021-05-27 17:43:15,0
2021-05-27 17:51:13,0
2021-05-27 17:53:11,1

Import Settings:

File Name:
C:\Users\psteiwer\Documents\DC\testimport.csv
Charset:
<Device Default>
Schema:
DC
Table:
TestImport
Columns are delimited by:
Special Character: ,
First row contains column headers?
No
String quote:
double
Date format:
YYYY-MM-DD
Time format:
hh:mm:ss
TimeStamp format:
ODBC Format
Disable validation?
No
Defer Index Building with %SortBegin/%SortEnd:
No

We also have a sample that uses %InjectFact() inside of the %OnBuildCube() Method. Documentation here.

This injects the cities "Cambridge", "Chelsea", and "Somerville" into the HoleFoods cube. These city members will exist in the dimension table, but there is no associated data (there could be, but in this example there isn't). When using the City level on rows and the default NONEMPTY, we see the following:

When we turn "Show Empty" on:

We now see these members with no data:

Hi Evgenii,

I noticed this question has not been answered yet, is there a specific reason why you are looking into using a Data Connector? Typically before recommending a Data Connector, we would recommend that a new class is created and populated from a similar query that your Data Connector would have used. This allows for a lot more standard cube usage. Standard options like synchronization and detail listings would be available without needing to implement custom code to modify the SQL and they wouldn't require you to worry about using $$$RESTRICT