Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Syndicate_Admin
Administrator
Administrator

Modificación del archivo layout incrustado en un archivo pbix

Sé cómo desmontar un archivo pbix cambiando la extensión a .zip y luego enfréndolo. Si, a continuación, cambio la extensión de nuevo a .pbix, puedo abrirla en Power BI. Sin embargo, me gustaría modificar el archivo de diseño que se expone al desmontar el pbix. Pero cuando hago eso y cambio la extensión de la .zip a .pbix, recibo un mensaje de archivo dañado cuando intento abrir en Power BI. Esto sucede sin importar cuán pequeño e inocuo sea el cambio.

¿Hay alguna manera de hacer esto sin recibir el mensaje de archivo dañado?

32 REPLIES 32
Syndicate_Admin
Administrator
Administrator

hola a todos,

Estoy intentando modificar el contenido del archivo de diseño mediante el script de PowerShell. Cuando estoy intentando establecer contenido con -Codificación "unicode" . Después de eso, pbix no puede abrirse y mostrar el error corrpupted. También en notpad ++ se muestra "UTF-16 LE BOM codificación. Pero el final de Origial Layout era "utf-16 Little Endian.


Set-Content -Path "C:\PowerShell\newre\newRe\Report\Test" -Value $final -Codificación unicode

¿Puede alguien ayudarme a resolverlo?

Syndicate_Admin
Administrator
Administrator

Creé una idea para abordar esta pregunta, por favor vote:

Cambiar el nombre de las medidas del conjunto de datos no puede romper los informes de cliente (cambiar la referencia de nombre a ID)

https://ideas.powerbi.com/ideas/idea/?ideaid=649ec802-682b-ec11-b76a-281878e608e9

Syndicate_Admin
Administrator
Administrator

Estuve luchando con este problema recientemente, y mi solución es la siguiente:

- Cambiar la extensión de ".pbix" a ".zip"

- No descomprima el archivo ".zip" durante este proceso

- Extraer el archivo "Diseño" de la carpeta "Informe" en el archivo ".zip"

- Abra el archivo "Layout" con Notepad++. (MUY IMPORTANTE)

- Realizar sus modificaciones en el archivo de diseño

- Sustituir el antiguo archivo "Layout" por el nuevo

- Eliminar archivo "SecurityBindings" en el archivo ".zip"

- En el [Contents_type].xml eliminar el texto siguiente:

"<Override PartName="/SecurityBindings" ContentType="" />"

- Cambiar la extensión de ".zip a ".pbix"

- El archivo se abrirá sin pausas

¡Espero que ayude!

¡BIEN! Guardé mi semana \o/

Gracias @Parra

Sí, esto funcionó. Debido a esto se ahorra tanto tiempo. No sé cómo agradecerte.

¡Esto funcionó! ¡Muchas gracias! Me ahorró horas de tener que reconstruir el archivo

Syndicate_Admin
Administrator
Administrator

Descubrí que cuando estaba guardando, WriteAllTextAsync estaba preendiendo 2 bytes adicionales.. usando FlexHex pude ver que el original no tenía eso.

2cdba354-cdd6-438c-8daf-e0aa18da5772.jpg

Para solucionar esto acabo de guardar con WriteAllTextAsync con Encoding.Unicode. Se ha vuelto a abrir como bytes y se ha guardado omitiendo los primeros 2 bytes en cuestión.

var serializedFile = JsonConvert.SerializeObject(_layoutModel);
await System.IO.File.WriteAllTextAsync(Filepath, serializedFile, Encoding.Unicode);

var asBytes = await System.IO.File.ReadAllBytesAsync(Filepath);
await System.IO.File.WriteAllBytesAsync(Filepath, asBytes.Skip(2).ToArray());

Al igual que una FYI, como otros han mencionado también necesitaba editar [Content_Type].xml y quitar la etiqueta Override con el PartName == "/SecurityBindings". Después de que powerbi lo cargó bien (ignorando las comprobaciones de validación que hizo).

Esto es lo que funcionó para mí.

Después de un poco de investigación me di cuenta de que es un marcador para el orden de bytes de unicode (había dicho que era esto, pero no lo sabía con seguridad hasta ahora). De todos modos, he actualizado el código presionado aquí ayer. (No se pudo encontrar un enlace de edición para mi publicación anterior)

public async Task Save()
{
    var layoutFile = JsonConvert.SerializeObject(_layoutModel);
    await System.IO.File.WriteAllTextAsync(Filepath, layoutFile, Encoding.Unicode);

    IEnumerable<byte> layoutAsBytes = await System.IO.File.ReadAllBytesAsync(Filepath);
    layoutAsBytes = StripUnicodeByteOrder(layoutAsBytes);
    await System.IO.File.WriteAllBytesAsync(Filepath, layoutAsBytes.ToArray());
}

public static IEnumerable<Byte> StripUnicodeByteOrder(IEnumerable<byte> bytes)
{
    if (bytes.ElementAt(0) == 0xFF && bytes.ElementAt(1) == 0xFE)
        bytes = bytes.Skip(2);

    return bytes;
}

No @instinct46,

¿Podría explicar dónde y cómo se debe ejecutar exactamente este código? En mi caso, no quiero cambiar el archivo de configuración, pero quiero cambiar el datamodelschema para agregar medidas mediante programación.

Gracias de antemano.

No creo que el código sea necesario si realiza ediciones con notepad ++ y no con Notepad. Seguí recibiendo un archivo corrupto a pesar de pensar que había seguido las instrucciones exactamente, luego me encontré con esto y me di cuenta de que el Bloc de notas era el culpable (y más tarde noté que las instrucciones anteriores dicen explícitamente en mayúsculas que es MUY IMPORTANTE usar notepad ++ para hacer ediciones, sin embargo, de alguna manera las 😀 había pasado por alto).

elimcd79_0-1665524901501.png

¡Espero que esto sea lo que está causando su problema también!

Syndicate_Admin
Administrator
Administrator

Cuando elimino "<Override PartName="/SecurityBindings" ContentType="" />" en el archivo raíz [Content_Types].xml, puedo editar el archivo PBIX y abrirlo sin problemas.

eh
Probé su solución, está funcionando muy bien !
muchas gracias !

hola

Cuando intento simplemente quitar el "<Override PartName="/SecurityBindings" ContentType="" />" en el archivo raíz [Content_Types].xml e intento volver a construir el pbix mediante la captura del archivo, todavía no puedo abrir el archivo. Por favor, aconseje.

Intente eliminar el archivo de enlaces de seguridad en lugar de quitar este código.

Además, cuando usted dice que zipping el archivo... Vea mi comentario de arriba. El archivo extraído no debe volver a comprimirse. En su lugar, el archivo layout extraído debe actualizarse y, a continuación, copiarse en la carpeta .zip original (eliminar archivo de enlaces de seguridad desde aquí). A continuación, se debe cambiar el nombre de nuevo a .pbix

Su doen't funciona para mí

Lo siento, no funciona para mí.

eh

Su trabajo!! Gracias.

Syndicate_Admin
Administrator
Administrator

El mismo problema aquí, pero incluso sin recomprimir el archivo, causa corrupción :(,
espero que sea posible tratar con el Diseño directamente un día.

Syndicate_Admin
Administrator
Administrator

Puedo cambiar el archivo de diseño haciendo lo siguiente:

Cambiar .pbix a .zip

Extraer archivo

Modificar y guardar el archivo layout extraído

Copiar el archivo layout modificado en la carpeta zipped original *

Cambiar el nombre .zip a .pbix

*Esto es necesario. Volver a envolver el archivo extraído causará corrupción

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors