#Modelo de Dados

0 Seguidores · 13 Postagens

Um modelo de banco de dados é um tipo de modelo de dados que determina a estrutura lógica de um banco de dados e, fundamentalmente, determina como os dados podem ser armazenados, organizados e manipulados. O exemplo mais popular de um modelo de banco de dados é o modelo relacional, que usa um formato baseado em tabela.

Saber mais.

Artigo Heloisa Paiva · Fev. 27, 2025 6m read

A InterSystems está na vanguarda da tecnologia de bancos de dados desde sua criação, sendo pioneira em inovações que consistentemente superam concorrentes como Oracle, IBM e Microsoft. Ao se concentrar em um design de kernel eficiente e adotar uma abordagem intransigente em relação ao desempenho de dados, a InterSystems criou um nicho em aplicações de missão crítica, garantindo confiabilidade, velocidade e escalabilidade.

A História de Excelência Técnica

0
0 39
Artigo Rochael Ribeiro · jan 24, 2024 6m read

No cenário de dados atual, as empresas enfrentam vários desafios diferentes. Um deles é fazer análises sobre uma camada de dados unificada e harmonizada disponível para todos os consumidores. Uma camada que possa oferecer as mesmas respostas às mesmas perguntas, independentemente do dialeto ou da ferramenta usada. A Plataforma de Dados InterSystems IRIS responde a isso com um complemento de Análise Adaptativa que pode fornecer essa camada semântica unificada. Há muitos artigos no DevCommunity sobre como usá-lo por ferramentas de BI. Este artigo abordará como consumi-lo com IA e também como recuperar alguns insights. Vamos ir por etapas...

O que é a Análise Adaptativa?

Você pode facilmente encontrar uma definição [no site developer community] ​(https://community.intersystems.com/tags/adaptive-analytics) Resumindo, ela pode fornecer dados de forma estruturada e harmonizada para diversas ferramentas de sua escolha para consumo e análise posterior. Ela oferece as mesmas estruturas de dados a várias ferramentas de BI. Mas... Ela também pode oferecer as mesmas estruturas de dados para suas ferramentas de IA/ML!

A Análise Adaptativa tem um componente adicional chamado AI-LINK que constrói essa ponte entre a IA e a BI.

O que é exatamente o AI-Link ?

É um componente Python criado para permitir a interação programática com a camada semântica para os fins de otimizar os principais estágios do fluxo de trabalho do aprendizado de máquina (ML) (por exemplo, engenharia de características).

Com o AI-Link, você pode:

  • acessar programaticamente características do seu modelo de dados analítico;
  • fazer consultas, explorar dimensões e medidas;
  • alimentar pipelines de ML; ... e enviar os resultados de volta à camada semântica para que sejam consumidos novamente por outras (por exemplo, pelo Tableau ou Excel).

Como é uma biblioteca Python, ela pode ser usada em qualquer ambiente Python. Incluindo Notebooks. Neste artigo, darei um exemplo simples de como alcançar a solução de Análise Adaptativa a partir do Jupyter Notebook com a ajuda do AI-Link.

Aqui está o repositório git com o Notebook completo como exemplo: https://github.com/v23ent/aa-hands-on

Pré-requisitos

Para os passos a seguir, presume-se que você concluiu os pré-requisitos:

  1. Solução de Análise Adaptativa em funcionamento (com a Plataforma de Dados IRIS como armazém de dados)
  2. Jupyter Notebook em funcionamento
  3. Conexão entre 1. e 2. pode ser estabelecida

Etapa 1: configuração

Primeiro, vamos instalar os componentes necessários em nosso ambiente. Isso baixará alguns pacotes que são necessários para que as próximas etapas funcionem. 'atscale' - nosso pacote principal para a conexão 'prophet' - pacote de que precisaremos para fazer previsões

pip install atscale prophet

Em seguida, precisamos importar as principais classes que representam alguns conceitos importantes da nossa camada semântica. Client - classe que usaremos para estabelecer uma conexão com a Análise Adaptativa; Project - classe para representar projetos dentro da Análise Adaptativa; DataModel - classe que representará nosso cubo virtual;

from atscale.client import Client
from atscale.data_model import DataModel
from atscale.project import Project
from prophet import Prophet
import pandas as pd 

Etapa 2: conexão

Agora, deve estar tudo pronto para estabelecer uma conexão com nossa origem de dados.

client = Client(server='http://adaptive.analytics.server', username='sample')
client.connect()

Vá em frente e especifique os detalhes de conexão da sua instância da Análise Adaptativa. Quando for solicitada a organização, responda na caixa de diálogo e insira sua senha da instância da AtScale.

Com a conexão estabelecida, você precisará selecionar seu projeto da lista de projetos publicados no servidor. Você verá a lista de projetos como um prompt interativo, e a resposta deve ser o ID inteiro do projeto. O modelo de dados será selecionado automaticamente se for o único.

project = client.select_project()   
data_model = project.select_data_model()

Etapa 3: explore seu conjunto de dados

Há vários métodos preparados pela AtScale na biblioteca de componentes do AI-Link. Eles permitem explorar seu catálogo de dados, consultar dados e até ingerir alguns dados de volta. A documentação da AtScale tem uma vasta referência da API, descrevendo tudo o que está disponível. Primeiro, vamos ver qual é o nosso conjunto de dados ao chamar alguns métodos de "data_model":

data_model.get_features()
data_model.get_all_categorical_feature_names()
data_model.get_all_numeric_feature_names()

A saída será algo assim image

Depois de olhar um pouco, podemos consultar os dados em que realmente temos interesse usando o método "get_data". Ele retornará um DataFrame do pandas com os resultados da consulta.

df = data_model.get_data(feature_list = ['Country','Region','m_AmountOfSale_sum'])
df = df.sort_values(by='m_AmountOfSale_sum')
df.head()

Que mostrará seu dataframe: image

Vamos preparar um conjunto de dados e exibi-lo rapidamente no gráfico

import matplotlib.pyplot as plt

# Estamos pegando as vendas para cada data
dataframe = data_model.get_data(feature_list = ['Date','m_AmountOfSale_sum'])

# Crie um gráfico de linhas
plt.plot(dataframe['Date'], dataframe['m_AmountOfSale_sum'])

# Adicione rótulos e um título
plt.xlabel('Days')
plt.ylabel('Sales')
plt.title('Daily Sales Data')

# Exiba o gráfico
plt.show()

Saída: image

Etapa 4: previsão

A próxima etapa seria obter um valor da ponte do AI-Link - vamos fazer algumas previsões simples!

# Carregue os dados históricos para treinar o modelo
data_train = data_model.get_data(
    feature_list = ['Date','m_AmountOfSale_sum'],
    filter_less = {'Date':'2021-01-01'}
    )
data_test = data_model.get_data(
    feature_list = ['Date','m_AmountOfSale_sum'],
    filter_greater = {'Date':'2021-01-01'}
    )

Obtemos 2 conjuntos de dados diferentes aqui: para treinar e testar nosso modelo.

# Para a ferramenta, escolhemos fazer a previsão "Prophet", em que precisamos especificar 2 colunas: "ds" e "y"
data_train['ds'] = pd.to_datetime(data_train['Date'])
data_train.rename(columns={'m_AmountOfSale_sum': 'y'}, inplace=True)
data_test['ds'] = pd.to_datetime(data_test['Date'])
data_test.rename(columns={'m_AmountOfSale_sum': 'y'}, inplace=True)

# Inicialize e ajuste o modelo Prophet
model = Prophet()
model.fit(data_train)

Em seguida, criamos outro dataframe para acomodar nossa previsão e exibi-la no gráfico

# Crie um dataframe futuro para previsão
future = pd.DataFrame()
future['ds'] = pd.date_range(start='2021-01-01', end='2021-12-31', freq='D')

# Faça previsões
forecast = model.predict(future)
fig = model.plot(forecast)
fig.show()

Saída: image

Etapa 5: writeback

Depois de obter a previsão, podemos colocá-la de volta no armazém de dados e adicionar uma agregação ao nosso modelo semântico para que reflita para outros consumidores. A previsão estaria disponível por qualquer outra ferramenta de BI para usuários empresariais e analistas de BI. A previsão em si será colocada em nosso armazém de dados e armazenada lá.

from atscale.db.connections import Iris
db = Iris(
    username,
    host,
    host,
    driver,
    schema, 
    schema,
    password=None, 
    warehouse_id=None
    )

data_model.writeback(dbconn=db,
                    table_name= 'SalesPrediction',
                    DataFrame = forecast)

data_model.create_aggregate_feature(dataset_name='SalesPrediction',
                                    column_name='SalesForecasted',
                                    name='sum_sales_forecasted',
                                    aggregation_type='SUM')

Fim

É isso! Boa sorte com suas previsões!

0
0 65
Anúncio Rochael Ribeiro · Mar. 23, 2022

Olá Desenvolvedores!

Aqui estão os bonus tecnológicos para o Concurso de Globais InterSystems 2022 que irão lhes dar pontos extra na votação:

  • Implementação de Modelo de Dados - 5
  • Implementação de índice Funcional - 5
  • Uso do Data Move - 3
  • Python Nativo- 4
  • Uso de APIs de Globais  - 2
  • Uso de contêiner Docker - 2 
  • Implantação em pacote ZPM - 2
  • Demonstração Online - 2
  • Primeiro Artigo na Comunidade de Desenvolvedores - 2
  • Segundo Artigo na Comunidade de Desenvolvedores - 1
  • Validação da Qualidade de Código - 1
  • Vídeo no YouTube - 3

Vejam os detalhes abaixo.<--break-><--break->

0
0 80
Artigo Rochael Ribeiro · Fev. 21, 2022 2m read

Olá desenvolvedores!

Algumas vezes precisamos inserir ou fazer referência aos dados de classes persistentes diretamente através das globais.

E talvez muitos de vocês estejam esperando que a estrutura de dados da global com os registros seja:

^Sample.Person(Id)=$listbuild("",col1,col,2,...,coln).

Este artigo é um aviso que nem sempre isso é verdade. Não espere que sempre seja assim!

0
0 86
Artigo Rochael Ribeiro · Fev. 21, 2022 2m read

Olá Desenvolvedores!

Como você provavelmente percebeu, no IRIS 2021 os nomes das globais são randômicos.

E, se você criar classes do IRIS classes com DDL e quiser se certificar qual global foi criada, você provavelmente gostaria de escolher seu nome.

E, de fato, você consegue fazê-lo. 

Utilize WITH %CLASSPARAMETER DEFAULTGLOBAL='^GLobalName' na instrução CREATE Table para fazê-lo. Documentação. Veja o exemplo abaixo:

0
0 75
Artigo Henrique Dias · jan 13, 2022 5m read

Fala pessoal, tudo bem?

Espero que todos estejam bem, saudáveis e que tenham um excelente 2022!

Ao longo dos anos, eu trabalhei nos mais diferentes projetos e acabei me deparando com dataset super interessantes.

Mas, na maioria das vezes, os datasets utilizados para o trabalhar eram datasets dos clientes. Quando eu comecei a participar das competições nos últimos anos, eu comecei a vasculhar na web por datasets que eu possa chamar de meu 😄

Eu acabei coletando alguns dados, mas eu estava pensando, "Esses datasets são o suficiente para ajudar as outras pessoas?"

Então, trocando ideias com o @José Pereira para essa competição, nós decidimos por uma abordagem utilizando uma perspectiva diferente.

Nós pensamos em oferecer uma variedade de datasets de qualquer espécie de 2 fonte de dados famosas. Dessa forma, nós podemos empoderar vocês para encontrarem e instalarem o dataset desejado de uma forma rápido, fácil e indolor.

Socrata

Socrata Open Data API permite que você de forma programática possa acessar uma variedade de dados abertos de governos, organizações sem fins lucrativos e ONGs de todo o mundo.

Para esse release inicial, nós estamos usando as APIs Socrata para pesquisar e fazer download de um dataset específico.

Pode utilizar a ferramenta para API da sua preferência Postman, Hoppscotch

GET> https://api.us.socrata.com/api/catalog/v1?only=dataset&q=healthcare

This endpoint will return all healthcare related datasets, like the image below: Socrata Return Dataset

Agora, basta pegar o ID. Neste caso o ID é: "n9tp-i3k3"

Vamos para o terminal

IRISAPP>set api = ##class(dc.dataset.importer.service.socrata.SocrataApi).%New()

IRISAPP>do api.InstallDataset({"datasetId": "n9tp-i3k3", "verbose":true})

Compilation started on 01/07/2022 01:01:28 with qualifiers 'cuk'
Compiling class dc.dataset.imported.DsCommunityHealthcareCenters
Compiling table dc_dataset_imported.DsCommunityHealthcareCenters
Compiling routine dc.dataset.imported.DsCommunityHealthcareCenters.1
Compilation finished successfully in 0.108s.

Class name: dc.dataset.imported.DsCommunityHealthcareCenters
Header: Name VARCHAR(250),Description VARCHAR(250),Location VARCHAR(250),Phone_Number VARCHAR(250),geom VARCHAR(250)
Records imported: 26

Depois do comando acima, você pode conferir o seu dataset prontinho para uso!

Socrata Return Dataset

Kaggle

Kaggle, uma subsidiária do Google LLC, é uma comunidade online de cientistas de dados e profissionais de aprendizado de máquina. O Kaggle permite que os usuários encontrem e publiquem conjuntos de dados, explorem e construam modelos em um ambiente de ciência de dados baseado na Web, trabalhem com outros cientistas de dados e engenheiros de aprendizado de máquina e participem de competições para resolver desafios de ciência de dados.

Em junho de 2017, Kaggle anunciou que ultrapassou 1 milhão de usuários registrados, ou Kagglers, e em 2021 tem mais de 8 milhões de usuários registrados. A comunidade abrange 194 países. É uma comunidade diversificada, desde aqueles que estão começando até muitos dos pesquisadores mais conhecidos do mundo.

Comunidade pequenininha hein!? 😂

Para usar os conjuntos de dados do Kaggle, você precisa se registrar no site. Depois disso, você precisa criar um token para usar a API do Kaggle.

Kaggle Token Creation

Agora, da mesma forma que fizemos com o Socrata, você pode utilizar a API para fazer a pesquisa e download do dataset.

GET> https://www.kaggle.com/api/v1/datasets/list?search=appointments

Kaggle Return Dataset

No Kaggle, ao invés de id utilizaremos o ref. Nesse exemplo o valor de ref é: "joniarroba/noshowappointments"

Os parâmetros abaixo "your-username", e "your-password" são parâmetros que o Kaggle fornece quando você cria o token para API.

IRISAPP>Set crendtials = ##class(dc.dataset.importer.service.CredentialsService).%New()

IRISAPP>Do crendtials.SaveCredentials("kaggle", "<your-username>", "<your-password>")

IRISAPP>Set api = ##class(dc.dataset.importer.service.kaggle.KaggleApi).%New()

IRISAPP>Do api.InstallDataset({"datasetId":"joniarroba/noshowappointments", "credentials":"kaggle", "verbose":true})

Class name: dc.dataset.imported.DsNoshowappointments
Header: PatientId INTEGER,AppointmentID INTEGER,Gender VARCHAR(250),ScheduledDay DATE,AppointmentDay DATE,Age INTEGER,Neighbourhood VARCHAR(250),Scholarship INTEGER,Hipertension INTEGER,Diabetes INTEGER,Alcoholism INTEGER,Handcap INTEGER,SMS_received INTEGER,No-show VARCHAR(250)
Records imported: 259

Pronto! Mais um dataset prontinho para uso

Kaggle Select

Graphic User Interface

Para facilitar as coisas, estamos oferecendo uma interface gráfica para instalar o dataset. Mas isso é algo que quero falar em nosso próximo artigo. Enquanto isso, você pode conferir uma prévia abaixo enquanto estamos dando aquele talento, antes do lançamento oficial:

Socrata Dataset list

Socrata Return Dataset

Video Demo

Se você está se perguntando como é fazer o download de um dataset grande, da uma olhada nesse video mostrando como é.... Agora... se +400.000 registros não forem o suficiente, que tal 1 MILHÃO DE REGISTROS?! Assista!

<iframe width="560" height="315" src="https://www.youtube.com/embed/0T8wXRsaJso" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Votação

Se você curtiu o app, por favor vote em iris-kaggle-socrata-generator!

https://openexchange.intersystems.com/contest/current

0
0 298
Job Gabriel Martin Fusco · Jul. 27, 2021

Bom dia!!!

Vaga Especialista de Integrações.

AFIP - Associação  Fundo de Incentivo à Pesquisa.

Requisitos 

* Conhecimentos avançado em Ensemble/Caché
* Integração com bancos Oracle /SQL Server

Será um diferencial ter atuação na área da saúde sistemas (LIS/HIS/RIS). Profissional deve atuar como líder técnico.

- Documentar estrutura dos sistemas;
- Participar de Reuniões técnicas com fornecedores/colaboradores;
- Responsável técnico pela arquitetura de integrações entre sistemas; 
- Responsável pela homologação de sistemas de terceiros;
- Responsável por manter catálogo de serviços de integração de dado;

0
0 160