No había suficientes elementos en la enumeración para completar la operación. cuando no hay archivos

Un usuario Pregunto ✅

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.

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.

fallidofallidoexitosoexitoso

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.

Deja un comentario

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