go to post Alexander Koblov · Dec 20, 2019 I also see this error for some tables. I don't know what's causing this. I've googled it and looks like some error with ODBC Connections from Power BI.
go to post Alexander Koblov · Dec 18, 2019 Hi Vikram. Looks like you trying to use InterSystems IRIS Power BI Adaptor to connect to Caché. This adaptor does not support Caché. Use ODBC connection to connect to Caché from Power BI. Hope this helps, Alexander.
go to post Alexander Koblov · Dec 2, 2019 Hi Laura. There should be only one copy of zenutils.js. It should be only in csp\broker. CSP Gateway first looks for any static file (including zenutils.js) in appropritate folder (.e.g. csp\samples). If file is not present there, CSP Gateway then looks for that file in csp\bpoker. Hope this helps, Alexander.
go to post Alexander Koblov · Dec 2, 2019 The best way to handle such problems is: a) Enable Audit (System Administration -> Security -> Auditing) b) Enable logging of audit events LoginFailure and Protect (Configure System Events) c) Reproduce the error d) Check Audit database if it has any reported LoginFailure or Protect events. If yes -- check details of these events.
go to post Alexander Koblov · Nov 28, 2019 Hi Thembelani. See InterSystems IRIS Adoption Guide (available in WRC -> Online Distributions -> Docs) %Library.CachePopulate was renamed to %Compiler.Type.Populate
go to post Alexander Koblov · Nov 27, 2019 The best I know is $TR/$J combination: USER>w $TR($J("",10)," ","x") ; repeat x 10 times xxxxxxxxxx USER>w $TR($J("",5)," ","y") ; repeat y 5 times yyyyy
go to post Alexander Koblov · Oct 7, 2019 Relative cost is only used to compare different plans for the same query. Relative cost is not useful for comparing two different queries. Can you post screenshot of both queries with corresponding plans?
go to post Alexander Koblov · Oct 7, 2019 You should look into query plans for these queries. Generally, they can be different.
go to post Alexander Koblov · Sep 18, 2019 Unpack IAM-0.34-1-1.tar.gz first. Docker image is inside this archive
go to post Alexander Koblov · Sep 17, 2019 To add on what Dmitry said. We need to see the query, its plan and corresponding classes with selectivity information. For example, do you really want to run query without join condition? select o.col1, o.col2, op.partnum, op.amount from orders o join orderpositions op where o.orderDate > $H-1000
go to post Alexander Koblov · Sep 17, 2019 Hi Kris. What version of Caché do you have? SetHttpHeader is correct method to add headers. ISCSOAP began logging headers starting from 2016.1. In order to log headers you need to add "h" to the ^ISCSOAP("Log"). https://cedocs.intersystems.com/ens20161/csp/docbook/DocBook.UI.Page.cls...
go to post Alexander Koblov · Sep 11, 2019 Following this useful table (https://stackoverflow.com/a/33206814/82675) you can have blinking text as follows: USER>write $C(27)_"[5m"_"Hello"_$C(27)_"[0m"
go to post Alexander Koblov · Sep 10, 2019 Contact InterSystems Support: https://www.intersystems.com/support-learning/support/immediate-help/
go to post Alexander Koblov · Sep 9, 2019 You need to return Status from this method. Everything that you write inside this method is placed inside element Method override( proxy As %SOAP.ProxyDescriptor, tag As %String) As %Status { Write "<request>hi</request>",! Quit 1 }
go to post Alexander Koblov · Sep 9, 2019 I'm not sure for how much this is efficient, but you can use XSLT to do the transformation. Class CMT.XmlToCsv [ Abstract ] { ClassMethod transform( infile As %String, outfile As %String) As %Status { Set tXSL=##class(%Dictionary.CompiledXData).%OpenId(..%ClassName(1)_"||XmlToCsv").Data Set tSC=##class(%XML.XSLT.CompiledStyleSheet).CreateFromStream(tXSL,.tCompiledStyleSheet) If $$$ISERR(tSC) Quit tSC quit ##class(%XML.XSLT.Transformer).TransformFileWithCompiledXSL(infile,tCompiledStyleSheet,outfile) } XData XmlToCsv { <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" /> <xsl:variable name="separator" select="','" /> <xsl:variable name="newline" select="' '" /> <xsl:template match="/"> <xsl:text>Col1,Col2,Col3</xsl:text> <xsl:value-of select="$newline" /> <xsl:for-each select="//Details"> <xsl:value-of select="Col1" /> <xsl:value-of select="$separator" /> <xsl:value-of select="Col2" /> <xsl:value-of select="$separator" /> <xsl:value-of select="Col3" /> <xsl:value-of select="$newline" /> </xsl:for-each> </xsl:template> </xsl:stylesheet> } } And then call it from terminal: set p=##class(CMT.XmlToCsv).transform("c:\temp\input.xml","c:\temp\output.txt") zw p I took XSLT from https://stackoverflow.com/a/46176699/82675
go to post Alexander Koblov · Sep 6, 2019 Return statement is do %sqlcontext.AddResultSet(rs) When you call this stored procedure it returns resultset For example: call CMT.ExternalUsersSearch('%in%',,,'Title') If you call this stored procedure via ODBC / JDBC you need to add ReturnResultsets to the method definition: https://cedocs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?K...