idgalvan
Hola,
Estoy usando la carpeta get from para obtener algunos archivos de resultados de un proceso que ejecuto a diario. los resultados contienen varias columnas y una de ellas es un XML que también analizo para obtener valores individuales en el informe.
Recientemente, los domingos y festivos, el proceso devuelve 0 resultados, es decir, 0 archivos, y PowerBi no puede actualizarse debido a un error al intentar actualizar esta carpeta.
No había suficientes elementos en la enumeración para completar la operación.
Este es un paso de let en la consulta de resultados, pero me pregunto si hay una manera de probar o agregar controles para que esto no devuelva un error y permita que el informe se actualice correctamente.
v-shex-msft
Hola @idgalvan,
Según tengo entendido, desea agregar una fórmula de manejo de errores en su consulta, ¿verdad?
Si este es un caso, puede agregar la siguiente fórmula en negrita a su consulta:
let Source = Xml.Tables(File.Contents("C:UsersxxxxxDesktopabc.xml")), Table0 = try Source{0}[Table] otherwise null in Table0
Devolverá un valor nulo si la fuente de obtención de datos falla.
Por cierto, también puede usar la función #table() para crear una tabla vacía para reemplazar el resultado del error.
Link de referencia:
Creación de tablas en código Power BI/Power Query M usando #table()
Saludos,
Xiaoxin-sheng
idgalvan
En respuesta a v-shex-msft
Hola,
No es exactamente lo que estoy haciendo/fallando. Aquí está mi consulta (menos algunos campos redactados para protección):
dejar
Fuente = Carpeta.Archivos(«
#»Invocar función personalizada 1″ = Table.AddColumn(Source, «Transform File», each #»Transformar archivo desde el origen»([Content])),
#»Columnas renombradas1″ = Table.RenameColumns(#»Invocar función personalizada1″, {«Nombre», «Fuente.Nombre»}),
#»Otras columnas1 eliminadas» = Table.SelectColumns(#»Columnas renombradas1″, {«Origen.Nombre», «Transformar archivo desde el origen»}),
#»Columna de tabla ampliada 1″ = Table.ExpandTableColumn(#»Otras columnas1 eliminadas», «Transformar archivo desde el origen», Table.ColumnNames(#»Transformar archivo desde el origen»(#»Archivo de muestra»))),
#»Tipo cambiado» = Table.TransformColumnTypes(),
#»Texto insertado entre delimitadores» = Table.AddColumn(),
#»Columnas renombradas» = Table.RenameColumns(),
#»Filas filtradas» = Table.SelectRows()
en
#»Filas filtradas»
Esto no se actualiza si no hay carpetas con «No había suficientes elementos en la enumeración para completar la operación.«
Intento crear una función que rodee thisi con
dejar
Función =() =>
// código anterior
en
Función
y luego haciendo una consulta:
source = try Function () de lo contrario, es nulo, pero esto falla con el desbordamiento de la pila. cualquier idea es apreciada.
Marcel Beug
En respuesta a idgalvan
Si la situación es que la tabla en Origen está vacía, puede agregar un paso al final de su consulta original:
Result = if Table.IsEmpty(Source) then #table(0,{}) else #"Filtered Rows" in Result
Debido a la evaluación diferida, el resto del código de la consulta no se evaluará si el origen está vacío.
En lugar de #table(0,{}), es posible que desee crear una tabla ficticia vacía en otra consulta y hacer referencia a esta tabla.