Pular para o conteúdo principal

Integracao Power BI / Analytics

Conecte o Power BI diretamente a API do Fast Delivery 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://api-fastdelivery.obotzap.com",

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://api-fastdelivery.obotzap.com",

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:

FastDeliv_Deliveries[driver_id] --> FastDeliv_Drivers[id] (N:1)

Medidas DAX sugeridas

-- Total de entregas
Total Entregas = COUNTROWS(FastDeliv_Deliveries)

-- Entregas concluídas
Entregas Concluídas =
CALCULATE(
COUNTROWS(FastDeliv_Deliveries),
FastDeliv_Deliveries[status] = "completed"
)

-- Taxa de conclusao (%)
Taxa Conclusao =
DIVIDE(
[Entregas Concluídas],
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 Concluídas], 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

VisualCampo XCampo Y / ValorFiltro
Grafico de barras — Entregas por statusstatusCOUNTROWS
Linha do tempo — Entregas por diacreated_at (dia)COUNTROWS
KPI — Taxa de conclusaoTaxa Conclusao
Tabela — Top motoristasfull_nameTotal Ganhos Motoristasstatus = completed
Mapaorigin_lat/lng

Atualizacao automatica

  1. Publique o relatorio no Power BI Service
  2. Configure Credenciais da fonte de dados: autenticacao anonima (o token e gerenciado pelo script M)
  3. 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.