Power BI

Power BI e ChatGPT: Simplificando a Criação de Medidas DAX

Power BI e ChatGPT formam uma combinação poderosa para otimizar a análise de dados, economizando tempo e melhorando a produtividade. Neste artigo, quero compartilhar como utilizo essas ferramentas para criar medidas DAX de forma simples e eficiente. Vou detalhar o passo a passo de um cenário prático que ilustra como essa integração pode facilitar o trabalho e gerar valor no desenvolvimento de relatórios e dashboards.

Criando um Cenário de Teste com ChatGPT

Para iniciar, pedi ao ChatGPT que gerasse um script SQL para criar tabelas e registros populados com instruções INSERT. O objetivo era simular um banco de dados real de forma ágil e prática.

Com o script em mãos, utilizei o PostgreSQL para criar o banco de dados. O script gerado é flexível e pode ser adaptado para o banco de dados de sua preferência. Essa etapa foi rápida e me permitiu estruturar o cenário perfeito para demonstrar o uso integrado do Power BI e ChatGPT. Abaixo, você pode copiar o script gerado e utilizá-lo conforme necessário:

				
					-- Tabela d_vendedor
CREATE TABLE d_vendedor (
    id_vendedor SERIAL PRIMARY KEY,
    nome VARCHAR(100) NOT NULL
);

-- Tabela d_produto
CREATE TABLE d_produto (
    id_produto SERIAL PRIMARY KEY,
    nome_produto VARCHAR(100) NOT NULL,
    grupo_produto VARCHAR(50) NOT NULL,
    subgrupo_produto VARCHAR(50) NOT NULL
);

-- Tabela d_cliente
CREATE TABLE d_cliente (
    id_cliente SERIAL PRIMARY KEY,
    nome_cliente VARCHAR(100) NOT NULL,
    tipo_cliente VARCHAR(2) NOT NULL CHECK (tipo_cliente IN ('PJ', 'PF')),
    cidade VARCHAR(50) NOT NULL,
    estado VARCHAR(2) NOT NULL
);

-- Tabela f_venda
CREATE TABLE f_venda (
    id_venda SERIAL PRIMARY KEY,
    data_venda DATE NOT NULL,
    id_produto INT NOT NULL REFERENCES d_produto(id_produto),
    id_vendedor INT NOT NULL REFERENCES d_vendedor(id_vendedor),
    id_cliente INT NOT NULL REFERENCES d_cliente(id_cliente),
    quantidade INT NOT NULL CHECK (quantidade > 0),
    valor_unitario DECIMAL(10, 2) NOT NULL CHECK (valor_unitario >= 0),
    custo_unitario DECIMAL(10, 2) NOT NULL CHECK (custo_unitario >= 0),
    desconto_unitario DECIMAL(10, 2) NOT NULL CHECK (desconto_unitario >= 0)
);

-- Inserção de dados na tabela d_vendedor
INSERT INTO d_vendedor (nome) VALUES
('João Silva'),
('Maria Santos'),
('Carlos Pereira');

-- Inserção de dados na tabela d_cliente
INSERT INTO d_cliente (nome_cliente, tipo_cliente, cidade, estado) VALUES
('Empresa X', 'PJ', 'Fortaleza', 'CE'),
('João Oliveira', 'PF', 'Eusébio', 'CE'),
('Maria Fernandes', 'PF', 'Sobral', 'CE'),
('Empresa Y', 'PJ', 'Quixadá', 'CE'),
('Ana Costa', 'PF', 'Caucaia', 'CE'),
('Empresa Z', 'PJ', 'Juazeiro do Norte', 'CE'),
('Pedro Lima', 'PF', 'Maracanaú', 'CE'),
('Clara Nogueira', 'PF', 'Crato', 'CE'),
('Lucas Almeida', 'PF', 'Itapipoca', 'CE'),
('Sofia Ribeiro', 'PF', 'Aquiraz', 'CE');

-- Inserção de dados na tabela d_produto
INSERT INTO d_produto (nome_produto, grupo_produto, subgrupo_produto) VALUES
('Notebook Dell Inspiron', 'Computadores', 'Notebooks'),
('Notebook Lenovo ThinkPad', 'Computadores', 'Notebooks'),
('Desktop HP Pavilion', 'Computadores', 'Desktops'),
('Monitor Samsung 24"', 'Periféricos', 'Monitores'),
('Monitor LG 27"', 'Periféricos', 'Monitores'),
('Teclado Mecânico HyperX', 'Periféricos', 'Teclados'),
('Teclado Sem Fio Logitech', 'Periféricos', 'Teclados'),
('Mouse Gamer Razer', 'Periféricos', 'Mouses'),
('Mouse Sem Fio Microsoft', 'Periféricos', 'Mouses'),
('Impressora Epson EcoTank', 'Periféricos', 'Impressoras'),
('Cabo HDMI 2m', 'Acessórios', 'Cabos'),
('Cabo USB-C 1m', 'Acessórios', 'Cabos'),
('Fone de Ouvido JBL', 'Acessórios', 'Fones de Ouvido'),
('Fone de Ouvido Sony', 'Acessórios', 'Fones de Ouvido'),
('Smartphone Samsung Galaxy', 'Dispositivos Móveis', 'Smartphones'),
('Smartphone Apple iPhone', 'Dispositivos Móveis', 'Smartphones'),
('Tablet Samsung Galaxy Tab', 'Dispositivos Móveis', 'Tablets'),
('Tablet Apple iPad', 'Dispositivos Móveis', 'Tablets'),
('Smartwatch Apple Watch', 'Dispositivos Vestíveis', 'Smartwatches'),
('Smartwatch Samsung Galaxy Watch', 'Dispositivos Vestíveis', 'Smartwatches'),
('Headset Gamer HyperX', 'Acessórios', 'Headsets'),
('Roteador TP-Link Archer', 'Redes', 'Roteadores'),
('Roteador D-Link DIR', 'Redes', 'Roteadores'),
('Switch Cisco 16 Portas', 'Redes', 'Switches'),
('Switch TP-Link 8 Portas', 'Redes', 'Switches'),
('HD Externo Seagate 1TB', 'Armazenamento', 'HDs Externos'),
('HD Externo Western Digital 2TB', 'Armazenamento', 'HDs Externos'),
('SSD Kingston 480GB', 'Armazenamento', 'SSDs'),
('SSD Samsung 1TB', 'Armazenamento', 'SSDs'),
('Carregador Portátil Anker', 'Acessórios', 'Carregadores'),
('Carregador Portátil Xiaomi', 'Acessórios', 'Carregadores'),
('Placa de Vídeo Nvidia RTX 3060', 'Componentes', 'Placas de Vídeo'),
('Placa de Vídeo AMD Radeon RX 6700', 'Componentes', 'Placas de Vídeo'),
('Processador Intel Core i7', 'Componentes', 'Processadores'),
('Processador AMD Ryzen 5', 'Componentes', 'Processadores'),
('Memória RAM Kingston 8GB', 'Componentes', 'Memórias RAM'),
('Memória RAM Corsair 16GB', 'Componentes', 'Memórias RAM'),
('Cooler para CPU Cooler Master', 'Componentes', 'Coolers'),
('Fonte Corsair 750W', 'Componentes', 'Fontes');

-- Inserção de dados na tabela f_venda
INSERT INTO f_venda (id_produto, id_vendedor, id_cliente, quantidade, valor_unitario, data_venda, custo_unitario, desconto_unitario) VALUES
(1, 1, 1, 3, 1500.00, '2024-01-01', 866.95, 0.00),
(2, 2, 2, 5, 2500.00, '2024-01-02', 1181.78, 227.15),
(3, 3, 3, 2, 4000.00, '2024-01-03', 1718.31, 222.17),
(4, 1, 4, 1, 200.00, '2024-01-04', 99.72, 14.58),
(5, 2, 5, 2, 400.00, '2024-01-05', 205.47, 0.00),
(6, 3, 6, 1, 300.00, '2024-01-06', 152.09, 20.62),
(7, 1, 7, 3, 450.00, '2024-01-07', 188.25, 0.00),
(8, 2, 8, 5, 1000.00, '2024-01-08', 453.49, 0.00),
(9, 3, 9, 4, 1200.00, '2024-01-09', 667.48, 0.00),
(10, 1, 10, 6, 700.00, '2024-01-10', 361.00, 0.00),
(11, 2, 1, 10, 50.00, '2024-01-11', 27.17, 4.16),
(12, 3, 2, 20, 100.00, '2024-01-12', 41.59, 5.75),
(13, 1, 3, 15, 750.00, '2024-01-13', 400.72, 0.00),
(14, 2, 4, 25, 1250.00, '2024-01-14', 743.28, 0.00),
(15, 3, 5, 2, 4000.00, '2024-01-15', 2144.56, 372.97),
(16, 1, 6, 3, 3000.00, '2024-01-16', 1592.49, 0.00),
(17, 2, 7, 1, 1200.00, '2024-01-17', 675.67, 117.30),
(18, 3, 8, 5, 4000.00, '2024-01-18', 2038.07, 213.89),
(19, 1, 9, 2, 2000.00, '2024-01-19', 1056.19, 0.00),
(20, 2, 10, 4, 5000.00, '2024-01-20', 2858.23, 276.29),
(21, 3, 1, 1, 150.00, '2024-01-21', 75.11, 0.00),
(22, 1, 2, 4, 600.00, '2024-01-22', 318.66, 0.00),
(23, 2, 3, 7, 800.00, '2024-01-23', 409.73, 0.00),
(24, 3, 4, 2, 1200.00, '2024-01-24', 634.00, 0.00),
(25, 1, 5, 3, 900.00, '2024-01-25', 395.23, 50.28),
(26, 2, 6, 6, 300.00, '2024-01-26', 151.09, 16.35),
(27, 3, 7, 4, 450.00, '2024-01-27', 236.45, 26.02),
(28, 1, 8, 10, 1500.00, '2024-01-28', 639.64, 110.69),
(29, 2, 9, 2, 700.00, '2024-01-29', 294.99, 0.00),
(30, 3, 10, 3, 1000.00, '2024-01-30', 507.24, 0.00),
(1, 1, 1, 2, 1000.00, '2024-02-01', 567.82, 0.00),
(2, 2, 2, 1, 2000.00, '2024-02-02', 939.12, 0.00),
(3, 3, 3, 4, 1500.00, '2024-02-03', 710.22, 102.61),
(4, 1, 5, 3, 300.00, '2024-02-04', 168.45, 0.00),
(5, 2, 6, 2, 450.00, '2024-02-05', 195.34, 39.44),
(6, 3, 7, 5, 350.00, '2024-02-06', 183.07, 26.13),
(7, 1, 8, 4, 550.00, '2024-02-07', 305.60, 28.17),
(8, 2, 9, 6, 750.00, '2024-02-08', 376.19, 44.33),
(9, 3, 10, 8, 650.00, '2024-02-09', 387.41, 0.00),
(10, 1, 1, 2, 300.00, '2024-02-10', 175.26, 0.00),
(11, 2, 3, 7, 500.00, '2024-02-11', 260.49, 0.00),
(12, 3, 4, 5, 450.00, '2024-02-12', 234.32, 25.89),
(13, 1, 6, 4, 700.00, '2024-02-13', 332.84, 0.00),
(14, 2, 7, 3, 250.00, '2024-02-14', 123.28, 0.00),
(15, 3, 8, 2, 100.00, '2024-02-15', 51.56, 6.15),
(16, 1, 9, 1, 1200.00, '2024-02-16', 606.24, 110.67),
(17, 2, 10, 2, 1100.00, '2024-02-17', 509.58, 84.07),
(18, 3, 1, 3, 500.00, '2024-02-18', 289.12, 0.00),
(19, 1, 2, 6, 800.00, '2024-02-19', 467.96, 78.21),
(20, 2, 3, 7, 300.00, '2024-02-20', 125.59, 15.16),
(21, 3, 4, 8, 200.00, '2024-02-21', 96.25, 10.31),
(22, 1, 5, 4, 750.00, '2024-02-22', 382.45, 0.00),
(23, 2, 6, 3, 1000.00, '2024-02-23', 458.02, 0.00),
(24, 3, 7, 2, 400.00, '2024-02-24', 225.16, 33.57),
(25, 1, 8, 1, 350.00, '2024-02-25', 187.33, 34.06),
(26, 2, 9, 6, 200.00, '2024-02-26', 106.63, 0.00),
(27, 3, 10, 5, 900.00, '2024-02-27', 408.26, 0.00),
(28, 1, 1, 4, 1200.00, '2024-02-28', 620.63, 86.41),
(1, 1, 2, 3, 900.00, '2024-03-01', 360.10, 0.00),
(2, 2, 3, 5, 2500.00, '2024-03-02', 1163.27, 0.00),
(3, 3, 4, 2, 1500.00, '2024-03-03', 757.43, 113.96),
(4, 1, 5, 1, 500.00, '2024-03-04', 241.22, 43.23),
(5, 2, 6, 4, 800.00, '2024-03-05', 392.04, 0.00),
(6, 3, 7, 2, 300.00, '2024-03-06', 150.48, 0.00),
(7, 1, 8, 3, 1000.00, '2024-03-07', 563.66, 78.29),
(8, 2, 9, 6, 900.00, '2024-03-08', 455.44, 0.00),
(9, 3, 10, 5, 750.00, '2024-03-09', 313.48, 0.00),
(10, 1, 1, 10, 200.00, '2024-03-10', 92.68, 0.00),
(11, 2, 2, 4, 600.00, '2024-03-11', 247.18, 0.00),
(12, 3, 3, 7, 1200.00, '2024-03-12', 537.54, 72.44),
(13, 1, 4, 8, 300.00, '2024-03-13', 164.30, 0.00),
(14, 2, 5, 2, 250.00, '2024-03-14', 101.87, 15.07),
(15, 3, 6, 1, 700.00, '2024-03-15', 307.47, 0.00),
(16, 1, 7, 4, 400.00, '2024-03-16', 230.61, 31.98),
(17, 2, 8, 3, 1100.00, '2024-03-17', 598.70, 81.33),
(18, 3, 9, 2, 2000.00, '2024-03-18', 1021.32, 0.00),
(19, 1, 10, 5, 800.00, '2024-03-19', 375.07, 0.00),
(20, 2, 1, 6, 300.00, '2024-03-20', 156.18, 21.56),
(21, 3, 2, 4, 400.00, '2024-04-01', 197.62, 31.58),
(22, 1, 3, 7, 1500.00, '2024-04-02', 810.05, 0.00),
(23, 2, 4, 8, 500.00, '2024-04-03', 241.78, 0.00),
(24, 3, 5, 3, 100.00, '2024-04-04', 57.95, 5.39),
(25, 1, 6, 2, 300.00, '2024-04-05', 166.37, 0.00),
(26, 2, 7, 1, 400.00, '2024-04-06', 218.81, 37.89),
(27, 3, 8, 5, 450.00, '2024-04-07', 210.47, 31.06),
(28, 1, 9, 6, 200.00, '2024-04-08', 96.42, 0.00),
(29, 2, 10, 3, 900.00, '2024-04-09', 500.46, 77.30),
(30, 3, 1, 2, 500.00, '2024-04-10', 244.28, 0.00),
(1, 1, 2, 4, 1200.00, '2024-04-11', 537.52, 94.48),
(2, 2, 3, 7, 100.00, '2024-04-12', 48.75, 0.00),
(3, 3, 4, 8, 1500.00, '2024-04-13', 613.83, 0.00),
(4, 1, 5, 3, 900.00, '2024-04-14', 364.15, 0.00),
(5, 2, 6, 2, 600.00, '2024-04-15', 256.85, 0.00),
(6, 3, 7, 1, 400.00, '2024-04-16', 188.40, 0.00),
(7, 1, 8, 5, 2000.00, '2024-04-17', 930.52, 102.14),
(8, 2, 9, 6, 1500.00, '2024-04-18', 773.78, 139.45),
(9, 3, 10, 4, 700.00, '2024-04-19', 320.01, 42.75),
(10, 1, 1, 2, 800.00, '2024-04-20', 438.09, 46.56),
(11, 2, 2, 4, 600.00, '2024-05-01', 286.31, 42.50),
(12, 3, 3, 7, 1200.00, '2024-05-02', 638.06, 0.00),
(13, 1, 4, 8, 300.00, '2024-05-03', 149.56, 0.00),
(14, 2, 5, 2, 250.00, '2024-05-04', 133.36, 17.56),
(15, 3, 6, 1, 700.00, '2024-05-05', 394.59, 58.41),
(16, 1, 7, 4, 400.00, '2024-05-06', 217.74, 31.26),
(17, 2, 8, 3, 1100.00, '2024-05-07', 478.84, 91.91),
(18, 3, 9, 2, 2000.00, '2024-05-08', 1059.91, 0.00),
(19, 1, 10, 5, 800.00, '2024-05-09', 456.35, 0.00),
(20, 2, 1, 6, 300.00, '2024-05-10', 139.99, 0.00),
(21, 3, 2, 4, 400.00, '2024-05-11', 229.75, 0.00),
(22, 1, 3, 7, 1500.00, '2024-05-12', 735.84, 135.81),
(23, 2, 4, 8, 500.00, '2024-05-13', 297.46, 34.53),
(24, 3, 5, 3, 100.00, '2024-05-14', 46.77, 9.57),
(25, 1, 6, 2, 300.00, '2024-05-15', 156.55, 22.90),
(26, 2, 7, 1, 400.00, '2024-05-16', 176.52, 0.00),
(27, 3, 8, 5, 450.00, '2024-05-17', 221.39, 0.00),
(28, 1, 9, 6, 200.00, '2024-05-18', 93.28, 11.54),
(29, 2, 10, 3, 900.00, '2024-05-19', 512.85, 0.00),
(30, 3, 1, 2, 500.00, '2024-05-20', 288.98, 0.00),
(11, 2, 2, 3, 900.00, '2024-06-01', 489.64, 62.45),
(12, 3, 3, 5, 1800.00, '2024-06-02', 998.64, 0.00),
(13, 1, 4, 2, 300.00, '2024-06-03', 137.29, 0.00),
(14, 2, 5, 4, 750.00, '2024-06-04', 359.00, 58.56),
(15, 3, 6, 3, 500.00, '2024-06-05', 289.46, 34.40),
(16, 1, 7, 1, 1100.00, '2024-06-06', 570.25, 102.12),
(17, 2, 8, 4, 600.00, '2024-06-07', 280.63, 38.09),
(18, 3, 9, 5, 1200.00, '2024-06-08', 518.21, 60.52),
(19, 1, 10, 6, 800.00, '2024-06-09', 373.07, 61.55),
(20, 2, 1, 10, 300.00, '2024-06-10', 151.10, 0.00),
(21, 3, 2, 4, 400.00, '2024-06-11', 176.86, 0.00),
(22, 1, 3, 7, 2000.00, '2024-06-12', 1074.86, 0.00),
(23, 2, 4, 8, 1500.00, '2024-06-13', 755.27, 97.32),
(24, 3, 5, 2, 600.00, '2024-06-14', 344.95, 35.62),
(25, 1, 6, 1, 500.00, '2024-06-15', 210.56, 0.00),
(26, 2, 7, 5, 450.00, '2024-06-16', 214.36, 22.91),
(27, 3, 8, 3, 900.00, '2024-06-17', 420.19, 48.00),
(28, 1, 9, 4, 750.00, '2024-06-18', 343.26, 60.80),
(29, 2, 10, 5, 850.00, '2024-06-19', 480.97, 56.94),
(30, 3, 1, 6, 300.00, '2024-06-20', 121.69, 0.00),
(1, 1, 2, 4, 1200.00, '2024-07-01', 651.25, 118.41),
(2, 2, 3, 5, 2500.00, '2024-07-02', 1043.18, 241.77),
(3, 3, 4, 2, 800.00, '2024-07-03', 418.87, 48.89),
(4, 1, 5, 6, 1800.00, '2024-07-04', 1069.68, 92.89),
(5, 2, 6, 3, 900.00, '2024-07-05', 432.92, 0.00),
(6, 3, 7, 7, 4900.00, '2024-07-06', 2193.48, 402.92),
(7, 1, 8, 3, 900.00, '2024-07-07', 361.62, 77.71),
(8, 2, 9, 2, 400.00, '2024-07-08', 193.35, 0.00),
(9, 3, 10, 8, 1500.00, '2024-07-09', 731.46, 147.79),
(10, 1, 1, 9, 2700.00, '2024-07-10', 1108.02, 0.00),
(11, 2, 2, 2, 500.00, '2024-07-11', 210.57, 0.00),
(12, 3, 3, 7, 2000.00, '2024-07-12', 863.64, 0.00),
(13, 1, 4, 5, 1250.00, '2024-07-13', 543.52, 0.00),
(14, 2, 5, 8, 1000.00, '2024-07-14', 555.70, 80.53),
(15, 3, 6, 1, 1200.00, '2024-07-15', 576.66, 0.00),
(16, 1, 7, 4, 600.00, '2024-07-16', 333.98, 0.00),
(17, 2, 8, 3, 500.00, '2024-07-17', 243.11, 25.87),
(18, 3, 9, 6, 1100.00, '2024-07-18', 446.94, 0.00),
(19, 1, 10, 2, 300.00, '2024-07-19', 123.29, 27.49),
(20, 2, 1, 4, 400.00, '2024-07-20', 166.52, 0.00),
(1, 3, 2, 6, 2400.00, '2024-08-01', 1128.03, 232.38),
(2, 1, 3, 3, 750.00, '2024-08-02', 323.21, 0.00),
(3, 2, 4, 2, 300.00, '2024-08-03', 145.25, 0.00),
(4, 3, 5, 1, 700.00, '2024-08-04', 314.72, 0.00),
(5, 1, 6, 5, 1500.00, '2024-08-05', 677.89, 0.00),
(6, 2, 7, 4, 800.00, '2024-08-06', 392.38, 63.23),
(7, 3, 8, 3, 900.00, '2024-08-07', 527.47, 71.38),
(8, 1, 9, 7, 5000.00, '2024-08-08', 2955.50, 495.95),
(9, 2, 10, 6, 1200.00, '2024-08-09', 529.98, 88.77),
(10, 3, 1, 2, 700.00, '2024-08-10', 337.69, 35.10),
(11, 1, 2, 4, 300.00, '2024-08-11', 124.16, 25.63),
(12, 2, 3, 8, 1500.00, '2024-08-12', 644.46, 0.00),
(13, 3, 4, 2, 600.00, '2024-08-13', 281.96, 36.08),
(14, 1, 5, 6, 2500.00, '2024-08-14', 1300.52, 231.19),
(15, 2, 6, 5, 1200.00, '2024-08-15', 660.76, 96.56),
(16, 3, 7, 1, 900.00, '2024-08-16', 475.62, 0.00),
(17, 1, 8, 4, 600.00, '2024-08-17', 248.85, 49.13),
(18, 2, 9, 3, 400.00, '2024-08-18', 205.99, 34.34),
(19, 3, 10, 2, 300.00, '2024-08-19', 159.06, 22.16),
(20, 1, 1, 6, 500.00, '2024-08-20', 296.25, 0.00),
(1, 2, 2, 5, 750.00, '2024-09-01', 357.08, 0.00),
(2, 3, 3, 8, 1800.00, '2024-09-02', 1013.89, 121.78),
(3, 1, 4, 7, 4900.00, '2024-09-03', 2590.61, 0.00),
(4, 2, 5, 3, 1000.00, '2024-09-04', 544.08, 88.42),
(5, 3, 6, 4, 1200.00, '2024-09-05', 598.97, 66.92),
(6, 1, 7, 2, 600.00, '2024-09-06', 353.59, 33.97),
(7, 2, 8, 1, 400.00, '2024-09-07', 171.43, 38.66),
(8, 3, 9, 8, 1500.00, '2024-09-08', 602.57, 0.00),
(9, 1, 10, 6, 900.00, '2024-09-09', 501.93, 0.00),
(10, 2, 1, 4, 600.00, '2024-09-10', 287.73, 0.00),
(11, 3, 2, 2, 800.00, '2024-09-11', 434.28, 0.00),
(12, 1, 3, 3, 500.00, '2024-09-12', 265.65, 0.00),
(13, 2, 4, 7, 2000.00, '2024-09-13', 1043.38, 0.00),
(14, 3, 5, 8, 1800.00, '2024-09-14', 750.85, 0.00),
(15, 1, 6, 5, 1500.00, '2024-09-15', 690.26, 0.00),
(16, 2, 7, 3, 900.00, '2024-09-16', 397.27, 0.00),
(17, 3, 8, 4, 750.00, '2024-09-17', 369.32, 0.00),
(18, 1, 9, 1, 400.00, '2024-09-18', 226.45, 0.00),
(19, 2, 10, 2, 300.00, '2024-09-19', 169.04, 21.82),
(20, 3, 1, 6, 1000.00, '2024-09-20', 557.60, 0.00),
(1, 1, 2, 5, 1500.00, '2024-10-01', 606.08, 0.00),
(2, 2, 3, 3, 900.00, '2024-10-02', 459.59, 56.44),
(3, 3, 4, 2, 600.00, '2024-10-03', 266.94, 59.51),
(4, 1, 5, 1, 400.00, '2024-10-04', 195.96, 30.88),
(5, 2, 6, 4, 1200.00, '2024-10-05', 618.42, 109.01),
(6, 3, 7, 6, 1800.00, '2024-10-06', 1054.41, 105.88),
(7, 1, 8, 3, 900.00, '2024-10-07', 373.29, 70.91),
(8, 2, 9, 2, 500.00, '2024-10-08', 200.65, 25.95),
(9, 3, 10, 8, 1500.00, '2024-10-09', 884.77, 91.37),
(10, 1, 1, 5, 1000.00, '2024-10-10', 528.01, 64.89),
(11, 2, 2, 3, 700.00, '2024-10-11', 314.67, 0.00),
(12, 3, 3, 7, 2000.00, '2024-10-12', 962.53, 137.73),
(13, 1, 4, 4, 1250.00, '2024-10-13', 635.06, 0.00),
(14, 2, 5, 6, 1000.00, '2024-10-14', 550.29, 0.00),
(15, 3, 6, 1, 1100.00, '2024-10-15', 514.91, 0.00),
(16, 1, 7, 3, 900.00, '2024-10-16', 422.70, 0.00),
(17, 2, 8, 4, 600.00, '2024-10-17', 317.86, 0.00),
(18, 3, 9, 5, 800.00, '2024-10-18', 436.20, 65.09),
(19, 1, 10, 2, 500.00, '2024-10-19', 236.73, 46.77),
(20, 2, 1, 4, 300.00, '2024-10-20', 128.22, 24.30),
(1, 3, 2, 6, 2400.00, '2024-11-01', 1053.13, 0.00),
(2, 1, 3, 3, 750.00, '2024-11-02', 443.98, 0.00),
(3, 2, 4, 2, 300.00, '2024-11-03', 130.25, 27.05),
(4, 3, 5, 1, 700.00, '2024-11-04', 337.43, 54.23),
(5, 1, 6, 5, 1500.00, '2024-11-05', 669.23, 137.30),
(6, 2, 7, 4, 800.00, '2024-11-06', 343.84, 0.00),
(7, 3, 8, 3, 900.00, '2024-11-07', 512.92, 64.82),
(8, 1, 9, 7, 5000.00, '2024-11-08', 2508.01, 0.00),
(9, 2, 10, 6, 1200.00, '2024-11-09', 510.28, 0.00),
(10, 3, 1, 2, 700.00, '2024-11-10', 284.16, 55.57),
(11, 1, 2, 4, 300.00, '2024-11-11', 168.88, 0.00),
(12, 2, 3, 8, 1500.00, '2024-11-12', 714.81, 0.00),
(13, 3, 4, 2, 600.00, '2024-11-13', 284.07, 0.00),
(14, 1, 5, 6, 2500.00, '2024-11-14', 1442.09, 0.00),
(15, 2, 6, 5, 1200.00, '2024-11-15', 603.30, 0.00),
(16, 3, 7, 1, 900.00, '2024-11-16', 379.36, 80.54),
(17, 1, 8, 4, 600.00, '2024-11-17', 310.36, 43.44),
(18, 2, 9, 3, 400.00, '2024-11-18', 233.78, 0.00),
(19, 3, 10, 2, 300.00, '2024-11-19', 176.29, 0.00),
(20, 1, 1, 6, 500.00, '2024-11-20', 276.07, 32.46),
(1, 2, 2, 5, 750.00, '2024-12-01', 410.91, 0.00),
(2, 3, 3, 8, 1800.00, '2024-12-02', 965.73, 0.00),
(3, 1, 4, 7, 4900.00, '2024-12-03', 2806.75, 386.77),
(4, 2, 5, 3, 1000.00, '2024-12-04', 572.45, 81.42),
(5, 3, 6, 4, 1200.00, '2024-12-05', 635.73, 83.14),
(6, 1, 7, 2, 600.00, '2024-12-06', 281.91, 48.51),
(7, 2, 8, 1, 400.00, '2024-12-07', 203.42, 20.11),
(8, 3, 9, 8, 1500.00, '2024-12-08', 645.23, 105.08),
(9, 1, 10, 6, 900.00, '2024-12-09', 520.81, 0.00),
(10, 2, 1, 4, 600.00, '2024-12-10', 321.68, 0.00),
(11, 3, 2, 2, 800.00, '2024-12-11', 343.98, 41.83),
(12, 1, 3, 3, 500.00, '2024-12-12', 259.48, 35.62),
(13, 2, 4, 7, 2000.00, '2024-12-13', 847.80, 166.67),
(14, 3, 5, 8, 1800.00, '2024-12-14', 906.14, 179.25),
(15, 1, 6, 5, 1500.00, '2024-12-15', 862.83, 107.22),
(16, 2, 7, 3, 900.00, '2024-12-16', 492.78, 55.53),
(17, 3, 8, 4, 750.00, '2024-12-17', 424.28, 74.81),
(18, 1, 9, 1, 400.00, '2024-12-18', 235.67, 30.40),
(19, 2, 10, 2, 300.00, '2024-12-19', 137.83, 0.00),
(20, 3, 1, 6, 1000.00, '2024-12-20', 544.41, 62.63);
				
			

Importando os Dados no Power BI

Depois de configurar o banco de dados no PostgreSQL, conectei o Power BI a ele usando o Power Query. Importei os dados e, em seguida, estabeleci os relacionamentos necessários entre as tabelas, preparando o modelo para cálculos avançados. Durante esse processo, também criei uma tabela calendário no Power Query, que é essencial para análises temporais, como segmentar dados por períodos (ano, mês, dia) e calcular indicadores baseados em datas. Abaixo, você pode copiar o código utilizado para criar a tabela calendário:

				
					let
    AnoInicial = 2020,
    AnoFinal = 2024,
    DataInicial = #date(AnoInicial, 1, 1),
    DataFinal = #date(AnoFinal, 12, 31),
    QtdeDias = Duration.Days(DataFinal - DataInicial) + 1,
    DateList = List.Dates(DataInicial, QtdeDias, #duration(1, 0, 0, 0)),
    ConvertTabela = Table.FromList(DateList, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    AlteraTipo = Table.TransformColumnTypes(ConvertTabela, {{"Column1", type date}}),
    RenomeiaColuna = Table.RenameColumns(AlteraTipo, {{"Column1", "Data"}}),

    // Adicionar colunas personalizadas
    Ano = Table.AddColumn(RenomeiaColuna, "Ano", each Date.Year([Data]), Int64.Type),
    AnoAtual = Table.AddColumn(Ano, "Ano Atual", each if Date.Year([Data]) = Date.Year(DateTime.LocalNow()) then "ATUAL" else Text.From(Date.Year([Data])), type text),
    Mes = Table.AddColumn(AnoAtual, "Mês", each Date.Month([Data]), Int64.Type),
    Dia = Table.AddColumn(Mes, "Dia", each Date.Day([Data]), Int64.Type),
    DescricaoMesCurto = Table.AddColumn(Dia, "Mês Descrição Resumida", each Text.Upper(Date.ToText([Data], "MMM")), type text),
    MesDescricaoResumidaAtual = Table.AddColumn(DescricaoMesCurto, "Mês Descrição Resumida Atual", 
        each if Date.ToText([Data], "MM/YYYY") = Date.ToText(Date.From(DateTime.LocalNow()), "MM/YYYY") 
        then "ATUAL" 
        else Text.Upper(Date.ToText([Data], "MMM")), 
        type text),    
    DescricaoMes = Table.AddColumn(MesDescricaoResumidaAtual, "Mês Descrição", each Text.Upper(Date.ToText([Data], "MMMM")), type text),
    DiaSemana = Table.AddColumn(DescricaoMes, "Dia da semana", each Date.DayOfWeek([Data]) + 1, Int64.Type),
    DescricaoDiaSemana = Table.AddColumn(DiaSemana, "Dia Semana Descrição Resumida", each Text.Upper(Date.ToText([Data], "ddd")), type text),
    AnoMes = Table.AddColumn(DescricaoDiaSemana, "Ano/Mês", each Text.From(Date.Year([Data])) & "/" & Text.PadStart(Text.From(Date.Month([Data])), 2, "0"), type text),
    MesAno = Table.AddColumn(AnoMes, "Mês/Ano", each Text.PadStart(Text.From(Date.Month([Data])), 2, "0") & "/" & Text.From(Date.Year([Data])), type text),
    Trimestre = Table.AddColumn(MesAno, "Trimestre", each Date.QuarterOfYear([Data]), Int64.Type),
    DescricaoTrimestre = Table.AddColumn(Trimestre, "Trimestre descrição resumida", each "T" & Number.ToText(Date.QuarterOfYear([Data])), type text),
    AnoTrimestre = Table.AddColumn(DescricaoTrimestre, "Ano/Trimestre", each Text.From(Date.Year([Data])) & "/" & Number.ToText(Date.QuarterOfYear([Data])), type text),
    Quadrimestre = Table.AddColumn(AnoTrimestre, "Quadrimestre", each Number.RoundUp(Date.Month([Data]) / 4), Int64.Type),
    DescricaoQuadrimestre = Table.AddColumn(Quadrimestre, "Quadrimestre descrição resumida", each "Q" & Number.ToText(Number.RoundUp(Date.Month([Data]) / 4)), type text),
    AnoQuadrimestre = Table.AddColumn(DescricaoQuadrimestre, "Ano/Quadrimestre", each Text.From(Date.Year([Data])) & "/" & Number.ToText(Number.RoundUp(Date.Month([Data]) / 4)), type text),
    Semestre = Table.AddColumn(AnoQuadrimestre, "Semestre", each Number.RoundUp(Date.Month([Data]) / 6), Int64.Type),
    AnoSemestre = Table.AddColumn(Semestre, "Ano/Semestre", each Text.From(Date.Year([Data])) & "/" & Number.ToText(Number.RoundUp(Date.Month([Data]) / 6)), type text),
    SemanaAno = Table.AddColumn(AnoSemestre, "Semana do ano", each Date.WeekOfYear([Data]), Int64.Type),
    DescricaoSemanaAno = Table.AddColumn(SemanaAno, "Semana do ano descrição", each "SEMANA " & Text.From(Date.WeekOfYear([Data])), type text),
    SemanaMes = Table.AddColumn(DescricaoSemanaAno, "Semana do Mês", each Date.WeekOfYear([Data]) - Date.WeekOfYear(#date(Date.Year([Data]), Date.Month([Data]), 1)) + 1, Int64.Type),
    DescricaoSemanaMes = Table.AddColumn(SemanaMes, "Semana do mês descrição", each "SEMANA " & Text.From(Date.WeekOfYear([Data]) - Date.WeekOfYear(#date(Date.Year([Data]), Date.Month([Data]), 1)) + 1), type text)
in
    DescricaoSemanaMes
				
			

relacionamento tabelas power bi

Salvando o Projeto no Formato PBIP

Para maior flexibilidade, salvei o projeto no formato PBIP. Esse formato oferece acesso aos arquivos do modelo no padrão TMDL (Tabular Model Definition Language), permitindo uma interação mais rica com a estrutura do modelo de dados. É importante destacar que, para salvar um projeto nesse formato, você precisa ativar o Developer Mode, que atualmente está em versão prévia no Power BI. Para ativar, siga os passos abaixo:

  1. Vá em Arquivo > Opções e configurações > Opções.
  2. Na seção Recursos de visualização, localize a opção “Opção de salvar como projeto do Power BI (.pbip)”.
  3. Marque a caixa correspondente para habilitar o recurso.

develop mode power bi

Após ativar o Developer Mode, você poderá salvar seu projeto no formato PBIP, desbloqueando o acesso aos arquivos TMDL para personalizações avançadas e integrações externas.

O que é o TMDL e Por Que Ele é Importante no Power BI?

O TMDL (Tabular Model Definition Language) é uma linguagem baseada em JSON usada para descrever modelos tabulares no Power BI, Analysis Services e outras ferramentas da Microsoft. Ele documenta a estrutura do modelo, como tabelas, colunas, medidas, hierarquias e relacionamentos, permitindo personalizações avançadas.

Uma das grandes vantagens do TMDL é sua flexibilidade para integração com ferramentas externas e o controle de versões. Por ser baseado em JSON, o TMDL pode ser versionado com facilidade em plataformas como o GitHub. Isso permite que desenvolvedores acompanhem mudanças no modelo, colaborem em equipe e mantenham um histórico claro de alterações. Se você deseja saber mais sobre como usar o GitHub para versionar arquivos TMDL e colaborar em projetos Power BI, confira o artigo Power BI e GitHub: Versionamento e Colaboração em Equipe.

Essa combinação entre TMDL, Power BI e ChatGPT oferece um ecossistema completo para desenvolver, colaborar e gerenciar projetos Power BI de forma eficiente. Para mais detalhes sobre o TMDL, recomendo a leitura do artigo oficial da Microsoft sobre TMDL.

A Importância do Prompt

Se você já interagiu com ferramentas de inteligência artificial como o ChatGPT, deve saber que tudo começa com o prompt. O prompt nada mais é do que a instrução ou pergunta que você fornece à IA para obter uma resposta ou ação específica. É como dar uma “missão” clara e objetiva para que a IA possa executar sua tarefa da melhor maneira possível.

A qualidade do prompt é crucial, pois ele define o contexto, os detalhes e o tipo de saída que você espera. No meu caso, para criar medidas DAX no Power BI, o prompt foi cuidadosamente elaborado para incluir informações sobre as tabelas, relacionamentos e as medidas que eu precisava. Abaixo, você pode conferir o prompt exato que utilizei para essa integração:

				
					<prompt>
  <instrucoes>
    Você é um especialista em Power BI e DAX. Sua tarefa é analisar arquivos no formato TMDL, um formato proprietário do Power BI usado para descrever metadados do modelo, incluindo tabelas, colunas e relacionamentos. Siga rigorosamente as instruções e etapas definidas abaixo para garantir uma análise precisa e organizada.

    <regras>
      <regra>Solicite todos os arquivos necessários para a análise (TMDL).</regra>
      <regra>Confirme com o usuário se ainda há mais arquivos a serem enviados antes de iniciar qualquer análise.</regra>
      <regra>Apenas comece a análise depois que o usuário confirmar que não há mais arquivos.</regra>
      <regra>Após receber todos os arquivos, apresente uma visão inicial detalhada do modelo.</regra>
      <regra>Somente pergunte sobre a criação de medidas DAX após concluir a documentação inicial.</regra>
    </regras>
  </instrucoes>

  <objetivo>
    Garantir que a análise do modelo baseado em arquivos TMDL seja feita com precisão, documentando tabelas, colunas e relacionamentos antes de avançar para solicitações de criação de medidas DAX.
  </objetivo>

  <passos>
    <passo ordem="1">
      Solicite ao usuário que envie os arquivos TMDL necessários para análise.
    </passo>
    <passo ordem="2">
      Confirme com o usuário se há mais arquivos a serem enviados. Exemplo: "Há mais algum arquivo TMDL que você deseja enviar para esta análise?"
    </passo>
    <passo ordem="3">
      Após o usuário confirmar que não há mais arquivos, inicie a análise e apresente a seguinte documentação inicial:
      <detalhes>
        <item>Listagem das tabelas, colunas e tipos de dados.</item>
        <item>Descrição dos relacionamentos, incluindo tabelas de origem e destino, chaves primárias e estrangeiras, cardinalidade e direção do filtro cruzado.</item>
      </detalhes>
    </passo>
    <passo ordem="4">
      Pergunte ao usuário qual medida ou cálculo DAX ele deseja criar com base na documentação inicial apresentada.
    </passo>
    <passo ordem="5">
      Crie as medidas ou cálculos solicitados, garantindo precisão no uso de funções iteradoras (como SUMX) e agregadoras simples (como SUM), conforme necessário.
    </passo>
  </passos>

  <restricoes>
    <restricao>Não inicie a análise antes de receber todos os arquivos TMDL necessários.</restricao>
    <restricao>Confirme explicitamente com o usuário se não há mais arquivos antes de iniciar a análise.</restricao>
    <restricao>Não crie medidas ou cálculos DAX até que sejam solicitados pelo usuário.</restricao>
  </restricoes>
</prompt>

				
			

Essa clareza no prompt garantiu que o ChatGPT entendesse meu objetivo e entregasse resultados precisos e relevantes.

Utilizando o ChatGPT para Criar Medidas DAX

Com o prompt definido, enviei a solicitação ao ChatGPT para criar medidas DAX baseadas no meu modelo de dados. Durante o processo, o ChatGPT solicitou os arquivos TMDL do projeto para entender a estrutura completa do modelo, incluindo tabelas, colunas e relacionamentos. Esses arquivos estão localizados dentro da pasta do projeto salvo no seguinte caminho:

  • SemanticModel\definition – Contém o arquivo relationships.tmdl, que descreve os relacionamentos do modelo.
  • SemanticModel\definition\tables – Contém os arquivos TMDL individuais das tabelas:
    • dCliente.tmdl
    • dProduto.tmdl
    • dVendedor.tmdl
    • fVendas.tmdl

pasta tmdl

arquivos tmdl power bi

Após enviar esses arquivos para análise, o ChatGPT conseguiu compreender a estrutura do modelo e gerar as medidas DAX solicitadas com base nas informações disponíveis.

				
					Total Venda = SUM(fVendas[quantidade] * fVendas[valor_unitario])

Total Desconto = SUM(fVendas[desconto])

Total Custo = SUM(fVendas[quantidade] * fVendas[custo_unitario])

% Desconto = DIVIDE([Total Desconto], [Total Venda], 0)

% Margem = DIVIDE(([Total Venda] - [Total Custo]), [Total Venda], 0)

				
			

Ganhando Produtividade com Novas Ideias de KPIs

Além de criar as medidas básicas, explorei o potencial do ChatGPT para gerar novas ideias de KPIs. Pedi sugestões para indicadores que poderiam enriquecer meu painel e recebi recomendações valiosas, como margens de lucro e análise de ticket médio por categoria.

Essa interação com o Power BI e ChatGPT mostrou como é possível automatizar partes do trabalho e, ao mesmo tempo, expandir as possibilidades de análise de dados.

Integração que Faz a Diferença

Integrar o Power BI e ChatGPT ao meu fluxo de trabalho foi um divisor de águas, especialmente na criação de medidas DAX e na obtenção de ideias para KPIs. O uso do formato TMDL tornou essa integração ainda mais prática, permitindo maior controle sobre a estrutura do modelo de dados, além de abrir portas para práticas colaborativas e versionamento com GitHub.

Se você busca otimizar sua rotina no Power BI e explorar novas maneiras de ganhar produtividade, recomendo experimentar essa abordagem. E se já utiliza ferramentas como o ChatGPT, que tal compartilhar suas experiências e os KPIs que você criou com sua ajuda? Vamos trocar ideias!

Artigos relacionados

0 0 votos
Article Rating
Inscrever-se
Notificar de
guest
0 Comentários
mais antigos
mais recentes Mais votado
Feedbacks embutidos
Ver todos os comentários
Botão Voltar ao topo