Artículo
· 29 feb, 2024 Lectura de 5 min
Poniendo a prueba el Columnar Storage

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.

1 2
0 48

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
0 61

La invención y popularización de LLMs (Large Language Models) como GPT-4 de OpenAI ha desencadenado una ola de soluciones innovadoras que permiten aprovechar grandes volúmenes de datos no estructurados, que eran prácticamente imposibles de procesar manualmente hasta hace poco. Estas aplicaciones pueden incluir la recuperación de datos (echad un vistazo al curso sobre ML301 de Don Woodlock, con una excelente introducción a la Generación Aumentada de Recuperación), el análisis de sentimientos, e incluso agentes de IA totalmente autónomos, por nombrar sólo algunos ejemplos!

En este artículo, quiero demostrar cómo la funcionalidad de Python Embebido de IRIS puede ser utilizada para interactuar directamente con la librería Python de OpenAI, a través de la creación de una sencilla aplicación de etiquetado de datos que asignará automáticamente palabras clave a los registros que metamos en una tabla de IRIS. Estas palabras clave pueden después ser usadas para buscar y categorizar los datos, así como para analítica de datos. Utilizaré reseñas de productos realizadas por clientes como ejemplo de caso de uso.

1 0
0 60

Al empezar el desarrollo con IRIS tenemos un kit de distribución o, en el caso de Docker, obtenemos la imagen Docker y después a menudo tenemos que iniciarla y configurar el entorno de desarrollo. Puede que necesitemos crear bases de datos, namespaces, activar/desactivar algunos servicios, crear recursos. Muchas veces necesitamos importar el código y los datos a la instancia de IRIS y ejecutar algún código personalizado para iniciar la solución.

Lajos Simicska declares war on Viktor Orban: "It's either him or me!" - The  Budapest Beacon

0 0
0 29

Parece que fue ayer cuando hicimos un pequeño proyecto en Java para probar el rendimiento de IRIS, PostgreSQL y MySQL (podéis revisar el artículo que escribimos allá por Junio al final de este artículo). Si recordáis IRIS se mostró superior a PostgreSQL y claramente superior a MySQL en las inserciones, no habiendo gran diferencia en las consultas.

Poco después @Dmitry Maslennikov me dijo "¿Por qué no pruebas desde un proyecto en Python?" pues bien, aquí está la versión en Python de las pruebas que realizamos mediante las conexiones JDBC previamente.

1 2
0 59
Artículo
· 23 sep, 2022 Lectura de 4 min
IRIS y Python en la práctica - ¡con ejemplos!

En este artículo vas a encontrar un sencillo programa con Python en un entorno IRIS y otro sencillo programa con ObjectScript en un entorno Python. Además, me gustaría compartir algunos de los errores que tuve cuando empecé la implementación de estos códigos.

Python en entorno IRIS

Supongamos, por ejemplo, que estás en un entorno IRIS y quieres resolver un problema que crees más fácil o más eficiente de resolver en Python.

Puedes simplemente cambiar el entorno: crea tu método como cualquier otro, y al final del nombre y sus especificaciones, añade [ Language = python ]:

0 1
0 436

Ejemplo de demostración para el Gran Premio de Programación de InterSystems, sobre el uso de plantillas más complejas para probar funcionalidades de IA.

Preguntas para la entrevista

Hay documentación. Para un puesto de trabajo, una persona de recursos humanos quiere evaluar rápidamente a los candidatos con varias preguntas técnicas relevantes para el puesto.

¿Puede automatizar el trabajo haciendo una lista de preguntas y respuestas a partir de la documentación disponible?

0 0
0 56
Artículo
· 14 nov, 2023 Lectura de 6 min
Introducción a Django - 3ª Parte

Continuamos analizando las posibilidades de Django, y su uso con IRIS. En la primera parte de esta serie, mostramos cómo definir modelos y conectarlos con tablas ya existentes en IRIS; en la segunda parte, mostramos un Portal de Administración, con la capacidad de ver qué datos tenemos en esos modelos, con filtros, edición e incluso paginación.

Ahora es el momento de pasar a la acción real - vamos a crear algunas API Rest, en Django, basadas en los mismos datos que usamos antes, del paquete posts-and-tags.

Para hacerlo, usaremos el framework Django REST

Django REST Framework

El framework Django REST es un potente y flexible kit de herramientas para generar APIs Web.

Algunas razones por las que querrías usar el framework REST:

0 0
0 63
Artículo
· 19 jul, 2023 Lectura de 3 min
LangChain puede escribir SQL por ti

Este artículo es un sencillo ejemplo para probar SqlDatabaseChain pidiéndole a OpenAI cierta información y que escriba consultas SQL sobre una base de datos IRIS.

Quizá despierte el interés de alguno de vosotros.

Muchas gracias a sqlalchemy-iris (autor @Dmitry Maslennikov). Ese proyecto ha sido indispensable para esta prueba.

El script de este artículo usa la API de OpenAI así que tenedlo en cuenta para no compartir la información de vuestras tablas externamente en el caso de que no queráis hacerlo. Podría llegar a implementarse un modelo local en caso que lo necesitaseis.

0 1
0 208

FHIR ha revolucionado la industria de la atención médica al proporcionar un modelo de datos estandarizado para crear aplicaciones y promocionar el intercambio de datos entre diferentes sistemas. El estándar FHIR se basa en enfoques modernos impulsados por APIs, lo que lo hace más accesible para los desarrolladores web y móviles. Sin embargo, interactuar con las API de FHIR aún puede ser un desafío, especialmente cuando se trata de consultar datos usando lenguaje natural.

2 0
0 98

InterSystems IRIS actualmente limita sus clases a 999 propiedades.

Pero, ¿qué hacer si necesita almacenar más datos por objeto?

Este artículo respondería a esta pregunta (con el apunte adicional de Community Python Gateway y cómo transferir conjuntos de datos amplios a Python).

En realidad, la respuesta es muy simple: InterSystems IRIS actualmente limita las clases a 999 propiedades, pero no a 999 primitivas. La propiedad en InterSystems IRIS puede ser un objeto con 999 propiedades y así sucesivamente; el límite se puede ignorar fácilmente.

1 0
0 50

¡Hola Comunidad!

Me alegra anunciar la nueva versión de iris-pex-embedded-python (v2.3.1) con una nueva interfaz de línea de comandos.

Esta línea de comandos se llama iop por Interoperability On Python.

Primero me gustaría presentar los principales cambios del proyecto desde la versión 1.

Breve historia del proyecto

La versión 1.0 fue una prueba de concepto para mostrar cómo el framework de interoperabilidad de IRIS se puede utilizar con un enfoque python first mientras sigue siendo compatible con cualquier código existente de ObjectScript.

¿Qué significa eso? Significa que cualquier desarrollador Python puede usar el framework de interoperabilidad de IRIS sin ningún conocimiento de ObjectScript.

Ejemplo:

from grongier.pex import BusinessOperation

class MyBusinessOperation(BusinessOperation):

    def on_message(self, request):
        self.log.info("Received request")

Genial, ¿cierto?

0 0
0 33
   _________ ___ ____  
  |__  /  _ \_ _|  _ \ 
    / /| |_) | || |_) |
   / /_|  __/| ||  __/ 
  /____|_|  |___|_|    

Desde la versión 2021.1, InterSystems IRIS empezó a distribuirse con un runtime de Python en el motor del kernel. Sin embargo, no había forma de instalar paquetes desde dentro de la instancia. La principal ventaja de Python es su enorme ecosistema de paquetes. Con ello en mente, os presento mi proyecto zpip, un empaquetador pip que se puede invocar desde el terminal de iris.

0 1
0 90

Os presento mi nuevo proyecto: irissqlcli, REPL (Read-Eval-Print Loop) para InterSystems IRIS SQL.

  • Resaltado de sintaxis
  • Sugerencias (tablas, funciones)
  • +20 formatos de salida
  • Soporte a stdin
  • Salida a ficheros

Instalación con pip

pip install irissqlcli

O se puede ejecutar con docker

docker run -it caretdev/irissqlcli irissqlcli iris://_SYSTEM:SYS@host.docker.internal:1972/USER

1 1
0 76

¡Hola Comunidad!

Me gustaría presentaros una nueva utilidad para importar CSV a IRIS - ¡csvgenpy!

Instalación

USER>zpm "install csvgenpy"

Uso:

do ##class(shvarov.csvgenpy.csv).Generate("file or url","table","schema")

Ejemplo:

USER>do ##class(shvarov.csvgenpy.csv).Generate("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv","titanic","data")

Esto creará la tabla y la clase data.titanic en IRIS y a continuación cargará los datos. Podéis probarlo con:

2 0
0 35
Artículo
· 20 abr, 2023 Lectura de 2 min
Apache Superset con InterSystems IRIS

Apache Superset es una moderna plataforma para la visualización y exploración de datos. Superset puede reemplazar o aumentar las herramientas patentadas de business intelligence para muchos equipos. Y se puede integrar con una gran variedad de fuentes de datos.

¡Y ahora es posible utilizarla con InterSystems IRIS!

Hay disponible una demo online que usa IRIS Cloud SQL como fuente de datos.

0 0
0 216

Introducción

En algunos de mis artículos he hablado de tipos entre IRIS y Python, y está claro que no es tan fácil acceder a objetos de un lado a otro.

Afortunadamente, el trabajo ya se ha hecho, con la creación de SQLAlchemy-iris, que hace mucho más fácil para Python acceder a los objetos de IRIS, y voy a mostraros cómo funciona.

0 0
0 410
Artículo
· 30 mar, 2023 Lectura de 1 min
Parámetro nombrado en SQL con Python

Quick Tips: Total Productive Maintenance

Los parámetros nombrados se pueden conseguir con SQLAlchemy :

from sqlalchemy import create_engine, text,types,engine

_engine = create_engine('iris+emb:///')

with _engine.connect() as conn:
    rs = conn.execute(text("select :some_private_name"), {"some_private_name": 1})
    print(rs.all())

o con api nativa

from sqlalchemy import create_engine, text,types,engine

# set URL for SQLAlchemy
url = engine.url.URL.create('iris', username='SuperUser', password='SYS', host='localhost', port=33782, database='FHIRSERVER')

_engine = create_engine(url)

with _engine.connect() as conn:
    rs = conn.execute(text("select :some_private_name"), {"some_private_name": 1})
    print(rs.all())

0 0
0 68

Python se ha convertido en el lenguaje de programación más utilizado del mundo (fuente: https://www.tiobe.com/tiobe-index/) y SQL sigue siendo el líder como lenguaje para las bases de datos. ¿No sería genial que Python y SQL trabajaran juntos para ofrecer nuevas funcionalidades que SQL por sí mismo no puede? Después de todo, Python tiene más de 380.000 librerías publicadas (fuente: https://pypi.org/) con funciones muy interesantes para ampliar las consultas SQL dentro de Python.

En este artículo detallo cómo crear nuevos Procedimientos Almacenados de SQL en la base de datos de InterSystems IRIS usando Embedded Python.

2 1
1 455

El SDK nativo para Python de InterSystems es una interfaz ligera para las APIs de InterSystems IRIS, que anteriormente solo estaba disponible mediante ObjectScript.

Estoy especialmente interesado en la capacidad de llamar a los métodos de ObjectScript, a los métodos de clase, para ser más preciso. Esto funciona, y funciona muy bien, pero de manera predeterminada, las llamadas únicamente admiten argumentos escalares: strings, booleanos, enteros y flotantes.

Pero si lo que quieres es:
- Pasar o devolver estructuras, como diccionarios (dicts) o listas
- Pasar o devolver streams

Necesitarás escribir algún código adhesivo (glue code) o aprovechar este proyecto (se instala mediante pip install edpy). El paquete edpy te da una estructura sencilla:

call(iris, class_name, method_name, args)

que te permite llamar a cualquier método de ObjectScript y obtener los resultados.

0 0
0 76