go to post Peter Steiwer · Oct 7, 2022 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]})"
go to post Peter Steiwer · Sep 28, 2022 Hi Phillip, Specifically, Studio connects using the superserver port: https://docs.intersystems.com/iris20221/csp/docbook/Doc.View.cls?KEY=PAG... As Tom mentioned, you will need to determine which port this has been configured as
go to post Peter Steiwer · May 24, 2022 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
go to post Peter Steiwer · Jun 15, 2021 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.
go to post Peter Steiwer · Jun 11, 2021 What database is in /hs/nehi/ ? These protect errors suggest the user may not have permissions on this database
go to post Peter Steiwer · May 27, 2021 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
go to post Peter Steiwer · May 26, 2021 This now works after modifying my objectscript.export "folder" setting. It was previously "src" and is now "".
go to post Peter Steiwer · Apr 30, 2021 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:
go to post Peter Steiwer · Apr 20, 2021 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
go to post Peter Steiwer · Apr 16, 2021 By default, changing the display of the Week members is not available. However, you can create a custom time level by extending %DeepSee.Time.WeekYear and overriding a couple methods. Then you can change your timeFunction value in your cube definition. Here is a sample I put together that was MINIMALLY tested on a newer version than the version you noted here: Class CustomTime.WeekRange Extends %DeepSee.Time.WeekYear { /// Return the user-visible name of this level. ClassMethod %GetName() As %String { Quit "WeekRange" } /// Convert a level key value to a display value. ClassMethod %KeyToValue(pKey As %Integer, pFormat As %String = "", pOffset As %String = "") As %String { Set tValue = "" Set tSC=..%KeyToBaseRange(pKey,.tStart,.tEnd,pOffset) Set tValue=$zd(tStart)_"-"_$zd(tEnd-1) Quit tValue } /// Convert a $H value to the logical value used for this level. /// This is used within the computed field logic for properties /// within a fact table based on this level.<br/>. /// In this case, we convert $H to an ISO Week: YYYYWnn ClassMethod %Convert(pTime As %DeepSee.Datatype.dateTime, pTimeOffset As %String = "") As %Integer [ CodeMode = expression ] { $S(pTime="":"",pTime=$$$DeepSeeNullTimeMarker:$$$DeepSeeNullTimeMarker,1:##class(%DeepSee.Time.WeekYear).ISOWEEK(pTime)) } }
go to post Peter Steiwer · Mar 17, 2021 This InterSystems IRIS connector will look at the Tables and BI Cubes that are defined on the system. I believe you can use the ODBC connector if you want to write your own SQL. Another option could be to define a view inside of IRIS and use the view with this connector
go to post Peter Steiwer · Mar 15, 2021 You need to make sure "found" is being updated when the recursive call exits. This can either be done by reference (passing in .found) or simply as a return value (set found instead of do). It is always going through the full loop and never exiting early because once the value is found, it is never passed back up as being found. This means that the loop just continues on. Here are two examples of these solutions if $isObject(value) { do ..JSONIterator(value,newPath,.SearchKey,.SearchVal,.found) } if $isObject(value) { set found= ..JSONIterator(value,newPath,.SearchKey,.SearchVal,found) }
go to post Peter Steiwer · Jan 19, 2021 You might also need to add:Set mgr.IQN=SchemaName_"."_$Translate(TableName,".",$c(2))
go to post Peter Steiwer · Jun 22, 2020 Hi Reid, There is no current way to change the Axis Scale in a standard DeepSee chart. However, if you are using a third party charting library you are able to implement this. I added this capability to my Third Party Chart Library project. For example you can turn your chart from: into: By just modifying one setting in the UI.
go to post Peter Steiwer · Mar 23, 2020 If you are using %INSTALLER, you can use GRANT to assign a role: <CSPApplication Url="/api/pivotsubscriptionsunsubscribe" Directory="${CSPDIR}" DispatchClass="PivotSubscriptions.UI.Unsubscribe" Grant="PivotSubscriptionsUnsubscribe" AuthenticationMethods="64" /> I have tested and confirmed that this does add the Application Role.
go to post Peter Steiwer · Mar 13, 2020 Based on the documentation, it seems like this may be expected since $GET is expecting a variable, not a value returned from a method call. The main purpose is to protect against undefined references which a method call should never return since an empty string is different than undefined. Since the documentation mentions it accepts multidimensional object properties, it seems like it is assuming this is what the passed in reference is. Documentation on expected values here.
go to post Peter Steiwer · Mar 13, 2020 Hi Michel, I am not exactly sure which type of stream you are using, but different types appear to override the Read methods. For example:%Stream.FileCharacter does not implement a Read method, but it extends %Stream.FileBinary. In %Stream.FileBinary, the Read method is defined as: Method Read(ByRef len As %Integer = 32000, ByRef sc As %Status) As %RawString
go to post Peter Steiwer · Mar 11, 2020 Also, CSPDIR should be a good default value and you probably don't need a dummy directory: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GC...
go to post Peter Steiwer · Mar 11, 2020 You can use GetOneStatusText: USER>w $system.Status.GetErrorText(x)ERROR #5002: ObjectScript error: <UNDEFINED> *yyUSER>w $system.Status.GetOneStatusText(x)ObjectScript error: <UNDEFINED> *yy
go to post Peter Steiwer · Mar 10, 2020 Hi David, I see you used the "VSCode" tag. The couple of times I have done this in VSCode, I typically just import the XML classes into my system and then once they are loaded, I use the VSCode ObjectScript Explorer and export my classes from there into my project. I've only done it once or twice, so I don't know if there is a better way of doing it. If you are interested, these are some methods for doing it manually as well that could be scripted to do all your files: USER>do $system.OBJ.Load("C:\Users\psteiwer\Desktop\Class.xml") Load started on 03/10/2020 17:40:03Loading file C:\Users\psteiwer\Desktop\Class.xml as xmlImported class: PivotSubscriptions.UtilsLoad finished successfully. USER>do $system.OBJ.ExportUDL("PivotSubscriptions.Utils.CLS","C:\Users\psteiwer\Desktop\Class.cls")