go to post Eduard Lebedyuk · Aug 12, 2020 It is also possible to compress Blob/Clob data. Compressed streams %SYSTEM.Encryption:Compress
go to post Eduard Lebedyuk · Aug 12, 2020 Depending on your use case (how data is split) either row-based security or a rbac will work.
go to post Eduard Lebedyuk · Aug 12, 2020 InterSystems IRIS 2020.2 added experimental support for Database compression. Documentation.
go to post Eduard Lebedyuk · Aug 11, 2020 By default IRIS listens on all interfaces. Are you able to access SMP from a remote machine?
go to post Eduard Lebedyuk · Aug 9, 2020 FYI InterSystems IRIS can generate QRCodes natively with %SYS.QRCode class.
go to post Eduard Lebedyuk · Aug 9, 2020 Here's an example unarchiver. $zf(-100) can be used to call arbitrary executables, such as 7zip.
go to post Eduard Lebedyuk · Aug 5, 2020 That's good and well for sparse datasets (where say you have a record with 10 000 possible attributes but on average only 50 are filled). EAV does not help in dense cases where every record actually has 10 000 attributes.
go to post Eduard Lebedyuk · Aug 5, 2020 Wide datasets are fairly typical for: Industrial data IoT Sensors data Mining and processing data Spectrometry data Analytical data Most datasets after one-hot-encoding applied NLP datasets Any dataset where we need to raise dimensionality Media featuresets Social Network/modelling schemas I'm fairly sure there's more areas but I have not encountered them myself. Recently I have delivered a PoC with classes more than 6400 columns wide and that's where I got my inspiration for this article (I chose approach 4). @Renato Banzai also wrote an excellent article on his project with more than 999 properties. Overall I'd like to say that a class with more than 999 properties is a correct design in many cases.
go to post Eduard Lebedyuk · Aug 4, 2020 I have no concrete ideas on how to automate this. This is a more case-by-case basis.
go to post Eduard Lebedyuk · Aug 4, 2020 While I always advertise CSV2CLASS methods for generic solutions, wide datasets often possess an (un)fortunate characteristic of also being long. In that case custom object-less parser works better. Here's how it can be implemented. 1. Align storage schema with CSV structure 2. Modify this snippet for your class/CSV file: Parameter GLVN = {..GLVN("Test.Record")}; Parameter SEPARATOR = ";"; ClassMethod Import(file = "source.csv", killExtent As %Boolean = {$$$YES}) { set stream = ##class(%Stream.FileCharacter).%New() do stream.LinkToFile(file) kill:killExtent @..#GLVN set i=0 set start = $zh while 'stream.AtEnd { set i = i + 1 set line = stream.ReadLine($$$MaxStringLength) set @..#GLVN($i(@..#GLVN)) = ..ProcessLine(line) write:'(i#100000) "Processed:", i, ! } set end = $zh write "Done",! write "Time: ", end - start, ! } ClassMethod ProcessLine(line As %String) As %List { set list = $lfs(line, ..#SEPARATOR) set list2 = "" set ptr=0 // NULLs and numbers handling. // Add generic handlers here. // For example translate "N/A" value into $lb() if that's how source data rolls while $listnext(list, ptr, value) { set list2 = list2 _ $select($g(value)="":$lb(), $ISVALIDNUM(value):$lb(+value), 1:$lb(value)) } // Add specific handlers here // For example convert date into horolog in column4 // Add %%CLASSNAME set list2 = $lb() _ list2 quit list2 }
go to post Eduard Lebedyuk · Aug 4, 2020 The line of code which generated the error. You can also translate the line of int code back into cls using this snippet.
go to post Eduard Lebedyuk · Aug 3, 2020 @Renato Banzai, @Henrique Dias I just published an article about creating classes with more than 999 properties in InterSystems IRIS. Check it out!
go to post Eduard Lebedyuk · Aug 3, 2020 Restarting is the easiest way. If you can't just overwrite global buffer with another global (but check that your target global is really flushed out of global buffer).
go to post Eduard Lebedyuk · Aug 3, 2020 You can Try to run the sample implementation and transfer it component by component Contact the WRC