go to post Sylvain Guilbaud · Sep 6, 2023 Very good introduction to Docker ; thanks again @Muhammad Waseem 😀And again, now available in French.
go to post Sylvain Guilbaud · Sep 6, 2023 Great article ; thanks @Muhammad Waseem (I've translated it in French 😀)
go to post Sylvain Guilbaud · Sep 6, 2023 Furthermore, the Management Portal will tell you the current mode of your IRIS instance, which sometimes allows you to avoid handling errors by confusing your different instances. Below you see immediately that this instance is a LIVE one :
go to post Sylvain Guilbaud · Sep 6, 2023 NB : $SYSTEM.Version.SystemMode() will return a null string if it has never been assigned any mode. It is a very good practice to initialize a new IRIS instance immediately after its creation.
go to post Sylvain Guilbaud · Sep 4, 2023 Hi @Yuri Marx, and today, you can add to this list : Embedded Python Adaptive Analytics (AtScale) System Alerting and Monitoring (SAM) InterSystems Kubernetes Operator (IKO) SQL improvements on performances and capabilities (Global Iterator, Columnar Storage, Adaptive Parallel Execution, LOAD DATA, etc.) Kernel enhancements (Mirroring, etc.) Security enhancements etc. (see release notes)
go to post Sylvain Guilbaud · Sep 4, 2023 Hi @Yuri Marx, at the very first topic, I will put at the top of your list : 0. better performances It can be seen as obvious, but IRIS is **really** faster than Caché.
go to post Sylvain Guilbaud · Aug 31, 2023 Hi @Anup Thakkar, the simplest way to always stay in the current century is : $ZDATEH("05/26/23",,,6) You just need to use year-opt = 6 to get all dates with two-digit years in the current century . w $zdt($ZDATEH("05/26/23",,,6),3) 2023-05-26 w $zdt($ZDATEH("05/26/1923",,,6),3) 1923-05-26
go to post Sylvain Guilbaud · Aug 31, 2023 SQL Alchemy with IRIS is a great way to simplify the bridge between IRIS and Python objects.Thanks @Heloisa Paiva for this article and @Dmitry Maslennikov for your IRIS dialect for SQLAlchemy.
go to post Sylvain Guilbaud · Aug 30, 2023 To activate all system AUDIT events, simply execute the following SQL query from the namespace %SYS : update security.events set enabled=1 where flags = 1 example : set tRes = ##class(%SQL.Statement).%ExecDirect(,"update security.events set enabled=1 where flags = 1") if tRes.%SQLCODE=0 { set ^["USER"]TRACE("%SYS Security.Events")=tRes.%ROWCOUNT_" successfully enabled" } else { set ^["USER"]TRACE("%SYS Security.Events")=tRes.%Message_" SQLCODE:"_tRes.%SQLCODE }
go to post Sylvain Guilbaud · Aug 30, 2023 This was typically my first thinking when I said "by creating a user in IRIS with restricted rights, this list can be reduced, but the interest of the %All role is lost."
go to post Sylvain Guilbaud · Aug 29, 2023 Good to know.I had no idea of this quite combersome workflow with the information in this thread of discussion.Maybe some other Python libraries could be of help here.
go to post Sylvain Guilbaud · Aug 29, 2023 NB : for column-oriented storage specified at the table level via the statement WITH STORAGETYPE = COLUMNAR , it should be noted that IRIS leaves itself free to choose for you the most commonly optimal storage (in row or in column), according to the types of data. Example : the following statement : CREATE TABLE a.addressV1 ( city varchar(50), zip varchar(15), country varchar(15) ) WITH STORAGETYPE = COLUMNAR Will not create any column-oriented storage, due to the risk of too disparate data, due to the number of characters allowed in each column (15 or 50) : Class a.addressV1 Extends %Persistent [ ClassType = persistent, DdlAllowed, Final, Owner = {_SYSTEM}, ProcedureBlock, SqlRowIdPrivate, SqlTableName = addressV1 ] { Property city As %Library.String(COLLATION = "EXACT", MAXLEN = 50, STORAGEDEFAULT = "ROW") [ SqlColumnNumber = 2 ]; Property zip As %Library.String(COLLATION = "EXACT", MAXLEN = 15, STORAGEDEFAULT = "ROW") [ SqlColumnNumber = 3 ]; Property country As %Library.String(COLLATION = "EXACT", MAXLEN = 15, STORAGEDEFAULT = "ROW") [ SqlColumnNumber = 4 ]; Parameter STORAGEDEFAULT = "columnar"; Parameter USEEXTENTSET = 1; while the example given in the article, retains a column (and only one) in column-oriented storage, since having only 5 characters allowed for the zip column. CREATE TABLE a.addressV2 ( city varchar(50), zip varchar(5), country varchar(15) ) WITH STORAGETYPE = COLUMNAR Class a.addressV2 Extends %Persistent [ ClassType = persistent, DdlAllowed, Final, Owner = {_SYSTEM}, ProcedureBlock, SqlRowIdPrivate, SqlTableName = addressV2 ] { Property city As %Library.String(COLLATION = "EXACT", MAXLEN = 50, STORAGEDEFAULT = "ROW") [ SqlColumnNumber = 2 ]; Property zip As %Library.String(COLLATION = "EXACT", MAXLEN = 5) [ SqlColumnNumber = 3 ]; Property country As %Library.String(COLLATION = "EXACT", MAXLEN = 15, STORAGEDEFAULT = "ROW") [ SqlColumnNumber = 4 ]; Parameter STORAGEDEFAULT = "columnar"; Parameter USEEXTENTSET = 1;
go to post Sylvain Guilbaud · Aug 29, 2023 Thanks @Iryna Mykhailova for this brilliant article ! Very clear and cleverly presented.
go to post Sylvain Guilbaud · Aug 29, 2023 Now with embedded Python, you can have a quite simple code using pandas : /// Convert an Excel file to a CSV file ClassMethod XLStoCSV(source As %String = "/data/sample.xlsx") As %Status [ Language = python ] { import pandas as pd read_file = pd.read_excel(source) read_file.to_csv(source+'.csv', index = None, header=True) }
go to post Sylvain Guilbaud · Aug 28, 2023 Hi @Muhammad Waseem Streamlit now runs better. But when I give a key, it raises the following error : RuntimeError: [91mYour system has an unsupported version of sqlite3. Chroma requires sqlite3 >= 3.35.0.[0m [94mPlease visit https://docs.trychroma.com/troubleshooting#sqlite to learn how to upgrade.[0m Traceback: File "/usr/local/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 552, in _run_script exec(code, module.__dict__) File "/opt/irisappS/streamlit/app/streamlitAPP.py", line 208, in <module> main() File "/opt/irisappS/streamlit/app/streamlitAPP.py", line 153, in main init_doc() File "/opt/irisappS/streamlit/app/streamlitAPP.py", line 117, in init_doc vectorstore = irisChatGPT.docLoader(st.session_state["OPENAI_API_KEY"]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/irisappS/streamlit/app/irisChatGPT.py", line 94, in docLoader vectordb = Chroma(persist_directory='/opt/irisappS/streamlit/app/vectors', embedding_function=embedding) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/langchain/vectorstores/chroma.py", line 80, in __init__ import chromadb File "/usr/local/lib/python3.11/site-packages/chromadb/__init__.py", line 69, in <module> raise RuntimeError(
go to post Sylvain Guilbaud · Aug 28, 2023 Actually excluding all the "%" schemas in the connection setting is not working properly as it masks all the schemas' names. You have directly the names of all the tables and when you try to open it, you get an error as the query use SQLUser as the default schema.