Encontrar

Announcement
· Aug 29, 2024

[Video] Setting Up Your Generative AI Development Environment

Hi, Community!

Ready to create a retrieval-augmented generation (RAG) architecture for your next GenAI application? See how to get started:

Setting Up Your Generative AI Development Environment

In this interview, InterSystems Sales Engineer @Elijah Cotterrell offers insights about:

  • Considerations for choosing an IDE
  • Which Python libraries are useful in development
  • How to instantiate a basic interaction with a large language model
1 Comment
Discussion (1)1
Log in or sign up to continue
Article
· Aug 29, 2024 1m read

How to programmatically read a CSV file line by line

InterSystems FAQ rubric

This can be achieved by using the CSV() procedure of the %SQL.Util.Procedures class.
Below is an example of usage code. (Assuming that the file test.csv is in c:\temp.)

 Set rowtype="Name VARCHAR(50),UID VARCHAR(50), PHONE VARCHAR(50)"
 Set filename="c:\temp\test.csv"
 Set result=##class(%SQL.Statement).%ExecDirect(,"call %SQL_Util.CSV(,?,?)",.rowtype,.filename)
 Set rset =result.%NextResult()
 
 // To display all results, use do rset.%Display()
 While rset.%Next() {
     Write "Name:",rset.%GetData(1)," UID:",rset.%GetData(2)," PHONE:",rset.%GetData(3),!
     }

 Set rset="",result=""
 Quit

By executing the above, you can access each row and field as a result set. Example execution:

USER>do ^CSV
Name    UID     PHONE
aaa     0001    080-1111-1111
bbb     0003    090-2222-2222
ccc     0009    050-3333-3333
ddd     0010    0120-17-1972
4 Rows(s) Affected

Please also see the class reference for the %SQL.Util.Procedures class.
Class reference:%SQL.Util.Procedures.CSV()

8 Comments
Discussion (8)4
Log in or sign up to continue
Article
· Aug 29, 2024 1m read

Snapshot com máximo de 250 linhas

Se você encontrou o problema de que nem todas as linhas do seu resultado estão retornando no seu snapshot, você está no lugar certo.

Ao usar snapshots, existe uma informação não trivial de que eles têm um máximo de linhas que vem por padrão como 250.

Para mudar isso é muito simples. Ao invés de enviar o snapshot como referência direto no seu método de execução de query ou procedure, vamos inicializá-lo antes e definir um valor na propriedade MaxRowsToGet.

Set resultSet = ##class(%ListOfObjects).%New()
Set snapshot = ##class(EnsLib.SQL.Snapshot).%New()
Set snapshot.MaxRowsToGet = 10000
Do resultSet.Insert(snapshot)

Set status = ..Adapter.ExecuteParmArray(.rs, .out, query, "o", .parameters)


Pronto! Agora é só pegar o primeiro resultado do seu resultSet com GetAt(1) e percorrer o snapshot.

 

Gostou da dica? Qual dica mais você conhece? Deixe nos comentários!

Discussion (0)1
Log in or sign up to continue
Article
· Aug 29, 2024 2m read

WebTerminal no funciona en IRIS 2024.2

Incluyo este post para ayudar a los usuarios de WebTerminal que han actualizado a la versión IRIS 2024.2 -- (Build 247U) Tue Jul 16 2024 09:52:30 EDT -- liberada recientemente o están considerando hacerlo.

Esa versión 2024.2 contiene un cambio (DP-432503) que precisa que el usuario a través del cual se conecta inicialmente el Web Gateway (normalmente CSPSystem) deba tener permisos de lectura (READ) sobre la base de datos en la que se encuentra la clase de dispatching de la aplicación web de tipo REST.

Para los casos en que eso no es así, se genera un error, pero retorna un estado HTTP 404 a quien hace la petición en lugar del esperado HTTP 401.

En principio el problema se solucionará en la 2024.3, referencia DP-432898 / ALI048 : REST Login endpoints to return 401 HTTP error instead of 404, pero, al ser la 2024.2 una versión de tipo Continuous Delivery (CD), no se incluirá esta corrección.

Un workaround posible es adaptar CSPSystem para que tenga permiso de lectura (READ) sobre la base de datos del namespace en el que instalaste el WebTerminal (ej. WEBTERMINAL).

Así es como yo lo he hecho:

  1. Crea un nuevo recurso de seguridad %DB_WEBTERMINAL y asignáselo a la base de datos WEBTERMINAL en lugar el %DB_%DEFAULT.
  2. Crea un role %DB_WEBTERMINAL que otorgue al poseedor del role de acceso RW al recurso %DB_WEBTERMINAL.
  3. Crea otro role (yo le he llamado DBread_WEBTERMINAL) que da al poseedor del role acceso de solo lectura (R) a ese recurso.
  4. Da al usuario CSPSystem el role DBread_WEBTERMINAL. Esto permite sortear el bug de la 2024.2.
  5. Edita la aplicación web /terminalsocket y añádele el role %DB_WEBTERMINAL en la ficha de Roles de Aplicación. Este paso es necesario porque WebTerminal inicialmente ejecuta su proceso de websocket como UnknownUser y necesita modificar la información de estado en su base de datos incluso antes de que cambia a ejecutarse como un usuario autenticado.

Una técnica más sencilla pero menos segura sería:

  1. Crea un nuevo recurso %DB_WEBTERMINAL con privilegios RW, y asígnalo a la base de datos WEBTERMINAL para que lo use en lugar de %DB_%DEFAULT.

Más detalles en https://github.com/intersystems-community/webterminal/issues/155

Discussion (0)1
Log in or sign up to continue
Article
· Aug 29, 2024 4m read

Comment séparer le code source et les données dans des bases de données différentes ?

📜 Sainte Thècle, verset 8: "Étendez votre souris sur l'écran, et l'océan de données ouvrira un chemin devant vous!!"

Bonjour la communauté, tout d'abord, toutes mes excuses si quelqu'un a été offensé par le blasphème 😔

Discussion (0)0
Log in or sign up to continue