Conexión de URL dinámica

Un usuario Pregunto ✅

jracer007

Hola, tengo una lista de más de 200 url a las que debo conectarme para obtener datos. ¿Hay alguna forma de hacer esto rápidamente sin tener que conectarse una y otra vez?

Opera Instantánea_2018-01-31_152020_millicom-my.sharepoint.com.png

Greg_Deckler

@ImkeFand @MarcelBeug serán tus mejores apuestas para esto.

ImkeF

En respuesta a Greg_Deckler

Agregue una nueva columna a su tabla donde llame a la URL para cada fila.

O convierta todas sus operaciones por URL en una función y aplíquela como se describe aquí: https://www.youtube.com/watch?v=RXm1MoxD1UA&t=94s

jracer007

En respuesta a ImkeF

@ImkeF Expression.Error: La evaluación resultó en un desbordamiento de pila y no puede continuar.

ImkeF

En respuesta a jracer007

Secundo lo que ha dicho @MarkLaf: para ayudarlo, necesitamos ver los detalles exactos de su función / consulta.

jracer007

En respuesta a ImkeF

Probé la función con un parámetro pero sigo recibiendo el mismo error.

Esta es mi función de datos, contiene todas las URL en JSON:

= Excel.Workbook(Web.Contents("https://docs.google.com/spreadsheets/d/e/2PACX-1vSwdO2Z5bz5axku2XRhWtLHhkVwTC2zNCcelMFxO_d5iXFNQeiKzNsjwSq6DOSLSf4xgqbekRw9Rvyu/pub?output=xlsx"), null, true)

Y esta es mi función personalizada invocada con una URL:

= () => let
        Source = Excel.Workbook(Web.Contents("https://docs.google.com/spreadsheets/d/e/2PACX-1vSwdO2Z5bz5axku2XRhWtLHhkVwTC2zNCcelMFxO_d5iXFNQeiKzNsjwSq6DOSLSf4xgqbekRw9Rvyu/pub?output=xlsx"), null, true),
        #"Hoja 1_Sheet" = Source{[Item="Hoja 1",Kind="Sheet"]}[Data],
        #"Changed Type" = Table.TransformColumnTypes(#"Hoja 1_Sheet",{{"Column1", type text}}),
        #"Promoted Headers" = Table.PromoteHeaders(#"Changed Type", [PromoteAllScalars=true]),
        #"Changed Type1" = Table.TransformColumnTypes(#"Promoted Headers",{{"links", type text}})
    in
        #"Changed Type1"

Este es el contenido deseado de cada URL:

poder bi_diego5.png

MarkLaf

En respuesta a jracer007

Creo que @ImkeF estaba hablando de usar una función en cada URL, asumiendo que había varios pasos de obtención y transformación que necesitabas hacer en cada uno. La función que ha configurado es simplemente acceder a la hoja de Google y promocionar encabezados, no hace nada con una URL.

Dado que todas las URL apuntan a un documento json, no creo que debas probar algo tan sofisticado. Creo que lo siguiente debería funcionar para ti:

let
    Source = Excel.Workbook(Web.Contents("https://docs.google.com/spreadsheets/d/e/2PACX-1vSwdO2Z5bz5axku2XRhWtLHhkVwTC2zNCcelMFxO_d5iXFNQeiKzNsjwSq6DOSLSf4xgqbekRw9Rvyu/pub?output=xlsx"), null, true),
    #"Hoja 1_Sheet" = Source{[Item="Hoja 1",Kind="Sheet"]}[Data],
    #"Promoted Headers" = Table.PromoteHeaders(#"Hoja 1_Sheet", [PromoteAllScalars=true]),
    GetJson = Table.AddColumn(#"Promoted Headers", "data", each Json.Document(Web.Contents([links]))),
    ExpandJson = Table.ExpandRecordColumn(GetJson, "data", {"id", "url", "user_id", "value", "item_id", "item_type", "created_at", "updated_at", "Column9"})
in
    ExpandJson

Tenga en cuenta que este es el equivalente aproximado de usar la interfaz de usuario para:

  1. Cargue en el libro de trabajo y seleccione Hoja 1_Sheet
  2. Botón «Usar la primera fila como encabezados» para promocionar los encabezados
  3. Agregue una columna personalizada (en la cinta Agregar columna) con «datos» como nombre y «Json.Document (Web.Contents ([links])) «como fórmula personalizada
  4. Expanda la columna personalizada y extraiga todos los atributos

¿Eso ayuda?

jracer007

En respuesta a MarkLaf

su casa de 200 url

jracer007

En respuesta a MarkLaf

¡¡Hola!!

@MarkLaf Formula.Firewall: La consulta ‘Hoja 1’ (paso ‘ExpandJson’) está accediendo a fuentes de datos que tienen niveles de privacidad que no se pueden usar juntos. Reconstruya esta combinación de datos.

MarkLaf

En respuesta a jracer007

¿Qué función personalizada estás intentando utilizar? ¿Confirmó que funciona con una sola instancia antes de aplicar a todas? ¿Se agota el tiempo de espera del paso de la columna personalizada incluso con algo simple como = Json.Document (Web.Contents ([url]))?

jracer007

En respuesta a ImkeF

¿Cómo puedo crear la función correctamente?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *