Integracao Power BI / Analytics
Conecte o Power BI diretamente a API do fast_deliv para dashboards operacionais em tempo real.
Configuracao: Power Query Web Connector
Passo 1: Obter token
No Power BI Desktop, va em Transformar Dados > Editor do Power Query > Nova Consulta > Consulta em Branco.
Cole o seguinte script M na barra de formula:
// FastDeliv_Auth — obter token de acesso
let
SupabaseUrl = "https://<PROJECT>.supabase.co",
SupabaseAnon = "<ANON_KEY>",
Email = "admin@empresa.com",
Password = "sua_senha",
AuthBody = Text.ToBinary("{""email"":""" & Email & """,""password"":""" & Password & """}"),
AuthResponse = Web.Contents(
SupabaseUrl & "/auth/v1/token?grant_type=password",
[
Headers = [
#"Content-Type" = "application/json",
#"apikey" = SupabaseAnon
],
Content = AuthBody,
ManualStatusHandling = {400, 401}
]
),
AuthJson = Json.Document(AuthResponse),
AuthToken = AuthJson[access_token]
in
AuthToken
Nomeie esta consulta como FastDeliv_Token.
Passo 2: Buscar entregas
// FastDeliv_Deliveries
let
Token = FastDeliv_Token,
BaseUrl = "https://fast-deliv-backend.vercel.app",
Response = Web.Contents(
BaseUrl & "/api/v1/deliveries",
[
Headers = [
Authorization = "Bearer " & Token
]
]
),
Json = Json.Document(Response),
Table = Table.FromList(Json, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
Expanded = Table.ExpandRecordColumn(
Table, "Column1",
{"id","title","status","origin_address","destination_address",
"distance_km","driver_earnings","driver_id",
"created_at","completed_at","cancelled_at"},
{"id","title","status","origin_address","destination_address",
"distance_km","driver_earnings","driver_id",
"created_at","completed_at","cancelled_at"}
),
// Tipagem
Typed = Table.TransformColumnTypes(Expanded, {
{"distance_km", type number},
{"driver_earnings",type number},
{"created_at", type datetimezone},
{"completed_at", type datetimezone}
})
in
Typed
Passo 3: Buscar motoristas
// FastDeliv_Drivers
let
Token = FastDeliv_Token,
BaseUrl = "https://fast-deliv-backend.vercel.app",
Response = Web.Contents(
BaseUrl & "/api/v1/drivers",
[Headers = [Authorization = "Bearer " & Token]]
),
Json = Json.Document(Response),
Table = Table.FromList(Json, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
Expanded = Table.ExpandRecordColumn(
Table, "Column1",
{"id","full_name","email","is_active","created_at"},
{"id","full_name","email","is_active","created_at"}
)
in
Expanded
Relacionamentos no modelo de dados
No Power BI, configure:
Medidas DAX sugeridas
-- Total de entregas
Total Entregas = COUNTROWS(FastDeliv_Deliveries)
-- Entregas concluidas
Entregas Concluidas =
CALCULATE(
COUNTROWS(FastDeliv_Deliveries),
FastDeliv_Deliveries[status] = "completed"
)
-- Taxa de conclusao (%)
Taxa Conclusao =
DIVIDE(
[Entregas Concluidas],
CALCULATE(
COUNTROWS(FastDeliv_Deliveries),
FastDeliv_Deliveries[status] <> "cancelled"
),
0
)
-- Total pago a motoristas (R$)
Total Ganhos Motoristas =
CALCULATE(
SUM(FastDeliv_Deliveries[driver_earnings]),
FastDeliv_Deliveries[status] = "completed"
)
-- Ticket medio por entrega
Ticket Medio =
DIVIDE([Total Ganhos Motoristas], [Entregas Concluidas], 0)
-- Entregas por dia
Entregas por Dia =
DIVIDE(
[Total Entregas],
DATEDIFF(
MIN(FastDeliv_Deliveries[created_at]),
TODAY(),
DAY
) + 1,
0
)
-- Distancia media por entrega (km)
Distancia Media =
AVERAGEX(
FILTER(FastDeliv_Deliveries, FastDeliv_Deliveries[status] = "completed"),
FastDeliv_Deliveries[distance_km]
)
Visualizacoes sugeridas
| Visual | Campo X | Campo Y / Valor | Filtro |
|---|---|---|---|
| Grafico de barras — Entregas por status | status |
COUNTROWS |
— |
| Linha do tempo — Entregas por dia | created_at (dia) |
COUNTROWS |
— |
| KPI — Taxa de conclusao | — | Taxa Conclusao |
— |
| Tabela — Top motoristas | full_name |
Total Ganhos Motoristas |
status = completed |
| Mapa | origin_lat/lng |
— | — |
Atualizacao automatica
- Publique o relatorio no Power BI Service
- Configure Credenciais da fonte de dados: autenticacao anonima (o token e gerenciado pelo script M)
- Defina Atualizar agendamento: a cada 1 hora (ou conforme necessidade)
Rotacao de token
O script M reobtém o token a cada atualizacao. Certifique-se de que as credenciais de email/senha estejam armazenadas com segurança nos parametros do Power BI, nao no codigo M.
Parametros Power BI
Extraia Email, Password, SupabaseUrl e SupabaseAnon como Parametros (Pagina inicial > Gerenciar Parametros) para facilitar manutencao.