#InterSystems IRIS

4 Seguidores · 1.4K Publicaciones

InterSystems IRIS es una Plataforma completa de datos.
InterSystems IRIS le proporciona todo lo que necesita para capturar, compartir, comprender y actuar sobre el activo más valioso de su organización, sus datos.
Dado que es una plataforma completa, InterSystems IRIS elimina la necesidad de integrar varias tecnologías de desarrollo. Las aplicaciones necesitan una menor cantidad de código, menos recursos del sistema y poco mantenimiento.

Pregunta Laura Blázquez García · mar 1, 2024

Estoy utilizando RestForms2 para disponer de una API Rest sobre unas tablas de forma rápida.

El caso es que he añadido un trigger a las tablas para que, cada vez que se inserte/actualice/borre un registro, registre en una tabla de históricos los cambios, pudiendo ver el valor original y el nuevo de cada propiedad.

Pero el trigger solamente salta si la inserción se realiza mediante SQL. No salta creando un nuevo objeto.

Quería cambiar la definición del trigger, pero no se me ocurre cómo.

2
0 196
Artículo Alberto Fuentes · mar 1, 2024 4m read

Hay una nueva funcionalidad muy interesante en la recientemente anunciada versión de prueba 2024.1 de InterSystems IRIS - JSON_TABLE. JSON_TABLE forma parte de una familia de funciones introducidas en la versión 2016 del estándar SQL (ISO Standard, publicado a principios de 2017). Permite que valores JSON se mapeen a columnas y se consulten usando SQL. JSON_TABLE puede usarse en la cláusula FROM de algunas sentencias SQL.

La sintaxis de JSON_TABLE es bastante extensa, permitiendo condiciones excepcionales cuando los valores JSON proporcionados no cumplen las expectativas, estructuras anidadas, etc.

La sintaxis básica es bastante sencilla. El primer argumento pasado a JSON_TABLE es el valor JSON que se va a consultar. Puede ser un literal, una referencia a una columna o una llamada a una función. El segundo argumento es una expresión JPL (JSON Path Language), que permite filtrar el valor proporcionado. Después va la cláusula COLUMNS - justo en medio de la llamada a la función. La cláusula COLUMNS se parece mucho a las definiciones de columnas en una sentencia CREATE TABLE pero con un añadido muy necesario - el PATH. PATH es una expresión JPL que se aplica al valor JSON para producir el valor de la columna.

0
0 184
Artículo Luis Angel Pérez Ramos · feb 29, 2024 5m read

Como seguramente ya sabréis la mayoría de vosotros, desde aproximadamente finales de 2022 InterSystems IRIS incluyo la funcionalidad de almacenamiento columnar a su base de datos, pues bien, en el artículo de hoy vamos a ponerla a prueba en comparación con el almacenamiento en filas habitual.

Almacenamiento columnar

¿Cuál es la principal característica de este tipo de almacenamiento?

2
0 247
Artículo Luis Angel Pérez Ramos · feb 26, 2024 5m read

He estado desarrollando una aplicación web que utiliza IRIS como back-end. Trabajé en ella con acceso no autenticado. Estoy llegando al punto en el que me gustaría implementarla para los usuarios, pero primero necesito añadir la autenticación. En vez de utilizar la contraseña para la autenticación predeterminada de IRIS (con contraseña), me gustaría que los usuarios iniciaran sesión con el Inicio de Sesión Único (SSO) de mi organización, o con algún otro proveedor de identidad popular como Google o GitHub. He leído que OpenID Connect es un estándar de autenticación común, y que es admitido por IRIS. ¿Cuál es la forma más sencilla de ponerlo en marcha?

0
0 320
Pregunta Lluís Vilalta · feb 15, 2024

Buenos días estoy intentando modificar un método  Python que hace la impresión de un archivo PDF  (usa la libreria  Python.FPDF.Lib).

No encuentro mucha información al respecto y la que encuentro no me funciona como deseo, debo decir que es la primera vez que tengo que lidiar con Python y ando un poco perdido.

Alguien sabe como puedo hacer lo contrario de unbreakable() ?

with pLib.pdf.unbreakable() as doc

Esta instrucción hace que si un bloque no cabe en la parte disponible de la página actual, haga un salto de página y lo imprima en la página siguiente.

6
0 434
Anuncio Jose-Tomas Salvador · feb 15, 2024

La versión 2023.3 de InterSystems IRIS Adaptive Analytics ya está disponible en la página de Distribución de Software de InterSystems. Esta versión incluye AtScale 2023.3 con ajustes adicionales, mejoras en la API y estas nuevas funcionalidades:

  • Soporte a Qlik Sense como una herramienta de Business Intelligence cualificada, además del soporte existente a Tableau, Microsoft PowerBI, Microsoft Excel y Looker
    • Tened en cuenta que Qlik Sense está soportado en modo Import; consultad la documentación de AtScale para más información
  • Conectores de Collibra y Alation para soportar la integración entre los cubos de AtScale y los proveedores de catálogos de datos más populares
  • Elementos adicionales del lenguaje DAX del lado del cliente - funciones y operadores - para mejorar el soporta a Microsoft PowerBI
0
0 175
Artículo Kurro Lopez · feb 14, 2024 3m read
Escenario

IRIS tiene adaptadores de entrada SQL para usar con SQL gateways como EnsLib.SQL.InboundAdapter para consultar repetidamente las conexiones de SQL Gateway. Apareció un escenario en el que queríamos consultar una base de datos interna para obtener algunos datos, pero no vimos un "servicio listo para usar" para esto.

Requisito deseado

Tener un servicio genérico que pueda sondear SQL interno para trabajar con otros componentes.

El cómo

Lo que no estaba claro era "¿Cómo envío un conjunto de resultados en sentido descendente?".

0
0 192
Artículo Kurro Lopez · feb 13, 2024 2m read

Recientemente, necesitaba ejecutar WebGateway en un puerto adicional, pero con una novedad: este puerto debería publicar solo una aplicación web.
Al principio, pensé en configurar WebGateway para permitir solo aplicaciones web específicas (~urls), pero la configuración de WebGateway depende de la configuración de Apache:

LoadModule csp_module_sa "/opt/webgateway/bin/CSPa24.
0
0 202
Pregunta Kurro Lopez · feb 12, 2024

Hola a todos,

Como sabéis, es muy complicado depurar una API Rest de Business Service porque el objeto se crea cuando las aplicaciones reciben una solicitud, por lo que no podemos tener el JobId que podemos usar para depurar.

https://docs.intersystems.com/iris20211/csp/docbook/DocBook.UI.Page.cls…

Entonces, estoy tratando de obtener el JobId cuando se crea la clase, escribir una traza en el método OnInit() y escribir el JobId en es traza.

Method OnInit() As %Status
{
	$$$LOGINFO("JobId: "_$JOB)
	hang 20 break
	Quit 
2
0 267
Artículo Alberto Fuentes · feb 12, 2024 3m read

En recientes versiones de IRIS, se ha añadido en la parte de SQL una nueva y potente funcionalidad para la carga de datos: LOAD DATA. Esta funcionalidad ha sido optimizada para importar datos de forma extremadamente rápida en IRIS, permitiendo insertar cientos de gigabytes de datos en segundos en lugar de en horas o días. 

Esta es una mejora muy interesante. Sin embargo, todavía existe un gran problema en la experiencia de carga de datos. Concretamente, el tiempo y molestia que suponen:

  1. Definir el esquema para la tabla en la que se quieren cargar los datos
  2. Averiguar cómo funciona exactamente la sintaxis del comando LOAD DATA

He desarrollado una interfaz de usuario que gestiona de forma transparente el paso de crear la tabla (CREATE TABLE) y después genera la sintaxis para LOAD DATA, todo en un práctico asistente!

0
0 241
Artículo Ricardo Paiva · feb 9, 2024 5m read

Esta es la cuarta parte de una serie de artículos sobre migración desde las principales bases de datos del mercado a InterSystems IRIS. En esta parte, explicaré los pasos para migrar desde Microsoft SQL Server.

Como describí en los anteriores artículos, actualmente hay varias opciones para hacer la migración. Sin embargo, las dos opciones más populares incluyen el uso de DBeaver (https://openexchange.intersystems.com/package/DBeaver) o SQLGateway. Explicaremos la primera opción aquí. La segunda opción fue explicada por Robert Cemper en un excelente artículo: Migración de base de datos usando SQLgateway.

0
0 254
Artículo Kurro Lopez · feb 9, 2024 2m read

Interactuar con usuarios en la terminal: una guía para usar %Library.Prompt en IRIS

¿Alguna vez te has preguntado cómo comandos como ^DATABASE atraen a los usuarios en la terminal? O tal vez esté escribiendo una rutina de automatización y desee formas de especificar opciones directamente desde la terminal. Afortunadamente, la clase %Library.Prompt en IRIS ofrece una forma sencilla de hacerlo.

Entradas de texto

Para entradas básicas, como pedirle al usuario que proporcione una ruta de archivo o un espacio de nombres, utilice el siguiente código:

set status = ##class(%Library.Prompt).
0
0 191
Pregunta Kurro Lopez · feb 8, 2024

Hola a todos,

Tenemos una clase response heredada de %JSON.Adaptor con las siguientes propiedades, también sus clases dependientes:



Kurro.app.Msg.Search.Response



Kurro.app.
2
0 236
Pregunta Kurro Lopez · feb 7, 2024

Hola comunidad,

Si, ya sé que hay otra pregunta con el mismo problema "VS Code - debugging doesn't work", pero mi instancia de IRIS no está usando IIS.

Hace tiempo, podía depurar sin problemas, pero después de algunas actualizaciones de Visual Studio, tengo el siguiente error

Failed to start the debug session. Check that the Intersystems server's web server supports WebSockets

He activado el protocolo WebSocket en el servidor (Windows Server 2019) pero sigue sin funcionar.

La instancia de IRIS no está usando IIS, creo que está usando el Apache por defecto.

¿Necesito hacer algo en especial?

2
0 182
Artículo Elijah Tamarchenko · feb 6, 2024 2m read

¡Hola Comunidad!

Hace poco me impresionó el artículo de @Dan Pasco donde comparte cómo usa los alias de terminal.

Los alias de terminal son una herramienta muy poderosa para desarrolladores y administradores de sistemas, si con frecuencia necesitan llamar a algunas expresiones de terminal engorrosas y hacerlas más cortas y limpias. Aquí está la documentación.

Pero ¿qué pasa con los entornos Docker? ¿Qué sucede si sois fanáticos de los entornos de desarrollo de Docker, pero también queréis seguir usando vuestros alias favoritos con Docker?

Resulta que es muy posible.

0
0 197
Anuncio Esther Sanchez · feb 2, 2024

¡Hola Comunidad!

Hemos grabado el webinar que hicimos ayer y lo hemos subido al canal de YouTube de la Comunidad de Desarrolladores en español. Si os perdisteis el webinar o lo queréis volver a ver con más detalle, ya está disponible la grabación!

OAuth 2.0, OpenID Connect y LDAP: Cómo controlar el acceso a los recursos FHIR

4
0 229
Artículo Daniel Aguilar · feb 4, 2024 7m read

   

Hola, comunidad!

He estado trasteando últimamente con Flutter y he desarrollado algunas aplicaciones que usan Firebase como base de datos. Cuando descubría que existía una librería de Firebase para Python, tuve el impulso de que debía crear algo con InterSystems IRIS que pudiese hacer que se comunicase con Firebase Database RealTime y realizar operaciones CRUD. Justo entonces me encontré con esta idea de Evgeny en el portal de ideas:

https://ideas.intersystems.com/ideas/DP-I-146 

Y me puse manos a la obra!
 

¿Tienes curiosidad por ver que he creado?

0
0 281
Artículo Luis Angel Pérez Ramos · feb 1, 2024 1m read

Venga que tenemos ya encima la siguiente jornada de la Quiniela. Esta vez nos adelantamos un día para que luego no digáis que se os echa el tiempo encima.

Para esta jornada tenemos novedades y es que, como en todo proyecto que implica el uso de Machine Learning, la calidad de los datos es elemental y para nuestro caso esa calidad se refleja en el "frescor" de los mismos, no son igual de relevantes los resultados de hace 2 años que los obtenidos en esta temporada, para ello he hecho una pequeña modificación que descarta los partidos de la temporada 21/22 y se ha conseguido una mejora en el acierto del modelo de un 2% ascendiendo de un 56% a un 58%.

Aquí tenéis el análisis de nuestro modelo obtenido desde IRIS:

0
0 220
Artículo Luis Angel Pérez Ramos · feb 1, 2024 1m read

El pasado viernes 17 de noviembre me encontré de repente un error en el que ZPM mostraba un error diciendo:

¡ERROR! La apertura del objeto falló porque no se encontró el valor clave 'Nombre' de 'x' (ERROR! Object open failed because 'Name' key value of 'xx' was not found)

Busqué en Google pero no encontré nada que me ayudara. Paso a paso fui capaz de concluir que:

  1. Este es el mensaje de error para el error 5770, también conocido como $$$KeyValueNotFoundOpen.

0
0 157
Pregunta Kurro Lopez · ene 31, 2024

Hola comunidad.

Hemos desarrollado una nueva versión de una producción, todo el código es nuevo y ha cambiado BP. Esta aplicación carga información para algunas marcas y la almacena en la base de datos.

El cliente quiere implementar los cambios solo para algunas marcas porque quiere verificar las marcas pequeñas antes de implementarlos para todas las marcas.

Mi propuesta es crear un nuevo namespace, con el nuevo código, y deshabilitar todas las marcas excepto la marca que quiere probar.

Me pregunto cuál es la mejor manera de clonar el namespace.

6
0 234
Artículo Alberto Fuentes · ene 31, 2024 13m read

Tenemos un conjunto de datos bastante apetecible con recetas escritas por múltiples usuarios de Reddit, sin embargo, la mayor parte de la información está en texto libre en forma de título y descripción de un mensaje. Vamos a averiguar cómo podemos, de forma muy sencilla, cargar los datos, extraer algunas características y analizarlos empleando funcionalidades de LLM (Large Language Model) de OpenAI desde Python Embebido y el framework Langchain.

0
0 209
Artículo Ricardo Paiva · ene 29, 2024 2m read

Preguntas frecuentes de InterSystems

Para resolver el error <PROTECT>, hay que eliminar el atributo de solo lectura de la base de datos de la biblioteca de todo el sistema (IRISLIB para InterSystems IRIS, CACHELIB para Caché/Ensemble/HealthShare (basado en Caché))

Una vez se haya terminado de importar la rutina, hay que acordarse de volver a cambiarla a solo lectura.
 

[Versión 2013.1 y superior]
[Portal de Gestión] > [Administración] > [Configuración] > [Configuración de Sistema] > [Bases de Datos Local] Desmarcad "Mount Read-Only" (Montar solo lectura) en el enlace del nombre de la base de datos.

0
0 125
Artículo Luis Angel Pérez Ramos · ene 29, 2024 4m read

Preguntas frecuentes de InterSystems

Si el sistema no se para durante 24 horas, los archivos journal serán eliminados a las 0:30 según la "Configuración de la eliminación de archivos journal".

Una posible causa de que los archivos journal permanezcan más tiempo del establecido en la "Configuración de la eliminación de archivos journal" es que hay transacciones que permanecen abiertas.

En ese caso, se podrá eliminar el archivo journal buscando procesos que estén ejecutando transacciones y finalizando las transacciones.

1
0 160
Artículo Alberto Fuentes · ene 24, 2024 2m read

¿Sabíais que se pueden obtener datos JSON directamente de las tablas SQL?

Dejadme que os presente dos útiles funciones de SQL, que se utilizan para recuperar datos JSON de consultas SQL - JSON_ARRAY y JSON_OBJECT

Podéis usar esas funciones en la sentencia SELECT con otros tipos de elementos de selección, y se pueden especificar en otras ubicaciones en las que se puede utilizar una función SQL, como en una condición WHERE.

La función JSON_ARRAY toma una lista de expresiones separadas por comas y devuelve una matriz JSON conteniendo esos valores.

1
1 827