cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Helper I
Helper I

Error AccessForbinddenException para actualizar datos

Hola

Uso una consulta llamando a otra consulta, a través de la API y no puedo actualizar los datos en Power BI.

En Power Query funciona normalmente, pero para ello, para que en Power Query pudiera ejecutar la "consulta desde la consulta" tenía que realizar los siguientes cambios en mi proyecto:

1 - Borre los permisos globales y los permisos locales en la configuración del origen de datos.

2 - Configuración del origen de datos >> Editar permisos: Cambié al nivel de privacidad: ninguno y Credenciales: ninguno

3 - En el menú Opciones >> Privacidad, revisé el elemento: "ignorar siempre la configuración del nivel de privacidad"

Al cambiar los elementos anteriores, en Power Query, mi consulta funciona correctamente. Sin embargo, al intentar aplicar estos cambios al Panel, aparece el siguiente mensaje de error:

erro.png

- Mi consulta enumera alrededor de 30 mil filas, y noté que si limito mi consulta a la mitad de los datos, funciona normalmente sin el error anterior, en el panel del panel, actualizando los datos correctamente.
Mi pregunta es si hay alguna limitación de límite de datos para cargar en el panel? Y si es así, ¿cómo puedo resolver este problema?
Si no es una limitación de las líneas en la carga, ¿qué podría estar sucediendo para que mi panel no se actualice?

Mi consulta:

let
    ufnCallAPI = (numPedido) =>

        let
            result = Json.Document(Web.Contents("https://api.vhsys.com/", [RelativePath="v2/pedidos/" & Number.ToText(numPedido)  & "/produtos", 
             Headers=[#"access-token"="OCKNYbAMaDgLBZBSQPCOGPWOXGSbdO", #"secret-access-token"="xxxxxxxx"]]))  
        in
            result,

        pageRange = listaPedidos_Aquiles2, /* MY OTHER QUERY */
        pages = List.Transform(pageRange, each ufnCallAPI(_)),
    pages2 = Table.FromList(pages, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    pages3 = Table.ExpandRecordColumn(pages2, "Column1", {"code", "status", "data"}, {"code", "status", "data"}),
    pages4 = Table.ExpandListColumn(pages3, "data"),
    pages5 = Table.RemoveColumns(pages4,{"code", "status"}),
    #"data Expandido" = Table.ExpandRecordColumn(pages5, "data", {"id_ped_produto", "id_pedido", "id_produto", "desc_produto", "qtde_produto", "desconto_produto", "ipi_produto", "icms_produto", "valor_unit_produto", "valor_custo_produto", "valor_total_produto", "valor_desconto", "peso_produto", "peso_liq_produto", "info_adicional", "xPed_produto", "nItem_produto"}, {"id_ped_produto", "id_pedido", "id_produto", "desc_produto", "qtde_produto", "desconto_produto", "ipi_produto", "icms_produto", "valor_unit_produto", "valor_custo_produto", "valor_total_produto", "valor_desconto", "peso_produto", "peso_liq_produto", "info_adicional", "xPed_produto", "nItem_produto"}),
    #"Personalização Adicionada" = Table.AddColumn(#"data Expandido", "Empresa", each "Aquiles")
in
    #"Personalização Adicionada"

¡Muchas gracias!

4 REPLIES 4
Highlighted
Super User V
Super User V

Re: Error AccessForbinddenException para actualizar datos

Hola @emerson89 ,

¿Lo estás paginando? Intente ejecutarlo con 1 o 2 páginas, sólo para comprobar si recibe este error.



Did I answer your question? Mark my post as a solution!

Proud to be a Super User!



Highlighted
Helper I
Helper I

Re: Error AccessForbinddenException para actualizar datos

Hola @camargos88 ,


Sí, Mi consulta listaPedidosAquiles es paginate, pero, solo, este trabajo está bien. Lo probé dividiendo la cantidad de página por la mitad, y funcionó bien. Lo probé en 4 páginas también, por ejemplo, y todo funciona normalmente. El problema se produce cuando intento enumerar todos los datos. ¿Alguna idea?

Gracias

Highlighted
Super User V
Super User V

Re: Error AccessForbinddenException para actualizar datos

@emerson89 ,

Sospecho que el código intenta obtener más páginas que la cantidad disponible.

¿Cómo se define la cantidad de páginas?



Did I answer your question? Mark my post as a solution!

Proud to be a Super User!



Highlighted
Helper I
Helper I

Re: Error AccessForbinddenException para actualizar datos

Hola @camargos88 ,

Realmente, su observación tiene sentido, sin embargo, cuando ejecuto la consulta que utilizo para separar los números (solicitudes) que se utilizarán como parámetro para la segunda consulta, funciona perfectamente.

Aquí está mi primera consulta:

let
    ufnCallAPI = (nPage) =>
        let
            result = Json.Document(Web.Contents("https://api.vhsys.com/", [RelativePath="v2/pedidos?offset=" & Number.ToText(nPage) & "&limit=250&status=Atendido", 
            Headers=[#"access-token"="OCKNYbAMaDgLBZBSQPCOGPWOXGSbdO", #"secret-access-token"="xxxxxxxxx"]]))  
        in
            result,

        tmpResult = ufnCallAPI(1),

        auxTotal1 = Record.ToTable(tmpResult),
        Value = auxTotal1{2}[Value],
        auxTotal2 = Value[total],

        totalItems = auxTotal2,
        pageRange = {0..Number.RoundUp(totalItems / 250)-1},
        aux = List.Transform(pageRange, each ufnCallAPI(_*250)),
        aux2 = Table.FromList(aux, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
        aux3 = Table.ExpandRecordColumn(aux2, "Column1", {"code", "status", "paging", "data"}, {"Column1.code", "Column1.status", "Column1.paging", "Column1.data"}),
        aux4 = Table.ExpandListColumn(aux3, "Column1.data"),
        aux5 = Table.RemoveColumns(aux4,{"Column1.code", "Column1.status", "Column1.paging"}),
        aux6 = Table.ExpandRecordColumn(aux5, "Column1.data", {"id_ped", "id_pedido", "id_cliente", "nome_cliente", "id_local_retirada", "id_local_cobranca", "vendedor_pedido", "vendedor_pedido_id", "listapreco_produtos", "valor_total_produtos", "desconto_pedido", "desconto_pedido_porc", "peso_total_nota", "peso_total_nota_liq", "frete_pedido", "valor_total_nota", "valor_baseICMS", "valor_ICMS", "valor_baseST", "valor_ST", "valor_IPI", "condicao_pagamento_id", "condicao_pagamento", "frete_por_pedido", "transportadora_pedido", "id_transportadora", "data_pedido", "prazo_entrega", "referencia_pedido", "obs_pedido", "obs_interno_pedido", "status_pedido", "contas_pedido", "comissao_pedido", "estoque_pedido", "ordemc_emitido", "data_cad_pedido", "data_mod_pedido", "id_aplicativo", "id_pedido_aplicativo", "lixeira"}, {"id_ped", "id_pedido", "id_cliente", "nome_cliente", "id_local_retirada", "id_local_cobranca", "vendedor_pedido", "vendedor_pedido_id", "listapreco_produtos", "valor_total_produtos", "desconto_pedido", "desconto_pedido_porc", "peso_total_nota", "peso_total_nota_liq", "frete_pedido", "valor_total_nota", "valor_baseICMS", "valor_ICMS", "valor_baseST", "valor_ST", "valor_IPI", "condicao_pagamento_id", "condicao_pagamento", "frete_por_pedido", "transportadora_pedido", "id_transportadora", "data_pedido", "prazo_entrega", "referencia_pedido", "obs_pedido", "obs_interno_pedido", "status_pedido", "contas_pedido", "comissao_pedido", "estoque_pedido", "ordemc_emitido", "data_cad_pedido", "data_mod_pedido", "id_aplicativo", "id_pedido_aplicativo", "lixeira"}),
        listPedidos = aux6[id_ped]
in
    listPedidos

Este código devuelve una lista para mí, por ejemplo:

Lista

1

2

3

48

56

88

89

100

Los números anteriores son números que paso como parámetro en la consulta siguiente llamando a la consulta 1 (listaPedidos_Aquiles):

let
    ufnCallAPI = (numPedido) =>

        let
            result = Json.Document(Web.Contents("https://api.vhsys.com/", [RelativePath="v2/pedidos/" & Number.ToText(numPedido)  & "/produtos", 
             Headers=[#"access-token"="OCKNYbAMaDgLBZBSQPCOGPWOXGSbdO", #"secret-access-token"="xxxxxxxx"]]))  
        in
            result,

        pageRange = listaPedidos_Aquiles,
        pages = List.Transform(pageRange, each ufnCallAPI(_)),
    pages2 = Table.FromList(pages, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    pages3 = Table.ExpandRecordColumn(pages2, "Column1", {"code", "status", "data"}, {"code", "status", "data"}),
    pages4 = Table.ExpandListColumn(pages3, "data"),
    pages5 = Table.RemoveColumns(pages4,{"code", "status"}),
    #"data Expandido" = Table.ExpandRecordColumn(pages5, "data", {"id_ped_produto", "id_pedido", "id_produto", "desc_produto", "qtde_produto", "desconto_produto", "ipi_produto", "icms_produto", "valor_unit_produto", "valor_custo_produto", "valor_total_produto", "valor_desconto", "peso_produto", "peso_liq_produto", "info_adicional", "xPed_produto", "nItem_produto"}, {"id_ped_produto", "id_pedido", "id_produto", "desc_produto", "qtde_produto", "desconto_produto", "ipi_produto", "icms_produto", "valor_unit_produto", "valor_custo_produto", "valor_total_produto", "valor_desconto", "peso_produto", "peso_liq_produto", "info_adicional", "xPed_produto", "nItem_produto"}),
    #"Personalização Adicionada" = Table.AddColumn(#"data Expandido", "Empresa", each "Aquiles")
in
    #"Personalização Adicionada"

Con los códigos de pedido enviados por parámetros, la API me devuelve la lista de productos para esos pedidos.

Cuando pongo a prueba con pocos datos, todo funciona. Si pruefio con todo el contenido (alrededor de 30 mil líneas), el sistema aparentemente comienza a hacer la operación, veo en el mensaje que todo se está generando correctamente, pero al final, obtengo el mensaje de error.

En realidad puede haber más elementos que devolver, que páginas, pero en este caso, no puedo encontrar el error, porque en esta consulta2, no paso el parámetro de paginación como envío solicitud por solicitud (número), diferente de la consulta 1, que devuelvo una cantidad de elementos por página.


Muchas gracias.

Helpful resources

Announcements

August Community Highlights

Check out a full recap of the month!

August 2020 CYST Challenge

Check out the winners of the recent 'Can You Solve These?' community challenge!

Experience what’s next for Power BI

Join us for an in-depth look at the new Power BI features and capabilities at the free Microsoft Business Applications Launch Event.

Top Solution Authors