O problema que esse workflow resolve
Organizações das áreas de saúde, varejo e ciências da vida acumulam volumes massivos de dados operacionais em data warehouses na nuvem, como o Snowflake. Esses sistemas armazenam e escalam informações com eficiência, mas transformar esses dados em previsões úteis ainda é um desafio real para a maioria das equipes.
O modelo tradicional de Aprendizado de Máquina (ML) exige equipes especializadas, longos ciclos de desenvolvimento e suporte pesado de engenharia. O resultado prático? Atrasos, gargalos e pouca margem para experimentação — justamente para as equipes de negócio que mais conhecem os dados e as perguntas que precisam ser respondidas.
Um workflow de ML sem código muda essa dinâmica. Com o Amazon SageMaker Canvas, é possível explorar conjuntos de dados, preparar features, construir modelos preditivos e gerar insights de forma visual — sem escrever uma linha de código e sem depender de recursos de ciência de dados. Analistas de negócio, donos de produto e times operacionais passam a acelerar a tomada de decisão mantendo a segurança e a governança corporativa.
Sobre esta série
Este é o primeiro artigo de uma série de três partes publicada pela AWS. A divisão é a seguinte:
- Parte 1 (este artigo): configuração da conta AWS e do ambiente Snowflake.
- Parte 2: conexão do Amazon SageMaker Canvas ao Snowflake para preparar os dados e construir um modelo de detecção de fraudes.
- Parte 3: envio das previsões ao Amazon QuickSight para criação de dashboards interativos e compartilhamento de insights com stakeholders.
O desafio de negócio que inspirou a solução
A solução descrita foi inspirada em uma organização real da área de saúde que havia acumulado anos de dados operacionais no Snowflake — transações de vendas, movimentação de produtos, interações com pacientes e métricas de desempenho regional. A base de dados era sólida, mas transformar esses dados em insights preditivos continuava sendo um obstáculo.
As equipes de negócio queriam prever demanda por múltiplas categorias de produtos, entender padrões sazonais e regionais de consumo, e visualizar insights orientados por ML diretamente nas ferramentas de Inteligência de Negócios (BI) para apoiar decisões mais rápidas. O problema: a organização não tinha capacidade suficiente de ciência de dados para atender a essas demandas. Cada nova solicitação de previsão ou análise exigia especialistas em engenharia ou ML, resultando em longos ciclos de desenvolvimento e pouca margem para experimentação.
O gap era claro: as equipes de negócio entendiam as perguntas e os dados, mas não tinham uma forma prática de construir e iterar sobre modelos preditivos por conta própria. Além disso, depois que as previsões eram geradas, era necessário visualizá-las e compartilhá-las com stakeholders por meio de dashboards interativos.
A solução precisava funcionar nativamente com os dados existentes no Snowflake, visualizar previsões em ferramentas de BI já conhecidas e reduzir a dependência de recursos especializados — sem abrir mão de governança e segurança.
Visão geral da solução
Para preencher essa lacuna entre ambientes ricos em dados e equipes de negócio carentes de insights, a AWS descreve um workflow de ML sem código construído sobre o Amazon SageMaker Canvas. A abordagem não substitui a infraestrutura de dados existente — ela estende o valor dos investimentos em Snowflake, tornando o ML acessível a usuários não técnicos e conectando previsões diretamente a ferramentas de visualização.
O Amazon SageMaker Canvas oferece uma interface visual e intuitiva que se conecta diretamente ao Snowflake, permitindo preparar dados, construir modelos de ML e gerar previsões. Após o treinamento do modelo, é possível fazer o deploy para um Amazon SageMaker Endpoint diretamente da página de detalhes do modelo no Canvas, sem nenhuma configuração de infraestrutura. Quando o status do endpoint aparece como In service, as previsões sobre os dados de transações do Snowflake já podem ser geradas.
Para visualizar os resultados no Amazon QuickSight, utiliza-se a funcionalidade de previsões em lote (batch predictions) no Canvas para exportar o conjunto de dados com os scores para o Amazon Simple Storage Service (Amazon S3). O QuickSight então visualiza esses insights por meio de dashboards interativos, tornando as previsões de ML acessíveis aos stakeholders de toda a organização — sem pipelines customizados ou intervenção de cientistas de dados.
Os principais benefícios dessa arquitetura são:
- Democratização do acesso ao ML por meio de construção de modelos self-service sem necessidade de expertise em código.
- Preparação de dados simplificada com mais de 300 transformações visuais, mantendo a governança corporativa.
- Aceleração do tempo até o insight, reduzindo o desenvolvimento de modelos de meses para horas.
- Treinamento na infraestrutura gerenciada do Amazon SageMaker.
- Visualização interativa de previsões por meio de dashboards do Amazon QuickSight.
- Suporte a múltiplos tipos de problema de ML, incluindo regressão, classificação e previsão de séries temporais (time-series forecasting), tudo a partir de uma única solução.
Implementação técnica: configurando o ambiente Snowflake
Esta seção apresenta os passos práticos para configurar o ambiente Snowflake com dados de exemplo para detecção de fraudes.
Pré-requisitos
- Uma conta AWS.
- Uma conta Snowflake. Para criar uma conta gratuita, consulte Create a Snowflake Free Trial Account.
Criando o banco de dados no Snowflake
Para criar o banco de dados no Snowflake, acesse o painel do console Snowflake, clique no sinal de mais (+) no painel lateral esquerdo e selecione SQL worksheet. Um arquivo SQL em branco será aberto. Copie e cole os comandos SQL abaixo na planilha e execute-os:
-- Create database and warehouse
USE ROLE accountadmin;
CREATE OR REPLACE WAREHOUSE HOL_WH WITH WAREHOUSE_SIZE='X-SMALL';
CREATE OR REPLACE DATABASE FRAUD;
-- Use the database
USE DATABASE FRAUD;
-- Create the final fraud table with proper data types
CREATE OR REPLACE TABLE FRAUD.PUBLIC.FRAUD_TABLE (
id NUMBER,
trans_date_trans_time TIMESTAMP_NTZ(9),
cc_num NUMBER,
merchant VARCHAR,
category VARCHAR,
amt NUMBER(38,2),
first VARCHAR,
last VARCHAR,
gender VARCHAR,
street VARCHAR,
city VARCHAR,
state VARCHAR,
zip NUMBER,
lat NUMBER(38,15),
long NUMBER(38,14),
city_pop NUMBER(38,0),
job VARCHAR,
dob DATE,
trans_num VARCHAR,
unix_time NUMBER,
merch_lat NUMBER(38,15),
merch_long NUMBER(38,14),
is_fraud NUMBER
);
Em seguida, insira os dados de exemplo para detecção de fraudes com o comando abaixo:
-- Generate sample fraud detection data for 2020
INSERT INTO FRAUD.PUBLIC.FRAUD_TABLE
WITH raw_data AS (
SELECT
ROW_NUMBER() OVER (ORDER BY SEQ4()) as id,
DATEADD(minute, UNIFORM(0, 525600, RANDOM()), '2020-01-01 00:00:00'::TIMESTAMP_NTZ) as trans_date_trans_time,
UNIFORM(1, 1000, RANDOM()) as cc_num,
CONCAT('merchant_', UNIFORM(1, 500, RANDOM())) as merchant,
CASE UNIFORM(1, 14, RANDOM())
WHEN 1 THEN 'grocery_pos'
WHEN 2 THEN 'gas_transport'
WHEN 3 THEN 'shopping_net'
WHEN 4 THEN 'shopping_pos'
WHEN 5 THEN 'food_dining'
WHEN 6 THEN 'entertainment'
WHEN 7 THEN 'personal_care'
WHEN 8 THEN 'health_fitness'
WHEN 9 THEN 'travel'
WHEN 10 THEN 'kids_pets'
WHEN 11 THEN 'home'
WHEN 12 THEN 'misc_net'
WHEN 13 THEN 'misc_pos'
ELSE 'other'
END as category,
ROUND(UNIFORM(1, 1000, RANDOM()) + UNIFORM(0, 99, RANDOM())/100, 2) as amt,
CONCAT('FirstName', UNIFORM(1, 1000, RANDOM())) as first,
CONCAT('LastName', UNIFORM(1, 1000, RANDOM())) as last,
CASE UNIFORM(0, 1, RANDOM())
WHEN 0 THEN 'M'
ELSE 'F'
END as gender,
CONCAT(UNIFORM(1, 9999, RANDOM()), ' Main St') as street,
CASE UNIFORM(1, 10, RANDOM())
WHEN 1 THEN 'New York'
WHEN 2 THEN 'Los Angeles'
WHEN 3 THEN 'Chicago'
WHEN 4 THEN 'Houston'
WHEN 5 THEN 'Phoenix'
WHEN 6 THEN 'Philadelphia'
WHEN 7 THEN 'San Antonio'
WHEN 8 THEN 'San Diego'
WHEN 9 THEN 'Dallas'
ELSE 'San Jose'
END as city,
CASE UNIFORM(1, 10, RANDOM())
WHEN 1 THEN 'NY'
WHEN 2 THEN 'CA'
WHEN 3 THEN 'IL'
WHEN 4 THEN 'TX'
WHEN 5 THEN 'AZ'
WHEN 6 THEN 'PA'
WHEN 7 THEN 'TX'
WHEN 8 THEN 'CA'
WHEN 9 THEN 'TX'
ELSE 'CA'
END as state,
UNIFORM(10000, 99999, RANDOM()) as zip,
ROUND(UNIFORM(25.0, 49.0, RANDOM()) + UNIFORM(0, 999999, RANDOM())/1000000, 15) as lat,
ROUND(UNIFORM(-125.0, -65.0, RANDOM()) + UNIFORM(0, 99999999999999, RANDOM())/100000000000000, 14) as "LONG",
UNIFORM(10000, 5000000, RANDOM()) as city_pop,
CONCAT('Job_Title_', UNIFORM(1, 100, RANDOM())) as job,
DATEADD(year, -UNIFORM(18, 80, RANDOM()), '2020-12-01'::DATE) as dob,
CONCAT('trans_', LPAD(ROW_NUMBER() OVER (ORDER BY SEQ4()), 10, '0')) as trans_num,
DATEDIFF(second, '1970-01-01', DATEADD(minute, UNIFORM(0, 44640, RANDOM()), '2020-12-01 00:00:00'::TIMESTAMP_NTZ)) as unix_time,
ROUND(UNIFORM(25.0, 49.0, RANDOM()) + UNIFORM(0, 999999, RANDOM())/1000000, 15) as merch_lat,
ROUND(UNIFORM(-125.0, -65.0, RANDOM()) + UNIFORM(0, 99999999999999, RANDOM())/100000000000000, 14) as merch_long
FROM TABLE(GENERATOR(ROWCOUNT => 139538))
)
SELECT
id,
trans_date_trans_time,
cc_num,
merchant,
category,
amt,
first,
last,
gender,
street,
city,
state,
zip,
lat,
"LONG",
city_pop,
job,
dob,
trans_num,
unix_time,
merch_lat,
merch_long,
CASE
WHEN category IN ('shopping_net', 'misc_net') AND amt > 700 AND UNIFORM(0, 100, RANDOM()) < 85 THEN 1
WHEN category = 'travel' AND amt > 800 AND UNIFORM(0, 100, RANDOM()) < 80 THEN 1
WHEN amt > 900 AND EXTRACT(HOUR FROM trans_date_trans_time) BETWEEN 0 AND 4 AND UNIFORM(0, 100, RANDOM()) < 75 THEN 1
WHEN category IN ('shopping_net', 'misc_net', 'travel') AND amt > 400 AND amt <= 700 AND UNIFORM(0, 100, RANDOM()) < 12 THEN 1
WHEN EXTRACT(HOUR FROM trans_date_trans_time) BETWEEN 0 AND 3 AND UNIFORM(0, 100, RANDOM()) < 3 THEN 1
ELSE 0
END as is_fraud
FROM raw_data;
Execute cada subseção separadamente, selecionando o bloco desejado e clicando em Run. Após a execução bem-sucedida das queries, confirme a configuração com as seguintes queries de verificação:
SELECT COUNT(*) as total_records FROM FRAUD_TABLE;
SELECT TOP 10 * FROM FRAUD_TABLE;
SELECT is_fraud, COUNT(*) as count FROM FRAUD_TABLE GROUP BY is_fraud;
Obtendo as informações de conexão do Snowflake
Para conectar o Snowflake ao Amazon SageMaker Canvas, será necessário o nome da conta da organização no Snowflake, que combina o nome da organização e o nome da conta separados por um hífen. Execute a query abaixo na planilha SQL para obter esse valor:
SELECT CURRENT_ORGANIZATION_NAME()||'-'||CURRENT_ACCOUNT_NAME() AS organizaton_account_name;
Guarde esse valor — ele será necessário na próxima etapa da série.
Conclusão
Nesta primeira parte da série de três artigos, a AWS apresenta o desafio de negócio enfrentado por organizações com ambientes ricos em dados no Snowflake e introduz um workflow de ML sem código como solução. Os passos cobertos aqui incluem a criação do banco de dados Snowflake, o carregamento de dados de exemplo para detecção de fraudes e a obtenção das informações de conexão necessárias para os próximos passos.
Na Parte 2, o Amazon SageMaker Canvas é conectado aos dados do Snowflake, o conjunto de dados é preparado e transformado com ferramentas visuais, e um modelo de detecção de fraudes é construído.
Referências
- Build a no-code ML workflow with Snowflake, Amazon SageMaker Canvas and Amazon Quick – Part 2: Data preparation and model building with Amazon SageMaker Canvas
- Build a no-code ML workflow with Snowflake, Amazon SageMaker Canvas and Amazon Quick – Part 3: Visualizing insights with Amazon Quick Sight
Fonte
Build a no-code ML workflow with Snowflake, Amazon SageMaker Canvas and Amazon Quick – Part 1: Setting up your Snowflake environment (https://aws.amazon.com/blogs/machine-learning/build-a-no-code-ml-workflow-with-snowflake-amazon-sagemaker-canvas-and-amazon-quick-part-1-setting-up-your-snowflake-environment/)
Leave a Reply