After further testing, it looks like this isn't working as I originally thought. It looks like our only option at this point is to use Security.Applications ![]()
- Log in to post comments
After further testing, it looks like this isn't working as I originally thought. It looks like our only option at this point is to use Security.Applications ![]()
One thing to note: the final ELSEIF is not going to be true ever since the third parameter of $LISTGET is the default value if the requested list value is undefined. Since i will never be = "", this will never quit.
As Marc mentioned, it may just be easiest to build a new list out of segments that aren't [ or ]
I seem to get an error when I do not specify Directory:
2020-03-11 08:29:03 0 PivotSubscriptions.Installer: ERROR #5001: - ERROR when creating Portal application: Application name, namespace and directory must not be null
You can use GetOneStatusText:
USER>w $system.Status.GetErrorText(x)
ERROR #5002: ObjectScript error: <UNDEFINED> *yy
USER>w $system.Status.GetOneStatusText(x)
ObjectScript error: <UNDEFINED> *yy
Even though it isn't throwing an error it is not creating the Web App correctly. If you view your Web App, the Dispatch class is not set
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=G…
Something like this may work:
SELECT parent FROM %Dictionary.CompiledProperty where name like 'Name' and NOT %ID %Startswith '%'
This will give you all tables that aren't % classes that have a "Name" property
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
Have you tried using a JOIN to get the desired results?
If you have already tried using a JOIN, what are you seeing that is not expected?
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.
To add a little more to this, I would say it is basically the same as using SET vs WRITE:
SAMPLES>set person=##class(Sample.Person).%OpenId(1)
SAMPLES>w person.CurrentAge($h-1000)
2
SAMPLES>set person.CurrentAge($h-1000)=1
SET person.CurrentAge($H-1000)=1
^
<PROPERTY DOES NOT EXIST> *CurrentAge,Sample.Person
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.
I believe it is 3 days. I think this is to confirm posts are real and not spam. Also to allow them to get some votes and confirm it has a positive rating.
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.
It looks like you are able to fix this error. Just in case anyone else comes across this error in the future, it means that the data has not yet been built for the element that is being referred to. In this example, that element is [Measures].[AvgTime]. By running the task, the following line was executed:
settCubeRebuild = ##class(%DeepSee.Utils).%BuildCube("Operational Analytics")
This performed a full build of the cube, so the Measure that was referenced in the error and all other elements in the cube were built
Great for dealing with errors as they happen - before they get out of hand!
You might also need to add:
Set mgr.IQN=SchemaName_"."_$Translate(TableName,".",$c(2))
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)
}
Hi Evgeny,
I have previously played around with this concept of a custom action manager that would allow mapping classes/methods in an easier way without needing to manually create new action classes and modify your cube. This is still in an Alpha version, but if you want to give it a test and offer any suggestions before it goes into Beta or OpenExchange, I would be glad to hear any thoughts
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
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: YYYYWnnClassMethod %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))}}I looked into these suggestions, but I still can't make it work. I see that when I am editing a file and I hover over the name on the tab at the top, it says "C:\Users\....\PivotSubscriptions\Subscription.cls". After using "Go To Definition", the new class opens with the path of "/PivotSubscriptions/EventLog.cls"
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
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:.png)
When we turn "Show Empty" on:.png)
We now see these members with no data:.png)
When using 1.1.6 and 1.0.11, I am still getting a read only copy when I use Go to Definition. Are there any settings that need to be configured in a specific way?
Yes, the second class is in the same project as the first and both exist locally on the file system
This now works after modifying my objectscript.export "folder" setting. It was previously "src" and is now "".
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,1Import 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
|
What database is in /hs/nehi/ ? These protect errors suggest the user may not have permissions on this database
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.