Cómo corregir el error Formula.Firewall en Power Query (2 formas)

Índice
  1. ¿Qué es la fórmula firewall y cómo funciona?
  2. Los dos tipos de errores de Formula.Firewall
    1. Mensaje de error de referencia de otras consultas
    2. Mensaje de error de niveles de privacidad
  3. Consultas de aplanamiento
  4. Niveles de privacidad
    1. Ignore siempre la configuración del nivel de privacidad
    2. Aplicar el nivel de privacidad correcto para cada fuente de datos
    3. Niveles de privacidad heredados
    4. Arreglando el archivo de ejemplo
  5. Conclusión

Uno de los errores más frustrantes de Power Query es el error Formula.Firewall . Sólo aparece cuando intentamos hacer algo avanzado. Además, los mensajes de error no parecen tener mucho sentido. Sin embargo, una vez que comprenda lo que hace, se dará cuenta de que la fórmula del firewall está ahí para protegernos. Por lo tanto, solo necesitamos el enfoque correcto para saber cómo corregir el error Formula.Firewall en Power Query.

Tabla de contenido
  • ¿Qué es la fórmula firewall y cómo funciona?
  • Los dos tipos de errores de Formula.Firewall
    • Mensaje de error de referencia de otras consultas
    • Mensaje de error de niveles de privacidad
  • Consultas de aplanamiento
  • Niveles de privacidad
    • Ignore siempre la configuración del nivel de privacidad
    • Aplicar el nivel de privacidad correcto para cada fuente de datos
    • Niveles de privacidad heredados
    • Arreglando el archivo de ejemplo
  • Conclusión

Descargue el archivo de ejemplo: únase al programa Insiders gratuito y obtenga acceso al archivo de ejemplo utilizado para esta publicación.

Nombre de archivo: 0126 Fórmula.Firewall en Power Query.zip

Tener acceso

Si se le solicita al abrir el archivo de ejemplo, configure los niveles de privacidad de la siguiente manera (esto ayudará a desencadenar los errores que se muestran en esta publicación).

  • Libro de trabajo actual: organizacional
  • https://xe.com/currencytables: Público

¿Qué es la fórmula firewall y cómo funciona?

El propósito de la fórmula firewall (o “firewall de privacidad de datos”, como también se le conoce) es evitar que los usuarios pasen información involuntariamente entre dos fuentes de datos.

Para entender esto, veamos un ejemplo.

Supongamos que teníamos una consulta que utilizaba un número de pasaporte como parámetro para obtener datos de una fuente de datos externa. Si ese número de pasaporte se almacenara en una celda de un libro de Excel, solo sería accesible para aquellos en nuestra organización. La fuente de datos externa, sin embargo, está fuera de nuestra organización. Los números de pasaporte son información sensible/confidencial que no debe compartirse externamente, por lo tanto, realmente no queremos que Power Query permita esta filtración de datos.

En este escenario, aparece el error de firewall de fórmula; nos impide tomar esta acción.

Power Query no sabe si el valor que estamos pasando es confidencial o no. Por lo tanto, en lugar de permitir el riesgo, Power Query impide que los datos pasen entre niveles de privacidad incompatibles. Esto obliga a los usuarios a ser intencionales sobre qué datos se pasan hacia y desde las consultas.

Los dos tipos de errores de Formula.Firewall

El error Formula.Firewall puede adoptar dos formas:

  • Mensaje de error de referencia de otras consultas
  • Mensaje de error de niveles de privacidad

Examinaremos ambos.

Mensaje de error de referencia de otras consultas

El primer mensaje de error es:

Error de Formula.Firewall al combinar fuentes de datos

Formula.Firewall: La consulta '____' (paso '____') hace referencia a otras consultas o pasos, por lo que es posible que no acceda directamente a una fuente de datos. Reconstruya esta combinación de datos.

Este error surge cuando el firewall de fórmula no puede funcionar correctamente debido a la forma en que se han estructurado las consultas.

En segundo plano, Power Query crea particiones para controlar cómo interactúan las fuentes de datos entre sí. Cada partición no tiene acceso directo a otras particiones, sino que realiza una llamada a través de una puerta de enlace.

Si nuestras consultas están estructuradas de modo que una fuente proporcione información a otra fuente, la puerta de enlace no puede funcionar correctamente. Por lo tanto, esto desencadena el error Formula.Firewall.

Consulte la sección de consultas de aplanamiento a continuación para obtener detalles sobre cómo solucionar este error.

Mensaje de error de niveles de privacidad

El segundo mensaje de error es:

Fórmula.Firewall desde niveles de privacidad

Fórmula.Firewall: La consulta '____' (paso '____') accede a las fuentes de datos que tienen niveles de privacidad que no se pueden usar juntos. Reconstruya esta combinación de datos.

Este error surge al combinar dos fuentes de datos con niveles de privacidad incompatibles. Consulte la sección de niveles de privacidad a continuación para obtener detalles para corregir este error.

Consultas de aplanamiento

El proceso de aplanamiento de consultas garantiza que la información se pase directamente desde la fuente a la consulta y no a través de otra fuente. Esto permite que la puerta de enlace funcione correctamente.

Para entender el proceso, usemos un ejemplo. Hemos creado una herramienta para recuperar tipos de cambio de xe.com. Inicialmente, el proceso se creó con una fecha fija del 15 de enero de 2023. Ahora queremos dinamizar la fecha.

Fórmula.Firewall: archivo de ejemplo

El valor en la celda C3 es una fecha que el usuario puede ingresar.

La fórmula de la celda C5 utiliza la fecha de la celda C3 para generar una URL válida para trabajar con xe.com .

="https://www.xe.com/currencytables/?from=USDdate="TEXT(C3,"YYYY-MM-DD")

C5 también es un rango con nombre llamado URLPath ; esto se ha cargado en Power Query como una consulta independiente. Luego, dentro de Power Query, hemos profundizado en el valor para crear un parámetro dinámico .

El código M para la consulta URLPath es (haga clic en Ver editor avanzado para ver el código):

let    Source = Excel.CurrentWorkbook(){[Name="URLPath"]}[Content],    Column1 = Source{0}[Column1]in    Column1

La consulta original para recuperar los tipos de cambio del 15 de enero de 2023 es la consulta de tipos de cambio .

El código M para esta consulta es:

let    Source = Web.Page(Web.Contents(        "https://www.xe.com/currencytables/?from=USDdate=2023-01-15"    )),    Data0 = Source{0}[Data],    #"Changed Type" = Table.TransformColumnTypes(Data0,{        {"Currency", type text},         {"Name", type text},         {"Units per USD", type number},         {"USD per unit", type number}    })in    #"Changed Type"

Dado que URLPath se ha reducido a un parámetro dinámico, deberíamos poder utilizar URLPath en lugar de la dirección web. Pero, ¿qué pasa si cambiamos el paso Fuente de la consulta de tipos de cambio ?

Cambia esto:

    Source = Web.Page(Web.Contents(        "https://www.xe.com/currencytables/?from=USDdate=2023-01-15"    )),

A esto:

Source = Web.Page(Web.Contents(URLPath))

Desafortunadamente, realizar este cambio desencadena el error Formula.Firewall.

Al observar la vista de dependencias de consulta, podemos ver el problema (haga clic en Ver dependencias de consulta ).

Vista de dependencias de consulta: con error de fórmula.firewall

Los datos del libro de trabajo actual se pasan a URLPath antes de pasar a la consulta de tipos de cambio . Por lo tanto, los datos se pasan entre particiones y la puerta de enlace no puede funcionar correctamente.

Para corregir esto, podemos aplanar la consulta:

  • Seleccione la consulta URLPath , haga clic en Ver editor avanzado
  • En el Editor avanzado , copie el texto entre let y in (pero no incluya las palabras let e in ), luego haga clic en Listo .
  • Seleccione la consulta de tipos de cambio , haga clic en Ver editor avanzado
  • Pegue el texto copiado entre las palabras let y Source
  • En el primer bloque de código, realice los siguientes cambios (esto garantiza nombres de pasos únicos y significativos)
    • Cambiar fuente a SourceX (ambas instancias)
    • Cambiar la columna 1 a WebURL
  • Cada paso de Power Query debe terminar con una coma, por lo tanto, agregue una coma al final del paso WebURL .
  • En el segundo bloque de código, cambie URLPath a WebURL
  • Haga clic en Listo

El código final en la consulta de tipos de cambio ahora tiene el siguiente aspecto (todos los cambios resaltados):

let    SourceX = Excel.CurrentWorkbook(){[Name="URLPath"]}[Content],    WebURL = SourceX{0}[Column1],    Source = Web.Page(Web.Contents(WebURL)),    Data0 = Source{0}[Data],    #"Changed Type" = Table.TransformColumnTypes(Data0,{        {"Currency", type text},         {"Name", type text},         {"Units per USD", type number},         {"USD per unit", type number}})in    #"Changed Type"

El error Fórmula.Firewall “hacer referencia a otras consultas” desaparece. Entonces, hemos eliminado el primer error de Formula.Firewall.

La consulta URLPath se puede eliminar porque ya no tiene ningún propósito.

Sin embargo, dependiendo de los niveles de privacidad establecidos para Excel Workbook y https://xe.com, es posible que aún recibamos el error Formula.Firewall de "niveles de privacidad", que abordaremos a continuación.

Niveles de privacidad

Si tenemos el siguiente mensaje de error, debemos corregir los niveles de privacidad.

Fórmula.Firewall desde niveles de privacidad

Podemos solucionar este error mediante:

  • Ignorar la privacidad por completo
  • Utilizar la configuración correcta para cada fuente de datos.

Miramos ambos a continuación.

Ignore siempre la configuración del nivel de privacidad

Esta primera opción ignora por completo la configuración de privacidad de datos. Si sabe que no se transmitirá información confidencial, es una opción aceptable.

Haga clic en Configuración de opciones de archivo Opciones de consulta .

Se abre el cuadro de diálogo Opciones de consulta . En la sección Libro de trabajo actual , seleccione privacidad Ignorar siempre la configuración del nivel de privacidad y luego haga clic en Aceptar .

Ignorar la configuración de privacidad

Actualice la ventana de vista previa haciendo clic en Inicio Actualizar vista previa . El mensaje de error "niveles de privacidad" debería desaparecer y las consultas funcionarán correctamente.

La vista Dependencia de consulta ahora muestra ambas fuentes por separado alimentando la consulta de tipos de cambio . La puerta de enlace puede funcionar correctamente.

Vista de dependencias de consulta: sin error de firewall de fórmula

Aplicar el nivel de privacidad correcto para cada fuente de datos

En lugar de ignorar la configuración de privacidad, es posible que deseemos configurarla correctamente.

Para establecer el nivel de privacidad para cada fuente, haga clic en Opciones de archivo Configuración de fuente de datos .

En el cuadro de diálogo de configuración de la fuente de datos , seleccione la fuente de datos y luego haga clic en editar permisos ....

Nota: Si la fuente de datos no está dentro de las fuentes de datos en la sección del libro de trabajo actual, debe estar en la sección de permisos globales .

En el cuadro de diálogo de edición de permisos, podemos establecer el nivel de privacidad para cada fuente.

Cuadro de diálogo Editar permisos

Hay cuatro configuraciones de privacidad:

  • Ninguno: no se aplican niveles de privacidad. Esto no es lo mismo que ignorar el nivel de privacidad, sino una indicación de que no se han seleccionado los niveles Privado, Organizacional o Público.
  • Privado: Los datos son confidenciales o sensibles y no deben pasarse fuera de esta fuente. Cualquier dato en fuentes marcadas como Privadas no se puede compartir con otra fuente.
  • Organizacional: Los datos se pueden compartir dentro de la organización. Por lo tanto, estos datos solo se pueden compartir con otras fuentes de datos de la organización.
  • Público: los datos se pueden compartir con cualquier otra fuente de datos, incluidas fuentes públicas u organizativas.

Niveles de privacidad heredados

Un área que puede sorprendernos es cómo Power Query aborda los niveles de privacidad de la misma fuente.

Por ejemplo, supongamos que tengamos dos niveles de privacidad establecidos de la siguiente manera:

  • https://xe.com/currencytables : organizacional
  • https://xe.com : Público

Power Query aplica Público a ambas fuentes de datos, ya que https://xe.com es el padre de https://xe.com/currencytables .

Por lo tanto, es posible que deba cambiar el nivel de privacidad de uno de los padres para que Formula.Firewall funcione correctamente.

Arreglando el archivo de ejemplo

Para garantizar que el archivo de ejemplo funcione correctamente:

  • Establezca el nivel de privacidad tanto para el libro de Excel como para https://xe.com/currencytables como Organizacional .
  • Haga clic en Inicio Cerrar Cargar para implementar los cambios.

Ahora la herramienta debería funcionar correctamente. Cambie la fecha en la celda C3 y luego haga clic en Actualizar datos todos . Los tipos de cambio históricos para la fecha seleccionada se cargarán en la tabla.

Conclusión

En esta publicación, hemos visto cómo corregir el error Formula.Firewall en Power Query. Puede resultar complicado de entender, especialmente con dos mensajes de error que parecen muy similares. Si sigue los pasos de esta publicación, debería poder corregir el error de su escenario y disfrutar de consultas más dinámicas.

Artículos Relacionados:

  • Errores comunes de Power Query cómo solucionarlos
  • Cambiar el origen de Power Query según un valor de celda
  • Power Query: importar datos desde la web

Deja una respuesta

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

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...