go to post Benjamin De Boe · Nov 29, 2019 No, we indeed don't support that syntax feature. Like Evgeny said, this recursion is something we'd typically try to wrap inside ObjectScript methods, which you could then expose as a stored procedure.
go to post Benjamin De Boe · Nov 29, 2019 Besides the elaborate earlier answers about the actual interfaces under (or at) the hood, maybe a simple question to ask is which version you're on. If I'm not mistaking, that SELECT option was only added some 5 years ago and because the word "legacy" shows up on this page, I thought it's worth checking too ;-)
go to post Benjamin De Boe · Oct 28, 2019 We're working on support for OVER syntax (as part of SQL window functions) for a future release of IRIS. Feel free to reach out to me directly with more details on the specific requirements you have to see if they correspond to the feature set currently in the pipeline.
go to post Benjamin De Boe · Oct 25, 2019 @Anastasia Dyubaylo: Do we have a Playwright badge on Global Masters? :-)
go to post Benjamin De Boe · Oct 3, 2019 If you know which non-NoExtent (for lack of a YesExtent keyword :-) ) subclass of A you're targeting in B's subclass, you can override your property definition pointing to that subclass.
go to post Benjamin De Boe · Sep 13, 2019 The Jupyter support is very exciting, adding a neat and highly appropriate mechanism for exposing IRIS-side concepts to a typical Python environment (Jupyter). This release is introducing a first taste of such an interaction, but we're very interested in learning from your experiences and ideas on making this even more effective at adding process control to your Python work.
go to post Benjamin De Boe · Sep 9, 2019 how about CASE :path WHEN '' THEN 1 ELSE $LENGTH(:path,'.')+1 END
go to post Benjamin De Boe · Sep 6, 2019 InterSystems IRIS (and Caché before that) will indeed make this decision for you. The SQL optimizer will analyze all the conditions in your query and select the best query plan based on the available table statistics, which includes column selectivity. See also this article on collecting those stats with the TuneTable command.As a matter of fact, our development team is making some exciting enhancements to the cost functions used to turn those table statistics into the actual cost estimates for the possible query plans. More about that at our upcoming Global Summit!
go to post Benjamin De Boe · Aug 28, 2019 Thanks for sharing Dave, great article!As this is an area we'd like to develop further on the product end, we're very eager to hear customers' experiences and feedback on this.
go to post Benjamin De Boe · Jul 18, 2019 IRIS NLP, previously known as iKnow, is an embedded technology, meaning it's there in the form of APIs. These articles on building a domain and using the knowledge portal should be a helpful start, as is this series of step-by-step videos (which are a little older I'll admit; start with the "fundamentals" one) and of course other articles on the developer community tagged for iKnow.
go to post Benjamin De Boe · Jun 17, 2019 Hi Guillaume,iFind indices, like bitmap indices before, require a bitmap-friendly ID key (positive integer). When you make a table the child in a parent-child relationship, the underlying storage structure will use a composite key that therefore no longer satisfies the bitmap friendliness. We do plan to lift this limitation in a future release, as it's already the case for bitmap indices, but for now you'll have to review your schema and see if a one-to-many or (preferred) foreign key would work for you.Thanks,benjamin
go to post Benjamin De Boe · May 16, 2019 Triggers expressed in SQL cannot contain a DECLARE clause, but you'd get a lot more flexibility when using ObjectScript triggers. See the reference documentation for more details.
go to post Benjamin De Boe · May 2, 2019 Good question. Given our long history, we have a fair number of utility methods whose signatures grew organically and for which backwards compatibility goals have prevented us from doing significant cleanup. We're now in the process of reviewing the SQL utility methods and for the ones that really need as many parameters, are considering the use of an options string (aka compile flags), as is being used by some more modern infrastructure such as the work queue manager and/or just making separate specific methods rather than super-generic 10-argument ones. While we're at it, I'm eager to read suggestions or feedback on how others developing utility functions are dealing with this.
go to post Benjamin De Boe · Apr 23, 2019 Depends a bit on what you want. If you want to use them in the WHERE clause, you can leave the "list of" structure as-is and use our %FOR SOME ELEMENT syntax. In your case, for retrieving them in the SELECT list, changing the projection or your data model is probably the pragmatic choice. Note that collections are a really powerful feature when working in the Object paradigm, but somewhat constrained by SQL standard operations when accessing through the relational paradigm.
go to post Benjamin De Boe · Apr 17, 2019 Still not sure I'm entirely on the same page wrt the goal, but $translate is to replace individual characters with other individual characters (so 1 by 1). If you're looking for a proper function in ObjectScript, take a look at $zconvert(), which supports HTML and XML-escaping.
go to post Benjamin De Boe · Apr 15, 2019 No, iKnow doesn't extract text from RTF prior to its NLP task. Besides the LibreOffice suggestion, I've also heard people who've worked with simple Java RTF extractors (part of regular JDK) and Tika in the past.
go to post Benjamin De Boe · Apr 11, 2019 Horita-san,not sure whether you mean the projection (table) itself is missing or the row you created through the API isn't showing up. This works fine for me, but in order to combine the use of APIs with a domain definition, you have to set the allowCustomUpdates flag to true (off by default). See also the notes in this article on the dictionary builder demo. When set to false, the API methods like CreateDictionary() will return an error (passed by reference, the returned ID will be below zero to indicate a failure).Hope this helps,benjamin
go to post Benjamin De Boe · Apr 1, 2019 Thanks for all your input thus far, which is proving very helpful inspiration for our planning process. Feel free to participate if you haven't done so or share with your colleagues, as we're still watching new inputs. Also, don't hesitate to share your thoughts directly on this thread. Positive feedback is great, but critical is often even more helpful for us :-)
go to post Benjamin De Boe · Mar 21, 2019 There is a simple regression calculator that is used internally for similar trend line work, iirc. The class reference is not spectacularly elaborate, but it's fairly straightforward to use. First you use the add() function to load up points and then the result() function will calculate a simple trend line and populate Slope and Intercept properties: USER>s stat = ##class(%DeepSee.extensions.utils.SimpleRegression).%New() USER>w stat.add(0,1) 1 USER>w stat.add(1,2) 1 USER>w stat.result(.b,.y0,.r) 1 USER>zw b,y0,r b=1 y0=1 r=1 USER>w stat.Slope 1 you can keep adding data and re-calculate: USER>w stat.add(1,1) 1 USER>w stat.result(.b,.y0,.r) 1 USER>zw b,y0,r b=.5 y0=1 r=.5