Apresentando o IRIS Tool and Data Manager: Integrando o InterSystems IRIS com Python, Pandas e Streamlit
Olá a todos! 👋
Estou animado em compartilhar o projeto que enviei para o atual InterSystems .Net, Java, Python, and JavaScript Contest — ele se chama IRIStool and Data Manager, e você pode encontrá-lo no InterSystems Open Exchange e na minha página do GitHub.
Visão Geral
O projeto envolve um conjunto de ferramentas Python abrangente, IRIStool, que integra perfeitamente DataFrames do pandas com bancos de dados InterSystems IRIS. Ele também inclui uma interface web baseada em Streamlit, o Data Manager, que permite explorar, visualizar e gerenciar seus dados do IRIS sem precisar escrever uma única linha de SQL.
Esta prova de conceito demonstra como o InterSystems IRIS pode se conectar facilmente com ferramentas modernas do Python, como pandas e plotly, graças ao IRIS Native Python SDK, permitindo manipulação e visualização avançadas de dados.
O projeto consiste em dois componentes principais:
- 🧠 IRIStool — Um módulo Python que fornece uma interface estilo pandas para interagir com bancos de dados IRIS
- 📊 IRIS Data Manager — Um aplicativo web Streamlit para exploração, visualização e gerenciamento intuitivo de dados
IRIStool (Módulo Python)
A classe IRIStool traz a flexibilidade do pandas para o IRIS. Ela permite que desenvolvedores Python interajam com tabelas do IRIS de forma tão fácil quanto com DataFrames.
Recursos Principais
- Conversão de DataFrame ↔ Tabela IRIS com inferência automática de tipo
- Operações CRUD e criação de views SQL
- Exploração de esquemas e inspeção de metadados
- Suporte para índices vetoriais padrão e HNSW para busca semântica
- Suporte a gerenciador de contexto (context manager) para manipulação de conexão segura e automática
Com o IRIStool, você pode se mover sem esforço entre o Python e o IRIS.
IRIS Data Manager (Interface Streamlit)
O IRIS Data Manager é uma interface visual sem código (no-code) desenvolvida com Streamlit, projetada para tornar o gerenciamento de dados no IRIS acessível a todos, desde desenvolvedores até analistas.
O Que Você Pode Fazer
- Configurar e testar conexões de banco de dados diretamente pela barra lateral
- Fazer upload e importar arquivos CSV, Excel ou JSON
- Explorar tabelas e esquemas visualmente
- Filtrar dados, agrupar resultados e aplicar agregações
- Gerar visualizações interativas com plotly
- Consultar seus dados usando Text-to-SQL alimentado por IA, suportado pelo Ollama rodando localmente — o que significa que seus dados nunca saem do seu ambiente
Exemplo de Início Rápido com IRIStool
Aqui está um exemplo completo mostrando como ir de um DataFrame do pandas para uma tabela ativa no InterSystems IRIS, realizar inserções e atualizações, executar consultas e criar uma view para análise, tudo utilizando o IRIStool.
import pandas as pd
from datetime import datetime
from utils.iristool import IRIStool
# Connect to InterSystems IRIS
with IRIStool(
host="localhost",
port=1972,
namespace="USER",
username="_SYSTEM",
password="SYS"
) as iris:
# Create initial data as a pandas DataFrame
employees = pd.DataFrame([
{"ID": 1, "Name": "Alice", "Age": 29, "Department": "IT", "HireDate": datetime(2021, 5, 10)},
{"ID": 2, "Name": "Bob", "Age": 34, "Department": "HR", "HireDate": datetime(2019, 11, 3)},
{"ID": 3, "Name": "Carol", "Age": 25, "Department": "Finance", "HireDate": datetime(2023, 2, 15)}
])
# Convert the DataFrame into an IRIS table
iris.df_to_table(
df=employees,
table_name="Employee",
primary_key="ID",
exist_ok=True,
drop_if_exists=True
)
print("DataFrame successfully uploaded to IRIS")
# Insert additional records
iris.insert_many("Employee", [
{"ID": 4, "Name": "Dave", "Age": 31, "Department": "R&D", "HireDate": datetime(2020, 7, 18)},
{"ID": 5, "Name": "Eve", "Age": 28, "Department": "Marketing", "HireDate": datetime(2022, 3, 5)}
])
print("New rows inserted")
# Fetch and display all employees older than 28
df = iris.fetch("""
SELECT ID, Name, Department, Age, HireDate
FROM Employee
WHERE Age > ?
""", [28])
print("\nEmployees older than 28:\n", df)
# Update a record (Bob moves from HR to Operations)
iris.update(
table_name="Employee",
new_values={"Department": "Operations"},
filters={"Name": "Bob"}
)
print("Updated Bob’s department to Operations")
# Create a view showing the average age per department
iris.create_view(
view_name="AvgAgeByDept",
sql="""
SELECT Department, AVG(Age) AS AvgAge
FROM Employee
GROUP BY Department
"""
)
avg_age = iris.fetch("SELECT * FROM AvgAgeByDept")
print("\n Average age by department:\n", avg_age)
Exemplos de fluxos de trabalho da interface do IRIS Data Manager
O IRIS Data Manager é construído sobre o IRIStool e fornece uma interface sem código (no-code) para todas as etapas de manipulação de dados, desde a ingestão até a visualização e análise. É a maneira mais rápida de explorar e interagir com seus dados do InterSystems IRIS diretamente pelo navegador.
To start the app, run the following command from your project root:
streamlit run app.py1. Importar dados
- Abra a aba Upload Data
- Arraste e solte um arquivo (formatos suportados incluem
.json,.csv,.xlsxe.xls) para fazer o upload dos dados - Configure os índices (há suporte para índices padrão ou vetoriais)
- Selecione o esquema e o nome da tabela — por padrão, os dados serão armazenados no esquema
SQLUser - Opcionalmente, defina uma chave primária
- Clique em “Import to IRIS” para fazer o upload e persistir seu conjunto de dados
O IRIS Data Manager detecta automaticamente os tipos de dados, cria a tabela correspondente no IRIS e carrega os dados perfeitamente.
Neste exemplo, estou importando o banco de dados de distúrbios do sono, disponível no Kaggle:
.png)
2. Visualizar dados
- Navegue até a aba Explore & Analyze
- Escolha sua tabela e esquema
- Visualize análises dos seus dados tanto para colunas numéricas quanto categóricas
.png)
.png)
- Explore os dados de forma interativa utilizando gráficos do Plotly
.png)
.png)
.png)
.png)
- Agrupe e agregue dados diretamente pela interface — sem necessidade de SQL
.png)
.png)
.png)
- Na aba Text to SQL, você pode consultar seus dados apenas fazendo perguntas em inglês simples.
-
Digite perguntas como:
“Show the average sleep duration grouped by occupation and gender”
“What is the occupation with the best sleep quality?"
-
- O modelo (executando localmente via Ollama) traduz a pergunta para SQL
- A consulta é executada em tempo real na sua instância do IRIS e os resultados são exibidos
.png)
.png)
🔗 Experimente
👉 Repositório GitHub:IRIS Tool and Data Manager
👉 Vote no projeto no InterSystems Developer Community Contest!