Workshop BI com Azure e seus componentes
13 - Notebook Carga de Dados no Axure SQL Server
Após gerar os dados, estarei usando esse algoritmo para carregar os dados no SQL Server!
SEQ-13.1 - Definindo as Bibliotecas
Selecionado quais bibliotecas serão usadas.
Bibliotecas Usadas
import pandas as pd
from sqlalchemy import create_engine
import pyodbc
import os
server = 'localhost\DBAASSISTS'
database = 'TREINAMENTO'
username = 'usr_treinamento'
password = 'Tr&in@M&nT0SQL2024!'
driver = 'SQL Server'
SEQ-13.2 - Carga de Clientes
Carga de Clientes
print('01 (INICIO) - CARGA DE DADOS DE CLIENTES')
diretorio = fr'C:\Temp\Python_YT\Git\Projeto_BI_Zero_TO_DW\01_SCRIPT_SQL\DADOS_BASE\01_clientes.csv'
dfcliente = pd.read_csv(diretorio
,sep=';')
with pyodbc.connect('DRIVER={'+driver+'};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) as conn:
with conn.cursor() as cursor:
cursor.execute(fr"""
TRUNCATE TABLE dbo.TB_ITEM_VENDA;
DELETE FROM dbo.TB_VENDA;
DELETE FROM dbo.TB_CLIENTE;
""")
for i, coluna in dfcliente.iterrows():
cursor.execute(fr"""
SET IDENTITY_INSERT dbo.TB_CLIENTE ON;
INSERT INTO dbo.TB_CLIENTE (CODIGO_CLIENTE
,NOME_CLIENTE
,DATA_NASCIMENTO
,IDADE_CLIENTE
,DESCRICAO_ENDERECO
,NUMERO_ENDERECO
,NOME_CIDADE
,NUMERO_TELEFONE
,EMAIL_CLIENTE
,OCUPACAO_CLIENTE)
VALUES
({coluna['CODIGO_CLIENTE']}
,'{coluna['NOME_CLIENTE']}'
,'{coluna['DATA_NASCIMENTO']}'
,'{coluna['IDADE_CLIENTE']}'
,'{coluna['DESCRICAO_ENDERECO']}'
,'{coluna['NUMERO_ENDERECO']}'
,'{coluna['NOME_CIDADE']}'
,'{coluna['NUMERO_TELEFONE']}'
,'{coluna['EMAIL_CLIENTE']}'
,'{coluna['OCUPACAO_CLIENTE']}'
)
SET IDENTITY_INSERT dbo.TB_CLIENTE OFF;
""")
print('01 (FIM) - CARGA DE DADOS DE CLIENTES')
SEQ-13.3 - Carga de Vendedores
Carga de Vendedores
print('02 (INICIO) - CARGA DE DADOS DE VENDEDORES')
dfvendedor = pd.read_csv(fr'C:\Temp\Python_YT\Git\Projeto_BI_Zero_TO_DW\01_SCRIPT_SQL\DADOS_BASE\03_vendedores.csv'
,sep=';')
with pyodbc.connect('DRIVER={'+driver+'};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) as conn:
with conn.cursor() as cursor:
cursor.execute(fr"""DELETE FROM dbo.TB_LOJA;
DELETE FROM dbo.TB_VENDEDOR;
""")
for i, coluna in dfvendedor.iterrows():
cursor.execute(fr"""
SET IDENTITY_INSERT dbo.TB_VENDEDOR ON;
INSERT INTO dbo.TB_VENDEDOR
(CODIGO_VENDEDOR
,NOME_VENDEDOR)
VALUES (
{coluna['CODIGO_VENDEDOR']}
, '{coluna['NOME_VENDEDOR']}'
)
SET IDENTITY_INSERT dbo.TB_VENDEDOR OFF;
""")
print('02 (FIM) - CARGA DE DADOS DE VENDEDORES')
SEQ-13.4 - Carga de Lojas
Carga de Lojas
print('03 (INICIO) - CARGA DE DADOS DE LOJAS')
dfloja = pd.read_csv(fr'C:\Temp\Python_YT\Git\Projeto_BI_Zero_TO_DW\01_SCRIPT_SQL\DADOS_BASE\04_lojas.csv'
,sep=';')
with pyodbc.connect('DRIVER={'+driver+'};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) as conn:
with conn.cursor() as cursor:
cursor.execute(fr"""
DELETE FROM dbo.TB_LOJA;
""")
for i, coluna in dfloja.iterrows():
cursor.execute(fr"""
SET IDENTITY_INSERT dbo.TB_LOJA ON;
INSERT INTO dbo.TB_LOJA
(CODIGO_LOJA_VENDEDOR
,CODIGO_LOJA
,CODIGO_VENDEDOR
,NOME_LOJA
,LOCALIDADE_LOJA
,TIPO_LOJA)
VALUES (
{coluna['CODIGO_LOJA_VENDEDOR']}
, {coluna['CODIGO_LOJA']}
, {coluna['CODIGO_VENDEDOR']}
, '{coluna['NOME_LOJA']}'
, '{coluna['LOCALIDADE_LOJA']}'
, '{coluna['TIPO_LOJA']}')
SET IDENTITY_INSERT dbo.TB_LOJA OFF;
""")
print('03 (FIM) - CARGA DE DADOS DE LOJAS')
SEQ-13.5 - Carga de Categoria de Produtos
Carga de Categoria de Produtos
print('04 (INICIO) - CARGA DE DADOS DE CATEGORIA PRODUTOS')
dfCategoriaProduto = pd.read_csv(fr'C:\Temp\Python_YT\Git\Projeto_BI_Zero_TO_DW\01_SCRIPT_SQL\DADOS_BASE\08_categoria_produtos.csv'
,sep=';')
with pyodbc.connect('DRIVER={'+driver+'};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) as conn:
with conn.cursor() as cursor:
cursor.execute(fr"""
DELETE FROM dbo.TB_PRODUTO;
DELETE FROM dbo.TB_CATEGORIA_PRODUTO;
""")
for i, coluna in dfCategoriaProduto.iterrows():
cursor.execute(fr"""
SET IDENTITY_INSERT dbo.TB_CATEGORIA_PRODUTO ON;
INSERT INTO dbo.TB_CATEGORIA_PRODUTO
(CODIGO_CATEGORIA
,CATEGORIA_PRODUTO
,SUB_CATEGORIA_PRODUTO)
VALUES (
{coluna['CODIGO_CATEGORIA']}
, '{coluna['CATEGORIA_PRODUTO']}'
, '{coluna['SUB_CATEGORIA_PRODUTO']}'
)
SET IDENTITY_INSERT dbo.TB_CATEGORIA_PRODUTO OFF;
""")
print('04 (FIM) - CARGA DE DADOS DE CATEGORIA PRODUTOS')
SEQ-13.6 - Carga de Produtos
Carga de Produtos
print('05 (INICIO) - CARGA DE DADOS DE PRODUTOS')
dfproduto = pd.read_csv(fr'C:\Temp\Python_YT\Git\Projeto_BI_Zero_TO_DW\01_SCRIPT_SQL\DADOS_BASE\02_produtos.csv'
,sep=';')
with pyodbc.connect('DRIVER={'+driver+'};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) as conn:
with conn.cursor() as cursor:
cursor.execute(fr"""DELETE FROM dbo.TB_PRODUTO;""")
for i, coluna in dfproduto.iterrows():
cursor.execute(fr"""
SET IDENTITY_INSERT dbo.TB_PRODUTO ON;
INSERT INTO dbo.TB_PRODUTO
(CODIGO_PRODUTO
, DESCRICAO_PRODUTO
, CODIGO_CATEGORIA)
VALUES (
{coluna['CODIGO_PRODUTO']}
, '{coluna['DESCRICAO_PRODUTO']}'
, '{coluna['CODIGO_CATEGORIA']}'
)
SET IDENTITY_INSERT dbo.TB_PRODUTO OFF;
""")
print('05 (FIM) - CARGA DE DADOS DE PRODUTOS')
SEQ-13.7 - Carga de Formas de Pagamento
Carga de Formas Pagamento
print('06 (INICIO) - CARGA DE DADOS DE FORMA PAGAMENTO')
dfforma_pagamento = pd.read_csv(fr'C:\Temp\Python_YT\Git\Projeto_BI_Zero_TO_DW\01_SCRIPT_SQL\DADOS_BASE\05_forma_pagamento.csv'
,sep=';')
#with pyodbc.connect('DRIVER='+driver+';SERVER=tcp:'+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password) as conn:
with pyodbc.connect('DRIVER={'+driver+'};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) as conn:
with conn.cursor() as cursor:
cursor.execute(fr"""DELETE FROM dbo.TB_FORMA_PAGAMENTO;""")
for i, coluna in dfforma_pagamento.iterrows():
cursor.execute(fr"""
SET IDENTITY_INSERT dbo.TB_FORMA_PAGAMENTO ON;
INSERT INTO dbo.TB_FORMA_PAGAMENTO
(CODIGO_FORMA_PAGAMENTO
,DESCRICAO_FORMA_PAGAMENTO)
VALUES (
{coluna['CODIGO_FORMA_PAGAMENTO']}
,'{coluna['DESCRICAO_FORMA_PAGAMENTO']}'
)
SET IDENTITY_INSERT dbo.TB_FORMA_PAGAMENTO OFF;
""")
print('06 (FIM) - CARGA DE DADOS DE FORMA PAGAMENTP')
SEQ-13.8 - Carga de Vendas
Carga de Vendas
print('07 (INICIO) - CARGA DE DADOS DE VENDAS')
dfVenda = pd.read_csv(fr'C:\Temp\Python_YT\Git\Projeto_BI_Zero_TO_DW\01_SCRIPT_SQL\DADOS_BASE\06_vendas.csv'
,dtype={'CODIGO_VENDA': int
,'DATA_VENDA': str
,'CODIGO_CLIENTE': int
,'CODIGO_LOJA_VENDEDOR': int
,'VALOR_FINAL': float
,'FORMA_PAGAMENTO': int
,'TIPO_PAGAMENTO': str}
,parse_dates=['DATA_VENDA']
,sep=';')
dfVenda.sort_values(by='FORMA_PAGAMENTO')
with pyodbc.connect('DRIVER={'+driver+'};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) as conn:
with conn.cursor() as cursor:
cursor.execute(fr"""
DELETE FROM dbo.TB_ITEM_VENDA;
DELETE FROM dbo.TB_VENDA;""")
for i, coluna in dfVenda.iterrows():
cursor.execute(fr"""
SET IDENTITY_INSERT dbo.TB_VENDA ON;
INSERT INTO dbo.TB_VENDA
(CODIGO_VENDA
,DATA_VENDA
,CODIGO_CLIENTE
,CODIGO_LOJA_VENDEDOR
,VALOR_FINAL
,CODIGO_FORMA_PAGAMENTO
,TIPO_PAGAMENTO)
VALUES (
{coluna['CODIGO_VENDA']}
,'{coluna['DATA_VENDA']}'
,{coluna['CODIGO_CLIENTE']}
,{coluna['CODIGO_LOJA_VENDEDOR']}
,'{coluna['VALOR_FINAL']}'
,{coluna['FORMA_PAGAMENTO']}
,'{coluna['TIPO_PAGAMENTO']}'
)
SET IDENTITY_INSERT dbo.TB_VENDA OFF;
""")
print('07 (FIM) - CARGA DE DADOS DE VENDAS')
SEQ-13.9 - Carga de Itens de Venda
Carga de Itens de Venda
print('08 (INICIO) - CARGA DE DADOS DE ITEM VENDA')
dfItemVenda = pd.read_csv(fr'C:\Temp\Python_YT\Git\Projeto_BI_Zero_TO_DW\01_SCRIPT_SQL\DADOS_BASE\07_item_vendas.csv'
,dtype={'CODIGO_VENDA': int
,'CODIGO_PRODUTO': str
,'VALOR_UNITARIO': float
,'QUANTIDADE': int
,'VALOR_FINAL': float}
,sep=';')
with pyodbc.connect('DRIVER={'+driver+'};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) as conn:
with conn.cursor() as cursor:
cursor.execute(fr"""TRUNCATE TABLE dbo.TB_ITEM_VENDA;""")
for i, coluna in dfItemVenda.iterrows():
cursor.execute(fr"""
INSERT INTO dbo.TB_ITEM_VENDA
(CODIGO_VENDA
,CODIGO_PRODUTO
,VALOR_UNITARIO
,QUANTIDADE
,VALOR_FINAL)
VALUES (
{coluna['CODIGO_VENDA']}
,{coluna['CODIGO_PRODUTO']}
,{coluna['VALOR_UNITARIO']}
,{coluna['QUANTIDADE']}
,{coluna['VALOR_FINAL']}
)
""")
print('08 (FIM) - CARGA DE DADOS DE ITEM VENDA')
SEQ-13.10 - Carga de Tempo
Gerando dados da dimensão tempo
print('09 (INICIO) - CARGA DE DADOS DE TEMPO')
dfTempo = pd.read_csv(fr'C:\Temp\Python_YT\Git\Projeto_BI_Zero_TO_DW\01_SCRIPT_SQL\DADOS_BASE\09_tempo.csv'
,dtype={'ID_TEMPO': str
,'DATA': str
,'ANO': int
,'MES': int
,'DIA': int}
,date_parser=['DATA']
,sep=';')
with pyodbc.connect('DRIVER={'+driver+'};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) as conn:
with conn.cursor() as cursor:
cursor.execute(fr"""TRUNCATE TABLE dbo.Tempo;""")
for i, coluna in dfTempo.iterrows():
cursor.execute(fr"""
INSERT INTO dbo.Tempo
(ID_TEMPO
,DATA
,ANO
,MES
,DIA)
VALUES (
'{coluna['ID_TEMPO']}'
,{coluna['DATA']}
,{coluna['ANO']}
,{coluna['MES']}
,{coluna['DIA']}
)
""")
print('09 (FIM) - CARGA DE DADOS DE TEMPO')