Conectar o Power BI

Gere o código M pronto para o Power Query, com paginação e tipagem já aplicadas.

Voltar ao portal
1. Configure a consulta

A chave fica apenas no seu navegador — ela nunca é enviada nem armazenada por este portal.

2. Copie o código M
let
    ApiKeyValue = "COLE_SUA_CHAVE_AQUI",
    BaseUrl = "https://claude-data-hub.lovable.app",
    PageSize = 1000,

    // Filtros opcionais por mês (AAAAMM). Record vazio = sem filtro.

    FiltroBase = [],


    FetchPage = (offset as number) as record =>
        let
            Consulta = Record.Combine({
                FiltroBase,
                [
                    limit  = Number.ToText(PageSize),
                    offset = Number.ToText(offset)
                ]
            }),
            Resposta = Web.Contents(
                BaseUrl,
                [
                    RelativePath = "api/public/snapshots",
                    Query        = Consulta,
                    Headers      = [ #"x-api-key" = ApiKeyValue ]
                ]
            )
        in
            Json.Document(Resposta),

    PrimeiraPagina = FetchPage(0),

    // Falha explícita se a resposta não trouxer o total de linhas.
    TotalBruto = Record.FieldOrDefault(PrimeiraPagina, "count", null),
    Total =
        if TotalBruto = null or not Value.Is(TotalBruto, type number)
        then error "Resposta sem o campo 'count'. Verifique a chave de API (header x-api-key) e a URL do endpoint."
        else TotalBruto,

    OffsetsRestantes =
        if Total <= PageSize
        then {}
        else List.Generate(() => PageSize, each _ < Total, each _ + PageSize),

    PaginasRestantes = List.Transform(OffsetsRestantes, each FetchPage(_)[data]),
    TodasAsLinhas = List.Combine({ PrimeiraPagina[data] } & PaginasRestantes),

    Colunas = { "mesano", "ano", "mes", "tickets_nao_finalizados" },
    TabelaBruta = Table.FromRecords(TodasAsLinhas, Colunas, MissingField.UseNull),

    TabelaTipada = Table.TransformColumnTypes(TabelaBruta, {
        {"mesano", type date},
        {"ano", Int64.Type},
        {"mes", Int64.Type},
        {"tickets_nao_finalizados", Int64.Type}
    })
in
    TabelaTipada
3. Cole no Power BI Desktop
  1. No Power BI Desktop: Página Inicial → Obter Dados → Consulta em Branco.
  2. No Editor do Power Query: Página Inicial → Editor Avançado, apague o conteúdo e cole o código acima.
  3. No prompt de credenciais, escolha Anônimo para o domínio https://claude-data-hub.lovable.app. A credencial é definida por domínio — a chave viaja no header x-api-key, e não na credencial.
  4. Clique em Fechar e Aplicar.

Trocou de endereço?

Ao alternar entre produção e preview você precisa configurar a credencial Anônimo novamente para o novo domínio em Arquivo → Opções e Configurações → Configurações da fonte de dados.

Publicando no Power BI Service

Depois de publicar o relatório, abra as configurações do conjunto de dados no Serviço e configure novamente as credenciais da fonte de dados como Anônimo — sem isso, a atualização agendada falha. A chave continua embutida no código M da consulta.

Por que o código usa RelativePath

A URL nunca é montada por concatenação: o endereço base vai em Web.Contents e o caminho em RelativePath. Isso evita que o Power BI trate a consulta como fonte dinâmica e bloqueie a atualização no Serviço/Gateway.