1. Interoperability-embedded-python
Esta prueba de concepto pretende mostrar cómo el framework de interoperabilidad de IRIS puede utilizarse con Python Embebido.
Python es un lenguaje de programación interpretado de alto nivel para propósitos generales de programación. Creado por Guido van Rossum y publicado por primera vez en 1991, Python tiene una filosofía de diseño que hace hincapié en la legibilidad del código, en particular mediante el uso significativo de espacios en blanco.
InterSystems Python Binding Documentatión.
Esta prueba de concepto pretende mostrar cómo el framework de interoperabilidad de IRIS puede utilizarse con Python Embebido.
Hemos tratado de llamar desde AWS Sage Maker datos directo desde IRIS usando pyodbc pero AWS no podemos instalar el driver de IRIS en Sage Maker alguien sabe como instalarlo? o tiene el drive/libraría?
¡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.
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?
_________ ___ ____
|__ / _ \_ _| _ \
/ /| |_) | || |_) |
/ /_| __/| || __/
/____|_| |___|_|
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.
zpip es un empaquetador para python pip que permite a los desarrolladores añadir de
Os presento mi nuevo proyecto: irissqlcli, REPL (Read-Eval-Print Loop) para InterSystems IRIS SQL.
Instalación con pip
pipinstallirissqlcliO se puede ejecutar con docker
dockerrun-itcaretdev/irissqlcliirissqlcliiris://_SYSTEM:SYS@host.docker.internal:1972/USER¡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:
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.
.png)
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.
¡Gracias, @Dmitry Maslennikov!
Para instalarlo, simplemente abre tu terminal con acceso de administrador y escribe
pip install sqlalchemy-irisy eso también instalará los pre-requisitos para ti, si fuera necesario.
Ahora, en un fichero Python, puedes
![]()
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())
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.
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:
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.
InterSystems IRIS 2022.2 tiene un SDK nativo para Python (https://docs.intersystems.com/iris20222/csp/docbook/Doc.View.cls?KEY=PA…).
Sabemos cómo recorrer la estructura de datos de un global usando la función $Order de ObjectScript.
SET key=""FOR {
SET key=$ORDER(^myglobal(key))
QUIT:key=""WRITE !,^myglobal(key)
}¿Cómo hacer lo mismo desde Python usando el SDK nativo de IRIS para Python?
Aquí va un ejemplo directamente en Python:
import iris
args = {'hostname':'127.0.0.1', 'port':51772,
'namespace':'USER', 'username':'_SYSTEM', 'password':'SYS'En mi ultimo artículo he hablado de la devolución de valores con Python. Pero la devolución es muy simple, lo que la puede hacer difícil es de lo que voy a hablar hoy: dónde es tratado el valor.
Siguiendo el ejemplo del último artículo, tenemos el método:
Class python.returnTest [ Abstract ]
{
ClassMethod returnSomething(pValue... As%String) As%Integer [ Language = python ]
{
return pValue
}
}Así, tenemos devuelto un objeto de Python, que para IRIS es la clase %SYS.Python.
En 2022, publiqué un artículo sobre Python Embebido para principiantes. En ese artículo me preguntaron cómo devolver valores con Python. Respondí a la pregunta y, además, me ha parecido interesante escribir un pequeño artículo sobre el tema. Así también espero llegar a más gente con esta publicación.
Hay dos cosas de las que ocuparse cuándo se devuelve un valor con Python. La primera es el tipo que intentas devolver y la segunda es dónde lo devuelves.
Recordemos nuestras primeras lecciones cuando empezamos a desarrollar: en Python, cuando se
Python Embedded es una gran herramienta considerando la simpleza y gran cantidad de librerías disponibles, así como una gran comunidad de desarrolladores con toneladas de ejemplos y documentación.
En el siguiente ejemplo les presento una solución para un problema común utilizando Python y ObjectScript.
Un caso de uso muy común es recuperar data desde planillas excel y poblar un objeto persistente en nuestro modelo en IRIS.
para esto utilizaremos pandas, una popular librería Python que nos permite trabajar con DataFrames
En primer lugar instalaremos dicha librería y sus dependencias utilizando
Esta es una demo de la funcionalidad OCR utilizando la librería pero-ocr de Python.
Utilizaremos la librería en una instancia InterSystems IRIS.
Este es un ejemplo de los datos de entrada:

Y este es el resultado del OCR, donde tenemos la siguiente información:
TextEquivconf de la etiqueta TextEquivCoords<PcGts xmlns="http://schema.primaresearch.org/PAGE/gts/pagecontent/2019-07-15" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"Continúo la descripción del trabajo usando el módulo openhl de Python en producción.
Como la versión de IRIS con Python Embebido, aún no ha sido liberada, ya es necesario usarlo en producción ahora. Decidimos hacer una copia de seguridad del servicio para exportar consultas a un archivo xlsx en un servidor aparte, y guardar el resultado de la consulta en un global en una base de datos separada.
Esta base de datos se puso en red, local para el servidor del servicio y remota para el servidor del producto. La comunicación entre el servidor de producto y el servicio fue implementada usando un servic
En la Comunidad de Desarrolladores hay muchos artículos interesantes que muestran cómo utilizar Jupyter e InterSystems IRIS juntos, y os animo a echarles un vistazo - al final de esta publicación tenéis un enlace a los artículos.
Este es otro de esos artículos. La diferencia con los otros está en la sencillez. ¿Solo quieres iniciar un contenedor en el que Jupyter ya está conectado a una instancia de IRIS? ¡Entonces esto es para ti!
Solo con ejecutar docker-compose up ya podrás acceder a un entorno de trabajo con un par de ejemplos.
No quiero estropear la sencillez, así que probadlo.

Más artículos
Schematron es un lenguaje de validación basado en reglas para hacer aserciones/afirmaciones sobre la presencia o ausencia de ciertos patrones en documentos XML. Un Schematron se refiere a una colección de una o más reglas que contienen pruebas. Los Schematron están escritos en una forma de XML, lo que los hace relativamente fáciles de inspeccionar, comprender y escribir para todos, incluso los que no son programadores.
Empecé en este proyecto pensando en cómo permitir que el código Python trabaje de forma natural con el almacenamiento escalable y el eficiente mecanismo de recuperación de datos ofrecido por los globals de IRIS, a través de Python Embebido.
Mi idea inicial era crear algo como un diccionario de implementación de Python usando globals, pero pronto me di cuenta de que antes debía ocuparme de la abstracción de objetos.
Así que empecé creando algunas clases en Python que pudieran envolver objetos Python, almacenando y recuperando sus datos en globals, es decir, serializar y deserializar
%%iris magic para IPython, puede ejecutar comandos ObjectScript en NoteBooks.
Puede ejecutarse en cualquier Notebook (por ej. Jupyter) y no requiere ninguna configuración especial ni en IRIS ni en el propio Notebook.

InterSystems IRIS es una gran plataforma de datos y posee las funcionalidades que demanda el mercado. En este artículo, recojo las 10 mejores:
| Puesto | Funcionalidad | ¿Por qué? | Más información |
| 1 | Análisis adaptativo | Analizar los datos empresariales actuales "TAL CUAL" y en tiempo real, con menos esfuerzo de modelado, mayor velocidad de ejecución y soporte para los principales visores analíticos (incluyendo Excel) es un factor clave para la estrategia corporativa de las empresas. | |
| 2 | Administrador de API | Los activos digitales se consumen mediante la API REST. |
Si usáis Python, podéis utilizar el módulo venv para crear un entorno virtual. Este módulo es la manera recomendada de crear y gestionar entornos virtuales.
Un entorno virtual es una herramienta que ayuda a mantener separadas las dependencias requeridas por diferentes proyectos, mediante la creación de entornos virtuales aislados de Python para ellos. Resuelve el dilema “El proyecto X depende de la versión 1.x pero el proyecto Y necesita la 4.x”, y mantiene limpio y manejable el directorio site-packages global.
Así que si trabajáis mucho con Python, como yo, podéis usar el módulo venv para crear un entorno virtual para vuestro proyecto. Esto os permitirá instalar paquetes sin que afecte a la instalación de Python global.
Aquí encontraréis dos alias simples para crear y activar un entorno virtual.
alias venv="python3 -m venv .venv; source .venv/bin/activate"
alias irisvenv="python3 -m venv .venv; source .venv/bin/activate; pip install https://github.com/grongierisc/iris-embedded-python-wrapper/releases/download/v0.0.1/iris-0.0.1-py3-none-any.whl"
En la primera parte de este artículo he mostrado cómo empezar un nuevo proyecto en Django, y cómo definir nuevos modelos y añadir modelos ya existentes.
En esta publicación, voy a mostrar un Panel de Administración (disponible con la configuración predeterminada) y cómo puede ser útil.
Nota importante: si intentáis reproducir los pasos de este artículo, no funcionará para vosotros. Porque mientras escribía la publicación he realizado varios ajustes en el proyecto django-iris, e incluso en el driver DB-API de InterSystems, para arreglar algunos problemas ahí también, y creo que el driver aún está en desarrollo y habrá un driver más estable en el futuro. Así que vamos a asumir que este artículo solo explica cómo podría ser si tuviéramos todo terminado.
¡Hola Comunidad!
Os presentamos la 3ª mesa redonda de la Comunidad - 60 minutos de animada charla (en inglés) sobre el tema: Desarrollando con Python.
La idea es juntarse para compartir ideas, experiencias, trucos y consejos. Si tenéis alguna pregunta sobre el tema, podéis escribirla en los comentarios de esta publicación y se responderá y comentará durante la mesa redonda.
🗣 Ponentes: @Guillaume Rongier y @Eduard Lebedyuk
📅 Fecha: Miércoles 23 de noviembre
🕑 Hora: 3:00 PM (CET)
Hace tiempo presenté un nuevo driver para Django for IRIS. Ahora voy a mostrar cómo utilizar Django con IRIS en la práctica.

Me gustaría compartir un ejemplo sobre cómo la nueva funcionalidad de Python Embebido en IRIS me ha ayudado en mis rutinas diarias.
Mientras participaba en el proyecto iris-kaggle-socrata-generator con Henrique Dias, tuve que descomprimir conjuntos de datos de Kaggle para poder importarlos.
Conseguí hacerlo fácilmente mediante el uso de la librería zipfile en Python (este código se copió de este stackoverflow):
Method UnZip(pZipFileName As %String, pExtractToDir As %String) As %DynamicArray [ Language = python ]
{
import zipfile
import iris
with zipfile.ZipFile(pZipFileName, 'r') asProyecto de plantilla con varios códigos Python para ser utilizados con InterSystems IRIS Community Edition con contenedor.
Contenido:


Calma, calma, no estoy promoviendo una guerra contra las máquinas como en las películas de ciencia ficción, para evitar la dominación mundial de Ultron o Skynet. Todavía no, todavía no 🤔
Os invito a retar a las máquinas a través de la creación de un juego muy sencillo usando ObjectScript con Python embebido.
Tengo que deciros que me emocioné mucho con la función de Python integrado en InterSystems IRIS. Es increíble el montón de posibilidades que se abren para crear aplicaciones fantásticas.
Vamos a construir un juego "tres en raya".
¡Hola a todos!
Hoy instalaremos Jupyter Notebook y vamos a conectarlo con Apache Spark e InterSystems IRIS.
Nota: Los siguientes procedimientos los hice en Ubuntu 18.04 y Python 3.6.5.
Si estás buscando un bloc de notas que sea reconocido, difundido ampliamente y muy popular entre los usuarios de Python, en lugar de utilizar Apache Zeppelin, deberías elegir Jupyter notebook. Jupyter notebook es una excelente y muy poderosa herramienta para la "ciencia de datos", que cuenta con una comunidad muy grande, además de muchas funciones y software adicional. Jupyter notebook permite crear y compartir documentos que contienen código en tiempo real, ecuaciones, visualizaciones y texto narrativo. Sus aplicaciones incluyen la limpieza y transformación de los datos, simulaciones numéricas, modelamiento estadístico, visualización de datos, machine learning y muchas funciones más. Y lo más importante, existe una gran comunidad que ayuda a resolver los problemas que surjan.