Limpiar filtro
Anuncio
Esther Sanchez · 26 jul, 2019
¡Hola a tod@s!Hoy les traemos buenas noticias: InterSystems HealthShare ha sido nominada a los premios "Computable Awards 2019". El Unified Health Record ("Registro Unificado de Salud") que implementamos junto con nuestro partner Itzos en la Sint Maartenskliniek (Clínica St. Maartens, en Holanda) tiene la oportunidad de convertirse en el "ICT Project of the Year in Healthcare" (Proyecto Informático del año en el sector Salud).Esta nominación supone un gran honor para todos... ¡pero nos encantaría ganar! Para ello, necesitamos 4 000 votos! ¿Votan por nosotros? El proceso de votación es muy sencillo:1. Regístrese en la web de Computable y haga clic en "Verstuur" (Enviar):Nota.- puede dejar en blanco las 4 opciones que aparecen a continuación del formulario de registro (son para suscribirse a sus contenidos).2. Una vez envíe el formulario, recibirá un email de Computable con un enlace. Haga clic en el link, que le llevará a la página de votaciones. 3. Busque "InterSystems" en la página (pulsando las teclas CTRL + F a la vez, o CMD + F si utiliza un Mac), o desplácese por la página hacia abajo, hasta que encuentre la categoría de premio “IT project of the Year in Healthcare.” Elija la segunda opción:4. ¿Hecho? ¡Genial! ¡Así de fácil! Finalmente, recibirá un email de agradecimiento de Computable. Puede compartir esta publicación con clientes, amigos y contactos.¡Muchas gracias!
Artículo
Mario Sanchez Macias · 5 nov, 2019
¡Hola Comunidad!
En publicaciones anteriores, mi compañero Murray mostró cómo se pueden recopilar métricas históricas de rendimiento utilizando los pButtons. Hablamos primero de los pButtons porque se instalan con cada instancia de las plataformas de datos (Ensemble, Caché, …). Sin embargo, existen otras formas para recopilar, procesar y desplegar las métricas de rendimiento de Caché, en tiempo real, ya sea con la finalidad de realizar una supervisión sencilla o, lo más importante, para llevar a cabo operaciones analíticas mucho más sofisticadas y obtener la capacidad de planificación. Uno de los métodos utilizados más comunes para recopilar datos es el SNMP (Protocolo simple de administración de la red).
El SNMP es una forma estándar para que Caché proporcione información acerca de la administración y la supervisión en una amplia variedad de herramientas de administración. En la documentación en línea de Caché se incluyen detalles de la interfaz entre Caché y SNMP. Mientras que SNMP debería 'funcionar únicamente' con Caché, existen algunos trucos y trampas en su configuración. Es común encontrarse con algunos problemas para configurar SNMP si es la primera vez que se hace por lo que esta publicación te puede ayudar para evitar caer en dichos errores.
En este artículo repasaré la instalación y la configuración de SNMP para Caché en Red Hat Linux pero deberías ser capaz de utilizar los mismos pasos para instalar otras variedades de *nix. Estoy escribiendo esta publicación utilizando Red Hat ya que Linux puede ser un poco más complicado de configurar. En Windows Caché se instala automáticamente una DLL para conectarse con el servicio estándar SNMP de Windows, por lo que debería ser más fácil configurarlo.
Una vez que SNMP se configure del lado del servidor, se puede comenzar con la monitorización utilizando un gran número de herramientas. Mostraré el resultado de la monitorización utilizando la popular herramienta PRTG, pero existen muchas otras -[Aquí encontrará una lista parcial.](https://en.wikipedia.org/wiki/Comparison_of_network_monitoring_systems)
Hay que tener en cuenta que los archivos Caché y Ensemble MIB se incluyen en la carpeta Caché_installation_directory/SNMP. Los archivos son: ISC-CACHE.mib e ISC-ENSEMBLE.mib
Aquí encontrarás artículos previos de esta serie >>
- Part 1 - Getting started on the Journey, collecting metrics.- Part 2 - Looking at the metrics we collected.- Part 3 - Focus on CPU.- Part 4 - Looking at memory.
Empieza aquí...
Comienza revisando la supervisión de Caché mediante SNMP en la documentación en línea de Caché.
1. Configuración de Caché
Sigue los pasos descritos en la sección "Administración de SNMP en Caché", que se encuentra en la documentación en línea de Caché para habilitar el servicio de supervisión de Caché y configurar el subagente SNMP para que inicie automáticamente con el arranque de Caché.
Verifica que el proceso de Caché está ejecutándose, por ejemplo eche un vistazo en la lista de procesos o en el sistema operativo.
ps -ef | grep SNMProot 1171 1097 0 02:26 pts/1 00:00:00 grep SNMProot 27833 1 0 00:34 pts/0 00:00:05 cache -s/db/trak/hs2015/mgr -cj -p33 JOB^SNMP
Eso es todo, ¡la configuración de Caché está lista!
2. Configuración del sistema operativo
Aún hay algo más que hacer aquí. Primero verifica que snmpd daemon está instalado y en funcionamiento. Si no es así, instala e inicia snmpd.
Verifica el estado de snmpd con:
service snmpd status
Inicia o para snmpd con:
service snmpd start|stop
Si snmp no está instalado, tendrás que instalarlo como se indica en las instrucciones del sistema operativo, por ejemplo:
yum -y install net-snmp net-snmp-utils
3. Configurar snmpd
Como se detalla en la documentación de Caché, en los sistemas Linux la tarea más importante es verificar que el agente maestro SNMP del sistema sea compatible con el protocolo Agent Extensibility (AgentX), que Caché ejecuta como subagente, y el maestro esté activo y recibiendo las conexiones en el AgentX TCP estándar (puerto 705).
Aquí es donde nos podemos encontrar con algunos problemas. Por ejemplo, puedes tener algunos errores básicos con el archivo "snmp.conf" lo cual implica que el subagente SNMP de Caché no se comunica con el agente maestro del sistema operativo. En el siguiente ejemplo de un archivo "/etc/snmp/snmp.conf" se configuró para iniciar agentX y proporcionar el acceso a Caché y a las Bases de información gestionada (MIB) SNMP de Ensemble.
Ten en cuenta que deberá confirmar si la siguiente configuración cumple con las políticas de seguridad de su organización.
Como mínimo, las siguientes líneas deben editarse para reflejar la configuración de su sistema.
Por ejemplo, cambiar:
syslocation "System_Location"
a
syslocation "Primary Server Room"
Edite también las dos líneas siguientes:
syscontact "Your Name"trapsink Caché_database_server_name_or_ip_address public
Edita o reemplaza el archivo que existe en /etc/snmp/snmp.conf para que coincida con lo siguiente:
################################################################################# snmpd.conf:# An example configuration file for configuring the NET-SNMP agent with Cache.## This has been used successfully on Red Hat Enterprise Linux and running# the snmpd daemon in the foreground with the following command:## /usr/sbin/snmpd -f -L -x TCP:localhost:705 -c./snmpd.conf## You may want/need to change some of the information, especially the# IP address of the trap receiver of you expect to get traps. I've also seen# one case (on AIX) where we had to use the "-C" option on the snmpd command# line, to make sure we were getting the correct snmpd.conf file.############################################################################################################################################################ SECTION: System Information Setup## This section defines some of the information reported in# the "system" mib group in the mibII tree.# syslocation: The [typically physical] location of the system.# Note that setting this value here means that when trying to# perform an snmp SET operation to the sysLocation.0 variable will make# the agent return the "notWritable" error code. IE, including# this token in the snmpd.conf file will disable write access to# the variable.# arguments: location_stringsyslocation "System Location"# syscontact: The contact information for the administrator# Note that setting this value here means that when trying to# perform an snmp SET operation to the sysContact.0 variable will make# the agent return the "notWritable" error code. IE, including# this token in the snmpd.conf file will disable write access to# the variable.# arguments: contact_stringsyscontact "Your Name"# sysservices: The proper value for the sysServices object.# arguments: sysservices_numbersysservices 76############################################################################ SECTION: Agent Operating Mode## This section defines how the agent will operate when it# is running.# master: Should the agent operate as a master agent or not.# Currently, the only supported master agent type for this token# is "agentx".## arguments: (on|yes|agentx|all|off|no)master agentxagentXSocket tcp:localhost:705############################################################################ SECTION: Trap Destinations## Here we define who the agent will send traps to.# trapsink: A SNMPv1 trap receiver# arguments: host [community] [portnum]trapsink Caché_database_server_name_or_ip_address public################################################################################ Access Control################################################################################ As shipped, the snmpd demon will only respond to queries on the# system mib group until this file is replaced or modified for# security purposes. Examples are shown below about how to increase the# level of access.## By far, the most common question I get about the agent is "why won't# it work?", when really it should be "how do I configure the agent to# allow me to access it?"## By default, the agent responds to the "public" community for read# only access, if run out of the box without any configuration file in# place. The following examples show you other ways of configuring# the agent so that you can change the community names, and give# yourself write access to the mib tree as well.## For more information, read the FAQ as well as the snmpd.conf(5)# manual page.###### First, map the community name "public" into a "security name"# sec.name source communitycom2sec notConfigUser default public##### Second, map the security name into a group name:# groupName securityModel securityNamegroup notConfigGroup v1 notConfigUsergroup notConfigGroup v2c notConfigUser##### Third, create a view for us to let the group have rights to:# Make at least snmpwalk -v 1 localhost -c public system fast again.# name incl/excl subtree mask(optional)# access to 'internet' subtreeview systemview included .1.3.6.1# access to Cache MIBs Caché and Ensembleview systemview included .1.3.6.1.4.1.16563.1view systemview included .1.3.6.1.4.1.16563.2##### Finally, grant the group read-only access to the systemview view.# group context sec.model sec.level prefix read write notifaccess notConfigGroup "" any noauth exact systemview none none
Después de editar el archivo /etc/snmp/snmp.conf, reinicia el snmpd deamon.
service snmpd restart
Verifica el estado de snmpd, ten en cuenta que se inició AgentX y observa la línea de estado: Turning on AgentX master support.
h-4.2# service snmpd restartRedirecting to /bin/systemctl restart snmpd.servicesh-4.2# service snmpd statusRedirecting to /bin/systemctl status snmpd.service● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.Loaded: loaded (/usr/lib/systemd/system/snmpd.service; disabled; vendor preset: disabled)Active: active (running) since Wed 2016-04-27 00:31:36 EDT; 7s agoMain PID: 27820 (snmpd)CGroup: /system.slice/snmpd.service└─27820 /usr/sbin/snmpd -LS0-6d -fApr 27 00:31:36 vsan-tc-db2.iscinternal.com systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon....Apr 27 00:31:36 vsan-tc-db2.iscinternal.com snmpd[27820]: Turning on AgentX master support.Apr 27 00:31:36 vsan-tc-db2.iscinternal.com snmpd[27820]: NET-SNMP version 5.7.2Apr 27 00:31:36 vsan-tc-db2.iscinternal.com systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..sh-4.2#
Después de reiniciar snmpd debes hacer lo mismo con el subagente SNMP de Caché utilizando la rutina ^SNMP:
%SYS>do stop^SNMP()%SYS>do start^SNMP(705,20)
El sistema operativo snmpd daemon y el subagente de Caché deben ser accesibles y ejecutarse ahora.
4. Comprueba el acceso a la MIB
Para probar el acceso a la MIB puedes realizar la verificación con las siguientes líneas de comando. snmpget devuelve un valor único:
snmpget -mAll -v 2c -c public vsan-tc-db2 .1.3.6.1.4.1.16563.1.1.1.1.5.5.72.50.48.49.53SNMPv2-SMI::enterprises.16563.1.1.1.1.5.5.72.50.48.49.53 = STRING: "Cache for UNIX (Red Hat Enterprise Linux for x86-64) 2015.2.1 (Build 705U) Mon Aug 31 2015 16:53:38 EDT"
Y snmpwalk will 'walk' the MIB tree or branch:
snmpwalk -m ALL -v 2c -c public vsan-tc-db2 .1.3.6.1.4.1.16563.1.1.1.1SNMPv2-SMI::enterprises.16563.1.1.1.1.2.5.72.50.48.49.53 = STRING: "H2015"SNMPv2-SMI::enterprises.16563.1.1.1.1.3.5.72.50.48.49.53 = STRING: "/db/trak/hs2015/cache.cpf"SNMPv2-SMI::enterprises.16563.1.1.1.1.4.5.72.50.48.49.53 = STRING: "/db/trak/hs2015/mgr/"etcetc
Además, existen varias ventanas y clientes *nix disponibles para visualizar los datos del sistema. Me gusta utilizar la herramienta gratuita iReasoning MIB Browser. Tendrás que cargar el archivo ISC-CACHE.MIB para el cliente con el fin de que conozca la estructura de MIB.
La siguiente imagen muestra el iReasoning MIB Browser en OSX.
Incluyendo herramientas de monitorización
Aquí es donde pueden existir grandes diferencias en la implantación. Dejo a tu consideración la elección de la herramienta para monitorización, supervisión o análisis.
Por favor, deja un comentario detallando las herramientas y los valores que obtengas para supervisar y administrar tus sistemas. Esto será de gran ayuda para otros miembros de la comunidad.
A continuación, se muestra una captura de pantalla del popular PRTG Network Monitor con las métricas de Caché. Los pasos para incluir las métricas de Caché en PRTG son similares a los que se emplean con otras herramientas
Ejemplo de flujo de trabajo - añade Caché MIB a la herramienta de monitorización.
Paso 1.
Asegúrate de que puedes conectarte a las MIB del sistema operativo. Un consejo es identificar el problema en el sistema operativo y no en Caché. Es muy probable que las herramientas de supervisión sean conocidas y estén preconfiguradas para las MIB de sistemas operativos comunes, por lo que puede ser más fácil ayudar a los proveedores u otros usuarios.
Dependiendo de la herramienta de supervisión que elijas, es posible que tenga que añadir un 'módulo' o una 'aplicación' de SNMP, los cuales generalmente son gratuitos o de código abierto. Las instrucciones del proveedor suelen ser bastante claras para este primer paso.
Después de que realices la supervisión de las métricas del sistema operativo, es momento de añadir a Caché..
Paso 2.
Importa los archivos ISC-CACHE.mib y ISC-ENSEMBLE.mib en la herramienta para que reconozcan la estructura de la MIB.
Los pasos que se muestran aquí pueden variar. Por ejemplo, PRTG tiene la utilidad 'MIB Importer'. Los pasos básicos son abrir el archivo de texto ISC-CACHE.mib en la herramienta e importarlo al formato interno de la herramienta. Por ejemplo, Splunk utiliza un formato Python, etc.
Nota: Nos encontramos que en la herramienta PRTG se agotaba el tiempo si trataba de agregar un sensor para todas las ramas de MIB en Caché. Asumo que recorrió todo el árbol y se agotó el tiempo para algunas métricas como en las listas de procesos, no pasé mucho tiempo solucionando este problema, sino que trabajé en torno a él importando solo la rama correspondiente al rendimiento (cachePerfTab) desde ISC-CACHE.mib.
Una vez importada/convertida la MIB puede reutilizarse para recopilar los datos de otros servidores en tu red. En la imagen anterior se muestra que PRTG utiliza un sensor de tipo "Sensor Factory" para combinar varios sensores en una sola gráfica.
Resumen
Existen muchas herramientas para monitorización, supervisión, de alerta, otras que incluyen análisis muy inteligentes, algunas son gratuitas, otras necesitan licencias de soporte y existen las que combinan las funcionalidades anteriores.
Debes supervisar tu sistema y definir las actividades que son normales y las que están fuera de ese rango, y por lo tanto deben investigarse. SNMP es una manera sencilla para mostar las métricas de Caché y de Ensemble.
Artículo
Joel Espinoza · 28 oct, 2019
¡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.
Introducción
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.
Requerimientos
Si algo no funciona adecuadamente, consulta la sección "Posibles problemas y soluciones" que se encuentra en la parte inferior del artículo.
En primer lugar, asegúrate de que cuentas con Java 8 (java -version devuelve la versión "1.8.x"). A continuación, descarga Apache Spark y descomprímelo. Después, ejecuta las siguientes líneas de comando en el terminal:
pip3 install jupyter
pip3 install toree
jupyter toree install --spark_home=/path_to_spark/spark-2.3.1-bin-hadoop2.7 --interpreters=PySpark --user
Ahora, abre el terminal y ejecuta vim ~/.bashrc. Inserta el siguiente código en la parte inferior (estas son variables de entorno):
export JAVA_HOME=/usr/lib/jvm/installed java 8 export PATH="$PATH:$JAVA_HOME/bin" export SPARK_HOME=/path to spark/spark-2.3.1-bin-hadoop2.7 export PATH="$PATH:$SPARK_HOME/bin" export PYSPARK_DRIVER_PYTHON=jupyter export PYSPARK_DRIVER_PYTHON_OPTS="notebook"
Por último, ejecuta source ~/.bashrc. Esto para que cargue las nuevas variables.
Comprueba que funciona adecuadamente
Ahora, vamos a iniciar Jupyter Notebook. Ejecuta pyspark en el terminal.
Abre en tu navegador el resultado de la URL. Debería parecerse a esta imagen:
Haz clic en New, seleccione Python 3 e inserta el siguiente código en un párrafo:
import sysprint(sys.version)sc
El resultado debería parecerse a esto:
Para Jupyter utilizando Ctrl-c en el terminal.
Nota: Para añadir archivos jar personalizados simplemente mueve los archivos que quieras hacia $SPARK_HOME/jars.
Entonces, lo que queremos es trabajar con intersystems-jdbc e intersystems-spark (también necesitaremos una biblioteca jpmml). Vamos a copiar los archivos jar necesarios en Spark. Ejecuta las siguientes líneas de comando en el terminal:
sudo cp /path to intersystems iris/dev/java/lib/JDK18/intersystems-jdbc-3.0.0.jar /path to spark/spark-2.3.1-bin-hadoop2.7/jars
sudo cp /path to intersystems iris/dev/java/lib/JDK18/intersystems-spark-1.0.0.jar /path to spark/spark-2.3.1-bin-hadoop2.7/jars
sudo cp /path to jpmml/jpmml-sparkml-executable-version.jar /path to spark/spark-2.3.1-bin-hadoop2.7/jars
Asegúrate de que funcionan bien. Ejecuta de nuevo pyspark en el terminal y también ejecuta el siguiente código (que se mostró en el artículo anterior):
from pyspark.ml.linalg import Vectorsfrom pyspark.ml.feature import VectorAssemblerfrom pyspark.ml.clustering import KMeansfrom pyspark.ml import Pipelinefrom pyspark.ml.feature import RFormulafrom pyspark2pmml import PMMLBuilder
dataFrame=spark.read.format("com.intersystems.spark").\option("url", "IRIS://localhost:51773/NAMESPACE").option("user", "dev").\option("password", "123").\option("dbtable", "DataMining.IrisDataset").load() # load iris dataset
(trainingData, testData) = dataFrame.randomSplit([0.7, 0.3]) # split the data into two setsassembler = VectorAssembler(inputCols = ["PetalLength", "PetalWidth", "SepalLength", "SepalWidth"], outputCol="features") # add a new column with features
kmeans = KMeans().setK(3).setSeed(2000) # clustering algorithm that we use
pipeline = Pipeline(stages=[assembler, kmeans]) # First, passed data will run against assembler and after will run against kmeans.modelKMeans = pipeline.fit(trainingData) # pass training data
pmmlBuilder = PMMLBuilder(sc, dataFrame, modelKMeans)pmmlBuilder.buildFile("KMeans.pmml") # create pmml model
Este es el resultado que obtuve:
El archivo resultante es un modelo jpmml que se realizó con kmeans. ¡Todo funciona bien!
Posibles problemas y soluciones
No se encontró el comando: 'jupyter':
vivim ~/bashrc;
Añade en la parte inferior export PATH="$PATH:~/.local/bin";
En la fuente del terminal ~/.bashrc.
Si esto no soluciona el problema, reinstala pip3 y jupyter.
No existe el archivo o directorio env: 'jupyter':
En ~/.bashrc export PYSPARK_DRIVER_PYTHON=/home/.../.local/bin/jupyter.
TypeError: no es posible llamar al objeto 'JavaPackage':
Comprueba que el archivo necesario con la extensión .jar se encuentra en /.../spark-2.3.1-bin-hadoop2.7/jars;
Reinicia el bloc de notas.
El proceso para la puerta de enlace en Java finalizó antes de que el controlador envíe su número de puerto:
La versión de Java debería ser la 8 (probablemente funciona también con Java 6 o 7, pero no lo he comprobado),
echo $JAVA_HOME le permitirá conseguir la versión 8 de Java. En caso de que no lo haga, cambia la ruta en ~/.bashrc.
Inserta el comando sudo update-alternatives --config java en el terminal y selecciona una versión adecuada de Java.
Inserta el comando sudo update-alternatives --config javac en el terminal y selecciona una versión adecuada de Java.
PermissionError: [Errno 13] Permission denied: '/usr/local/share/jupyter'
Agrega el nombre de usuario al final de tu comando, en el terminal
Se produjo un error al ejecutar el comando de Jupyter 'toree': Errno 2], no existe ese archivo o el directorio
Ejecuta el comando sin el sudo.
Puede aparecer un error específico si se utilizan variables de sistema como PYSPARK_SUBMIT_ARGS y otras variables de spark/pyspark, o debido a los cambios en /.../spark-2.3.1-bin-hadoop2.7/conf/spark-env.sh
Elimine estas variables y comprueba la configuración de spark-env.sh.
Si todo esta ok, ya tienes tu ambiente Jupyter, Spark e IRIS funcionando!
Este artículo ha sido etiquetado como "Mejores prácticas" ("Best practices").
Los artículos con la etiqueta "Mejores prácticas" incluyen recomendaciones sobre cómo desarrollar, probar, implementar y administrar mejor las soluciones de InterSystems.
Artículo
Nancy Martínez · 8 oct, 2019
Las herramientas que utilizan los astrónomos
Hace 6 años, el 19 de diciembre del 2013, la Agencia Espacial Europea (ESA) lanzó un telescopio orbital llamado Gaia. Podéis obtener más información sobre la misión Gaia en la página web oficial de la Agencia Espacial Europea o en el artículo de Vitaly Egorov (Billion pixels for a billion stars).
Y sin embargo, pocas personas saben cuál fue la tecnología que utilizó la agencia para almacenar y procesar los datos recopilados por Gaia. En 2011, dos años antes del lanzamiento, los desarrolladores barajaban varias opciones (consultar "Astrostatistics and Data Mining" escrito por Luis Manuel Sarro, Laurent Eyer, William O'Mullane, Joris De Ridder, pp. 111-112):
IBM DB2,
PostgreSQL,
Apache Hadoop,
Apache Cassandra and
InterSystems Caché (para ser más precisos, la tecnología Caché eXTreme Event Persistence).
Al comparar las tecnologías entre sí, se obtuvieron los siguientes resultados (fuente):
Tecnología
Tiempo
DB2
13min55s
PostgreSQL 8
14min50s
PostgreSQL 9
6min50s
Hadoop
3min37s
Cassandra
3min37s
Caché
2min25s
Los primeros cuatro probablemente son conocidos incluso por los niños en edad escolar. Pero, ¿qué es Caché XEP?
Tecnologías Java en Caché
Si se observa el conjunto de APIs de Java proporcionado por InterSystems, veremos lo siguiente:
La tecnología Caché Object Binding proyecta los datos de forma transparente en Java. En términos de Caché, las clases del proxy que se generaron en Java se llaman exactamente así, proyecciones. Este enfoque es el más sencillo ya que guarda las relaciones “naturales” entre las clases en el modelo de objetos, pero esto no garantiza que tengan un gran rendimiento: muchos de los metadatos del servicio que describen el objeto del modelo se transfieren “de forma específica”
JDBC y varias extensiones (Hibernate, JPA). Supongo que hasta aquí no hay nada nuevo aparte del hecho de que Caché es compatible con dos tipos de aislamiento durante sus transacciones: READ_UNCOMMITTED y READ_COMMITTED – y funciona de modo predeterminado con READ_UNCOMMITTED
La familia Caché eXTreme (también está disponible en las ediciones de .NET y Node.js). Este enfoque se caracteriza por el acceso directo a la representación de los datos de bajo nivel (los llamados "globales", es decir, la cantidad de datos en el mundo de Caché) lo que garantiza un alto rendimiento. La librería del XEP que utiliza Caché proporciona acceso simultáneo a los objetos y a los datos cuasi relacionales.
Objeto - La API del cliente ya no necesita preocuparse por las representaciones objeto-relacional: siguiendo el modelo de objetos en Java (incluso en los casos de herencia multinivel compleja ), el sistema crea automáticamente un modelo de objetos que están al nivel de las clases de Caché (o un esquema de base de datos si queremos utilizar los términos para la representación del relacional)
Cuasi-relacional, se refiere a que es posible ejecutar consultas SQL en diversos “eventos” almacenados en una base de datos (para ser exactos, las solicitudes que utilizan el subconjunto SQL) directamente desde el contexto de una conexión eXTreme. Además, los índices y las transacciones son totalmente compatibles. Por supuesto, es posible tener acceso inmediato a todos los datos que se cargaron y a una representación del relacional mediante JDBC (el cual es compatible con todas las poderosas funciones de las extensiones ANSI SQL y SQL específicas para el lenguaje de Caché), pero la velocidad de acceso será completamente diferente.
En resumen, esto es lo que tenemos:
La importación del “esquema” (en Caché las clases se crean automáticamente), que incluye:
la importación de la jerarquía de las clases en Java,
acceso instantáneo relacional a los datos: puede trabajar con las clases de Caché de la misma manera que trabaja con las tablas,
es compatible con los índices y las transacciones mediante Caché eXTreme,
es compatible con las consultas SQL simples mediante Caché eXTreme,
es compatible con las consultas SQL arbitrarias mediante la conexión JDBC que subyace respecto al TCP (Caché utiliza el controlador estándar Tipo 4, el cual funciona directamente con la base de datos Pure de Java).
Este enfoque ofrece algunas ventajas en comparación con relacionales similares (mayor velocidad de acceso) y varias soluciones NoSQL (acceso instantáneo a los datos de tipo de relacional).
La “peculiaridad” en la configuración de Caché eXTreme es que antes de la conexión debe configurarse el entorno:
la variable GLOBALS_HOME debe apuntar a la carpeta de instalación en Caché y
LD_LIBRARY_PATH (DYLD_LIBRARY_PATH para Mac OS X o PATH para Windows) debe contener ${GLOBALS_HOME}/bin.
Además, es posible que se requiera aumentar los tamaños de stack y heap en JVM (-Xss2m -Xmx768m).
Un poco de práctica
Los autores estaban interesados en saber cómo se comportaría Caché eXTreme mientras se escribe un flujo continuo de datos, en comparación con otras tecnologías de procesamiento de datos. Utilizamos datos históricos de cotizaciones bursátiles en formato CSV, los cuales se encuentran disponibles en el sitio web de la organización de empresas financieras “Finam”. Lo siguiente es una muestra del archivo de datos:
<TICKER>,<PER>,<DATE>,<TIME>,<LAST>,<VOL>
NASDAQ100,0,20130802,09:31:07,3 125.300000000,0
NASDAQ100,0,20130802,09:32:08,3 122.860000000,806 906
NASDAQ100,0,20130802,09:33:09,3 123.920000000,637 360
NASDAQ100,0,20130802,09:34:10,3 124.090000000,421 928
NASDAQ100,0,20130802,09:35:11,3 125.180000000,681 585
El código de la clase modelada en Caché para la estructura anterior podría verse así:
Class com.intersystems.persistence.objbinding.Event Extends %Persistent [ ClassType = persistent, DdlAllowed, Final, SqlTableName = Event ]
{
Property Ticker As %String(MAXLEN = 32);
Property Per As %Integer(MAXVAL = 2147483647, MINVAL = -2147483648);
Property TimeStamp As %TimeStamp;
Property Last As %Double;
Property Vol As %Integer(MAXVAL = 9223372036854775807, MINVAL = -9223372036854775810);
}
También escribimos un poco de código de prueba básico y simple. Este enfoque “simple” puede justificarse por el hecho de que en realidad no estamos midiendo la velocidad del código generado por JIT, sino la velocidad a la que el código, que no tiene ninguna relación con el JVM (con excepción de Apache Derby), puede escribir en el disco. Así es como se verá la ventana del programa de prueba:
Nuestra competencia es:
Apache Derby 10.14.2.0
Oracle 10.2.0.3.0
InterSystems Caché 2018.1 (JDBC)
InterSystems Caché 2018.1 (eXTreme)
Dado que las pruebas son un tanto aproximadas, no vimos ningún propósito práctico en proporcionar las cifras exactas: el margen de error es bastante alto, mientras que el objetivo del artículo es demostrar la tendencia general. Por las mismas razones, no especificamos la versión exacta de JDK y la configuración del recolector de basura (Garbage Collector): el lado del servidor JVM 8u191 con -Xmx2048m -Xss128m alcanzó un nivel de rendimiento muy similar en Linux y Mac OS X. En cada prueba se guardaron un millón de eventos, se realizaron varias ejecuciones en caliente (hasta 10) antes de cada prueba para una base de datos en particular. En cuanto a la configuración de Caché, la rutina de caché aumentó a 256 MB y la base de datos en caché de 8KB incrementó hasta 1024 MB.
Nuestras pruebas arrojaron los siguientes resultados (los valores de la velocidad de escritura se expresan en eventos por segundo (eps)):
Tecnología
Tiempo, s (menos es mejor)
Velocidad de escritura, eps (más es mejor)
Apache Derby
140±30
7100±1300
Oracle
780±50
1290±80
Caché JDBC
61±8
17000±2000
Caché eXTreme
6.7±0.8
152000±17000
Caché eXTreme, transaction journaling disabled
6.3±0.6
162000±14000
Derby ofrece velocidades que varían desde 6200 hasta 8000 eps
Oracle resultó tener una rapidez de hasta 1290 eps
Caché en el modo JDBC proporciona una mayor velocidad (desde 15000 hasta 18000 eps), pero hay una disyuntiva: el nivel de aislamiento de la transacción predeterminado, como se mencionó anteriormente, es READ_UNCOMMITTED
La siguiente opción, Caché eXTreme, nos da desde 127000 hasta 167000 eps
Por último, nos arriesgamos un poco y desactivamos el registro de las transacciones (para un proceso determinado por el cliente) y logramos alcanzar la velocidad de escritura de 172000 eps en un sistema de prueba
Quienes estén interesados en obtener números más precisos pueden consultar el código fuente. Será necesario lo siguiente para construirlo y ejecutarlo:
JDK 1.8+,
Git,
Maven
Oracle JDBC driver (disponible desde Oracle Maven Repository)
Maven Install Plugin para crear un Caché JDBC local y los artefactos de Caché eXTreme:
$ mvn install:install-file -Dfile=cache-db-2.0.0.jar
$ mvn install:install-file -Dfile=cache-extreme-2.0.0.jar
$ mvn install:install-file -Dfile=cache-gateway-2.0.0.jar
$ mvn install:install-file -Dfile=cache-jdbc-2.0.0.jar
y, por último,
Caché 2018.1+.
Artículo
Ricardo Paiva · 9 oct, 2019
¡Hola a tod@s!
En esta serie de artículos me gustaría presentar y discutir varios enfoques posibles para desarrollar software mediante las tecnologías de InterSystems y GitLab. Abordaré temas como:
Primer artículo
Conceptos básicos de Git, por qué es importante comprender los conceptos de alto nivel de Git para desarrollar software que sea moderno
Cómo puede utilizarse Git para desarrollar software (Flujos de trabajo de Git)
Segundo artículo
GitLab Workflow - es un software muy completo para el proceso del ciclo de vida, desde concebir una idea hasta la respuesta del usuario
Entrega continua - es un enfoque que se utiliza en la ingeniería de software, en el cual los equipos producen software mediante ciclos cortos para garantizar que pueda lanzarse de forma fiable y en cualquier momento. Su objetivo es construir, probar y lanzar software más rápido y con mayor frecuencia
Tercer artículo
Instalación y configuración de GitLab
Cómo conectar sus entornos a GitLab
Cuarto artículo
Configuración de la entrega continua
Quinto artículo
Qué son los contenedores, cómo (y en qué casos) pueden utilizarse
Sexto artículo
Componentes principales para un flujo de entregas continuas mediante contenedores
Cómo funcionan en conjunto
Séptimo artículo
Configuración de la entrega continua mediante contenedores
Octavo artículo
Configuración de la entrega continua mediante InterSystems Cloud Manager
Noveno artículo
Arquitectura del contenedor
En esta serie de artículos, incluí los métodos generales para realizar entregas continuas. Ya que se trata de un tema muy amplio, esta serie de artículos debe verse más como una colección de procedimientos en lugar de algo definitivo. Si quiere que la construcción, las pruebas y la entrega de su aplicación se realicen de manera automática, en general, las entregas continuas y GitLab son la manera de hacerlo. La entrega continua y los contenedores le permiten personalizar su flujo de trabajo de acuerdo a sus necesidades.
Anuncio
David Reche · 18 oct, 2019
¡Hola a tod@s!
Con el reciente lanzamiento de macOS 10.15, Apple ha reforzado su mecanismo de control con una tecnología llamada Gatekeeper, que requiere que los archivos ejecutables deban ser validados. Ahora mismo, los productos de InterSystems no están soportados para ser utilizados en macOS 10.15 y los ejecutables no han sido validados. (Os recordamos que los productos de InterSystems solo están soportados en macOS como una plataforma de desarrollo).
InterSystems está trabajando para ofrecer la compatibilidad con macOS 10.15 en las siguientes versiones de InterSystems IRIS, InterSystems IRIS for Health, Caché y Ensemble. Hasta ese momento, recomendamos no utilizar los productos de InterSystems en macOS 10.15. Otra opción es ejecutar InterSystems IRIS en contenedores Docker.
Para cualquier duda o consulta sobre este aviso, el Centro de Soporte Internacional está a vuestra disposición. Para versiones anteriores a IRIS, ¿Va a existir actualizaciones para macOS 10.15? ¿A qué te refieres con versiones anteriores a IRIS? ¿Caché o Ensemble? En ambos casos el problema es el mismo. La recomendación por ahora sería usar Docker o Máquina Virtual. Me refiero a Ensemble 2017.2. Es una versión que no va en Docker como IRIS, y preguntaba que si se sacará también algún parche para que sea compatible con esta versión de Mac. En caso contrario se tendrá que trabajar bajo máquina virtual
Artículo
Ricardo Paiva · 7 nov, 2019
¡Hola!
Creo que lo más sencillo es (trabajando con un csv delimitado por ";"):
set file = ##class(%File).%New( "data.csv" )
set sc = file.Open( "R" )
if $$$ISERR(sc) quit ; or do smth
while 'file.AtEnd {
set str=file.ReadLine()
for i=1:1:$length( str, ";" ) {
set id=$piece( str, ";" ,i )
write !, id // or do smth
}
}
do file.Close()
Opciones posibles:
Distintas variantes de manejo de errores con código sc.
Introducir un bucle while dentro de un bloque try/catch.
¿Cuál es la tuya?
Anuncio
Esther Sanchez · 14 nov, 2019
¡Hola Comunidad!
Os traemos un nuevo vídeo del Global Summit de este año, disponible en el Canal de YouTube de la Comunidad de Desarrolladores en inglés:
⏯ Adopción de InterSystems IRIS
En el vídeo, se muestra la Guía de Adopción de InterSystems IRIS, y se describe el proceso de migración de Caché y/o Ensemble a InterSystems IRIS. También se trata brevemente el proceso de conversión para aplicaciones actuales basadas en Caché o Ensemble.
Aprende: InterSystems ayuda a sus clientes en la adopción de InterSystems IRIS.Ponente: @Andreas.Dieckow, Principal Product Manager, InterSystems
Además...
¿Has echado un vistazo al canal de YouTube de la Comunidad de Desarrolladores en inglés? Hemos creado una lista de distribución dedicada al Global Summit 2019 y otra lista con todas las presentaciones inaugurales. Ambas listas se van actualizando poco a poco.
¡Esperamos que os resulte útil!
Anuncio
Esther Sanchez · 3 dic, 2019
¡Hola Comunidad!
¡Tenemos buenas noticias para todos los miembros hispanohablantes de la Comunidad InterSystems! A partir de ahora, obtendréis puntos por participar en la Comunidad de Desarrolladores en español!
Y para conseguir los puntos, solo tenéis que daros de alta en Global Masters, el Programa de Fidelización de InterSystems. (Si ya estáis dados de alta en Global Masters, ya sabéis que los puntos se añaden a vuestros perfiles de forma automática).
Además... ahora obtendréis el doble de puntos por hacer una pregunta, responder una pregunta, hacer un comentario, publicar un artículo, traducir un artículo o revisar la traducción de un artículo en la Comunidad de Desarrolladores (CD) en español!
Echad un vistazo a los detalles más abajo.
✅ Publicaciones y comentarios
Por publicar un artículo / hacer una pregunta / responder una pregunta / dejar un comentario en la CD en español, obtendréis el doble de puntos.
60 puntos por cada pregunta, respuesta o comentario y 200 puntos por cada artículo.
✅ Traducciones
Por traducir artículos, preguntas o anuncios de inglés a español, que nos ayuden a aumentar el conocimiento de la tecnología de InterSystems en español.
50 puntos por cada traducción. Y por la primera traducción, obtendréis una insignia de traductor (*) del Nivel Participante!
Aquí te explicamos cómo hacer una traducción >>.
(*) Los puntos se pueden canjear por premios y regalos. Además, los puntos permiten conseguir insignias e ir subiendo de nivel, haciendo que se pueda optar a mejores premios y regalos. Aquí podéis ver los cinco niveles de Global Masters y las insignias que podéis obtener en cada nivel.
¿Os animáis? ¡Registraos en Global Masters! Y saldréis ganando... 🏆
Aquí tenéis más información sobre Global Masters:
Descripción general de Global Masters
Cómo obtener puntos en Global Masters
¿Alguna duda? Añadid un comentario a este post con vuestras preguntas y os contestaremos encantados.
Artículo
Alberto Fuentes · 16 dic, 2019
En [InterSystems IRIS 2019.1.4](https://es.community.intersystems.com/post/ya-están-disponibles-intersy...) se incluye ya el servicio `/api/monitor`, que permite acceder a métricas de IRIS en formato **_Prometheus_**.
Esto es una gran noticia para aquellos interesados en utilizar métricas de IRIS como parte de su solución de monitorización y alertas. Este servicio (API) es un componente del nuevo **_System Alerting and Monitoring (SAM)_** que se liberará en próximas versiones de InterSystems IRIS.
> Sin embargo, no es necesario esperar a que se libere _System Alerting and Monitoring (SAM)_ para empezar a planificar y probar esta API para monitorizar tus instancias de IRIS. En próximos artículos trataremos en profundidad las métricas disponibles, su significado y también construiremos cuadros de mando de ejemplo interactivos. Pero en primer lugar, vamos a comenzar con algunas cuestiones básicas.
IRIS (y Caché) está siempre capturando decenas de métricas sobre sí mismo y la plataforma en la que está ejecutándose. Siempre han existido [diferentes maneras de capturar estas métricas para monitorizar IRIS o Caché](https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GCM). En la práctica no muchas instalaciones utilizan las soluciones incluidas en IRIS / Caché. Por ejemplo, el _History Monitor_ ha estado disponible desde hace tiempo como base de datos histórica de rendimiento y utilización del sistema. Sin embargo, no había una manera demasiado obvia de aprovechar estas métricas en tiempo real.
Las soluciones construidas sobre la plataforma InterSystems IRIS están pasando de una sola aplicación monolítica ejecutándose en unas pocas instancias en las propias instalaciones de una organización a ser soluciones distribuidas desplegadas en cualquier parte. Para muchos casos de uso, las opciones de monitorización de IRIS existentes no se terminan de adaptar a estos nuevos paradigmas. Para solventar este problema, en lugar de reinventar la rueda, InterSystems utilizará soluciones conocidas y bien probadas del mundo open source para monitorización y alertas.
## Prometheus
Prometheus es una solución open source de monitorización muy conocida y ampliamente adoptada. Dispone de una gran variedad de plugins. Está diseñada para poder trabajar en entornos de _cloud_ pero también resulta igual de útil para aplicaciones desplegadas en nuestras propias instalaciones.
Los plugins incluyen sistemas operativos, servidores web como Apache y otras muchas aplicaciones. Prometheus se utiliza generalmente junto con un cliente _front-end_ o de presentación, como por ejemplo _Grafana_, que provee una interfaz gráfica que es extremadamente adaptable a nuestras necesidades.
## Grafana
Grafana es también open source. Conforme esta serie de artículos progrese, pasaremos ejemplos de plantillas de cuadros de mando para escenarios típicos. Podrás utilizar esos ejemplos como base para diseñar los cuadros de mando que te interesen.
El gran potencial de estas herramientas surge cuando combinas las métricas de IRIS en el contexto de las métricas de tu propia solución. Desde los componentes de la plataforma donde se ejecuta, el sistema operativo, IRIS y especialmente cuando además se añade instrumentación para monitorizar tus propias aplicaciones.
## ¿No he visto esto antes en algún sitio?
Monitorizar IRIS / Caché con Prometheus y Grafana no es algo nuevo. Se han utilizado estas aplicaciones durante años. Si buscas en la _Comunidad de Desarrolladores_ el término "Prometheus" encontrarás otros artículos como por ejemplo [estos excelentes artículos de Mikhail Khomenko](https://community.intersystems.com/post/making-prometheus-monitoring-int...) que muestran cómo exponer métricas de Caché para utilizarlas con Prometheus.
> La diferencia es que ahora la API `/api/monitor` está incluida y habilitada por defecto. No necesitas incluir código para exponer estas métricas.
# Introducción rápida a Prometheus
A continuación vamos a hacer una primera orientación rápida a Prometheus y su terminología. Vamos a verlo a alto nivel y a preparar el trabajo de base que servirá para dejar la puerta abierta para que penséis cómo visualizar y consumir las métricas de IRIS o de otras fuentes.
Prometheus funciona obteniendo datos en formato de serie temporal expuestos por aplicaciones a través de una URL (por ejemplo la API de `/api/monitor`). Existen librerías de exportadores y clientes para muchos lenguajes, frameworks y aplicaciones open source — por ejemplo para servidores web como Apache, distintos sistemas operativos, docker, Kubernetes, bases de datos y ahora IRIS —.
Los exportadores se utilizan para instrumentalizar aplicaciones y servicios de manera que expongan (hagan accesible) las métricas en una URL. Los componentes estándar como los servidores web, bases de datos y demás se soportan por los exportadores _core_. Existen otros muchos exportadores open source disponibles en la comunidad Prometheus.
## Terminología Prometheus
Estos son algunos términos que vamos a manejar:
- Los **destinos** son aquellos servicios que quieres monitorizar, como un servidor, una aplicación o un servicio como Apache, IRIS o tu propia aplicación.
- Prometheus interroga a estos destinos utilizando HTTP para obtener métricas en formato de serie temporal.
- Los **datos en formato de serie temporal** se exponen por las aplicaciones, como por ejemplo IRIS, o través de exportadores.
- Los **exportadores** se utilizan para aquellos elementos que no podemos controlar como por ejemplo métricas del kernel de Linux.
- Los datos en formato de serie temporal resultantes se almacenan localmente en el servidor de Prometheus en una base de datos\*\*.
- La base de datos de series temporales se puede consultar utilizando un lenguaje de consulta optimizado para ello **PromQL**. Utilizaremos este lenguaje para crear alertas o desde una aplicación cliente como Grafana para mostrar las métricas en un cuadro de mando.
>\*\* **Spoiler Alert!** Por razones de seguridad, escalabilidad, alta disponibilidad y eficiencia, en la nueva solución **_System Alerting and Monitoring (SAM)_** la base de datos utilizada para almacenar las series temporales de Prometheus será InterSytems IRIS! El acceso a la base de datos de Prometheus (IRIS) será transparente y no supondrá ninguna circunstancia especial para acceder desde otras aplicaciones como Grafana.
### Modelo de datos de Prometheus
Las métricas que retorna la API `/api/monitor` están en formato Prometheus. Prometheus utiliza un formato simple basado en una métrica por línea:
[ (time n, value n), ....]
Estas métricas pueden etiquetarse como parejas clave-valor. Las etiquetas son una forma muy potente de filtrar métricas y dimensiones. Por ejemplo, vamos a examinar esta métrica del servicio`/api/monitor` que retorna la cantidad de espacio libre para journal:
iris_jrn_free_space{id="WIJ",dir=”/fast/wij/"} 401562.83
El identificador indica qué métrica es y de dónde viene:
iris_jrn_free_space
Se pueden utilizar diferentes etiquetas para decorar las métricas, y así utilizarlas a la hora de filtrar y consultar. En el ejemplo, podemos ver el WIJ y el directorio donde se guarda el propio WIJ:
id="WIJ",dir="/fast/wij/"
Y finalmente, observamos también un valor: `401562.83` (MB).
## ¿Qué métricas tenemos disponibles para IRIS?
En la [documentación](https://docs.intersystems.com/iris20194/csp/docbook/Doc.View.cls?KEY=GCM...) aparece la lista de las métricas disponibles. Aunque también puedes simplemente consultar la API en el endpoint `/api/monitor/metrics`para que te devuelva la lista de las métricas.
# ¿Qué debería monitorizar?
Ten en cuenta los siguientes puntos a la hora de pensar cómo debes monitorizar tus sistemas y aplicaciones.
Cuando te sea posible, utiliza métricas que afecten a los usuarios:
* A los usuarios no les importa que una de tus máquinas esté corta de CPU.
* A los usuarios sí que les importa si el servicio que utilizan es lento o está teniendo errores.
* En tus cuadros de mando principales céntrate en métricas de alto nivel que impacten directamente en los usuarios.
Evita construir una pantalla llena de gráficas en tus cuadros de mando:
* Los humanos, en general, no podemos asimilar demasiados datos a la vez.
* Simplifica y utiliza por ejemplo un cuadro de mando por servicio.
Piensa en términos de servicios, no de máquinas:
* Una vez hayas aislado un problema a un servicio, podrás profundizar y ver realmente cuál es la máquina que presenta el problema.
# Referencias
**Documentación y descargas**: [Prometheus](https://prometheus.io "Prometheus") y [Grafana](https://grafana.com "Grafana").
[@Murray Oldfield](https://community.intersystems.com/user/murray-oldfield) presentó una sesión sobre _SAM_ (incluyendo Prometheus y Grafana) en el pasado **InterSystems Global Summit 2019**. Encontrarás más información en [InterSystems Learning Services](https://learning.intersystems.com "Learning Services") buscando el término "System Alerting and Monitoring Made Easy".
Anuncio
Esther Sanchez · 18 feb, 2020
¡Hola Comunidad!
Tenemos un nuevo vídeo, disponible en el canal de YouTube de la Comunidad de Desarrolladores en inglés, grabado por @Stefan.Wittmann:
⏯ InterSystems IRIS soporta todas las herramientas para desarrolladores
Stefan Wittmann, Product Manager de InterSystems destaca cómo la plataforma de datos InterSystems IRIS soporta todos los lenguajes de programación y las plataformas y herramientas para el desarrollo de software.
Podéis probar InterSystems IRIS aquí: https://www.intersystems.com/try
Artículo
Federico Coda Zabetta · 29 jun, 2020
Transforma fácilmente un archivo CSV en una vista previa de DeepSee: la plataforma de inteligencia de negocios de InterSystems.
Puedes encontrar AnalyzeThis en InterSystems Open Exchange. Utiliza el enlace de descarga para ir a GitHub y comienza a instalar el proyecto. Sigue las instrucciones de la sección Installation del README de GitHub.
Después de la instalación, anda al Portal de Usuario desde el Portal de Gestión:
Una vez allí, se habrá agregado un nuevo enlace al que deberás darle clic y luego seleccionar New (nuevo) para comenzar:
Usa Browse (explorar) para elegir el archivo CSV a importar:
Haz clic en Next (siguiente) para obtener una vista previa de los datos y selecciona Measure (medida) o Dimension (dimensión):
Por definición, las medidas (Measures) son valores que son calculados para cada línea del archivo. Las dimensiones (Dimensions) son los valores sobre los cuales se agrupan las líneas del archivo. De esta manera, si tenemos un archivo con precios de productos, la medida (measures) puede ser el precio promedio (calculable para cada línea), y una dimensión puede ser la categoría del producto (por la cuál vamos a agrupar diversas líneas del archivo).
También puede elegir ocultar las propiedades sobre las cuales no nos interesa crear dimensiones o medidas. Por ejemplo, "ProviderId" es única, es decir, existen tantos valores distintos como líneas del archivo, por lo que no sería un buen valor por el cual agrupar. Tampoco queremos ningún tipo de suma o agregación de este número, por lo que no lo incluiremos aquí:
Todas las propiedades son, de forma predeterminada, una dimensión. Encontraremos algunas propiedades que deseemos cambiar a medidas:
Aquí podemos ver que TotalDischarges (altas totales), AverageCoveredCharges (cargos cubiertos promedio), AverageTotalPayments (pagos totales promedio) y AverageMedicarePayments (pagos de Medicare promedio) serían buenos valores para agregar. Los convertiremos en medidas:
También sabemos que estas son cantidades en dólares, por lo que cambiaremos su tipo de entero (integer) a divisa (currency):
Ahora que ya estamos contentos con nuestros datos, podemos hacer clic en Import (importar). Esto iniciará el procesamiento de los datos, tal como se muestra a continuación:
Una vez finalizada esta etapa (la velocidad depende de la cantidad de datos a procesar) veremos unos botones nuevos en el cuadro de diálogo:
Aquí haremos clic en Sample Dashboard (tablero de muestra) para ver la muestra generada en base a nuestros datos:
Ahora podemos colocar nuestros datos en un cubo, para poder empezar a explorar las capacidades analíticas en pocos minutos.
Si encuentras algún error durante este proceso, no dudes en escribir a psteiwer@intersystems.com (en inglés), o a Federico.Coda.Zabetta@InterSystems.com (en español, italiano, francés o inglés), o crear un informe de error en GitHub. Para consultas generales, por favor deja tu comentario en este artículo para que otros puedan beneficiarse de la información.
Anda a InterSystems Open Exchange y descarga AnalyzeThis ahora mismo!
Anuncio
Esther Sanchez · 24 abr, 2020
¡Hola Comunidad!
Hemos añadido dos nuevas etiquetas para clasificar las publicaciones:
➡️ InterSystems API Manager (IAM)➡️ IntegratedML
Aquí podéis ver el listado completo de etiquetas.
Y podéis dejarnos sugerencias para añadir nuevas etiquetas 👍🏼
Anuncio
Esther Sanchez · 3 abr, 2020
¡Hola Comunidad!
Os traemos un vídeo del evento ConferencIA que realizamos en febrero en Madrid. También está disponible en el canal de YouTube de la Comunidad de Desarrolladores en español:
⏯ Estrategia BI & Analytics con InterSystems IRIS Data Platform
En esta ponencia en español, Pierre-Yves presenta la estrategia de BI y de Analytics de InterSystems, basada en dos ejes: acelerar la IA e incorporar la IA. Muestra la oferta actual de la plataforma en este área y también su futuro próximo.
Aprendo: Casos de usos de BI & Analytics con InterSystems Data Platform y una demo para ilustrarlo.
Ponente: @Pierre-Yves.Duquesnoy , Senior Sales Engineer, InterSystems
También podéis ver la ponencia aquí comunidadintersystems.com o suscribiros al canal de Yoube de la Comunidad en español.
¡Esperamos que os resulte útil! 👍🏼
Anuncio
Esther Sanchez · 1 jun, 2020
¡Hola Comunidad!
Por si os lo perdisteis... o queréis volver a verlo, ya está disponible la grabación del webinar "Implementar integraciones con .NET o Java sobre InterSystems IRIS" que realizamos el pasado 20 de mayo.
Podéis verlo aquí: Grabación webinar Integraciones con .NET o Java sobre InterSystems IRIS >>
Esperamos que os resulte útil