{"id":2059,"date":"2023-08-31T10:06:54","date_gmt":"2023-08-31T08:06:54","guid":{"rendered":"https:\/\/bicontrolling.com\/?p=2059"},"modified":"2023-09-19T15:20:46","modified_gmt":"2023-09-19T13:20:46","slug":"integridad-referencial-y-miembros-de","status":"publish","type":"post","link":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/","title":{"rendered":"Integridad referencial y miembros desconocidos en Power BI"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Introducci\u00f3n<\/h3>\n\n\n\n<p>En este art\u00edculo vamos a explorar como se comporta Power BI<strong> cuando en un modelo de datos existen violaciones de la integridad referencial<\/strong>, y como podemos identificar y solventar este problema, a la vez que agrupamos los miembros desconocidos dot\u00e1ndolos de significado y garantizando la integridad de nuestro modelo.<\/p>\n\n\n\n<p>La integridad referencial es un conjunto de reglas que utilizan las bases de datos relacionales <strong>para asegurarse de que no existen valores en una clave for\u00e1nea que no est\u00e9n en la clave primaria<\/strong> de la tabla relacionada. Ve\u00e1moslo con una imagen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"629\" height=\"283\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Ejemplo-violacion-integridad-referencial.png?resize=629%2C283&#038;ssl=1\" alt=\"\" class=\"wp-image-2062\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Ejemplo-violacion-integridad-referencial.png?resize=1024%2C461&amp;ssl=1 1024w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Ejemplo-violacion-integridad-referencial.png?resize=300%2C135&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Ejemplo-violacion-integridad-referencial.png?resize=768%2C346&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Ejemplo-violacion-integridad-referencial.png?resize=900%2C406&amp;ssl=1 900w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Ejemplo-violacion-integridad-referencial.png?resize=1280%2C577&amp;ssl=1 1280w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Ejemplo-violacion-integridad-referencial.png?w=1509&amp;ssl=1 1509w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<!--more-->\n\n\n\n<p>Tenemos una dimensi\u00f3n Cliente y una tabla de hechos de Ventas. La integridad referencial lo que comprueba es que todos los valores de la clave for\u00e1nea est\u00e9n presentes en la clave primaria de la tabla relacionada, en este caso la dimensi\u00f3n Cliente. Basicamente, <strong>se trata de garantizar la consistencia de los datos; que los datos que referencian a otros datos sean correctos<\/strong>.<\/p>\n\n\n\n<p>Si nos fijamos en la imagen anterior veremos que el valor 3 del campo <code>IdCliente<\/code> se encuentra en la tabla de hechos, pero no en la dimensi\u00f3n. Por lo tanto, existe una violaci\u00f3n de la integridad referencial entre ambas tablas, y se dice que dicho valor pertenece a un <strong>\u00abmiembro desconocido\u00bb<\/strong>.<\/p>\n\n\n\n<p>Y este es el prop\u00f3sito de las relaciones en un sistema transaccional, garantizar la integridad referencial, que no puedas crear una factura a un cliente que no existe en el maestro de clientes.<\/p>\n\n\n\n<p>Por el contrario, en un modelo anal\u00edtico como el de Power BI las relaciones se establecen <strong>con la finalidad de propagar filtros de una tabla a otra<\/strong>, por lo que en un modelo de datos podemos tener errores de integridad referencial, y que los datos se sigan actualizando sin incidentes.<\/p>\n\n\n\n<p>Vamos a ver como maneja estas situaciones Power BI y como podemos nosotros, proactivamente, adelantarnos al problema.<\/p>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Creando el problema<\/h3>\n\n\n\n<p>Vamos a partir del siguiente modelo de datos:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Modelo-de-datos-estrella.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"629\" height=\"361\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Modelo-de-datos-estrella-1024x587.png?resize=629%2C361&#038;ssl=1\" alt=\"\" class=\"wp-image-2063\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Modelo-de-datos-estrella.png?resize=1024%2C587&amp;ssl=1 1024w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Modelo-de-datos-estrella.png?resize=300%2C172&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Modelo-de-datos-estrella.png?resize=768%2C441&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Modelo-de-datos-estrella.png?resize=900%2C516&amp;ssl=1 900w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Modelo-de-datos-estrella.png?w=1257&amp;ssl=1 1257w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Como podemos advertir, se trata de <strong>un esquema en estrella<\/strong> con una \u00fanica tabla de hechos de Ventas y varias dimensiones. En este momento no existe ninguna violaci\u00f3n de la integridad referencial.<\/p>\n\n\n\n<p>Si creamos una visualizaci\u00f3n de las Ventas por Categor\u00eda de producto obtenemos este resultado:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Power-BI-Ventas-por-Categoria.png?resize=479%2C334&#038;ssl=1\" alt=\"\" class=\"wp-image-2064\" width=\"479\" height=\"334\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Power-BI-Ventas-por-Categoria.png?w=651&amp;ssl=1 651w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Power-BI-Ventas-por-Categoria.png?resize=300%2C209&amp;ssl=1 300w\" sizes=\"auto, (max-width: 479px) 100vw, 479px\" \/><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>A continuaci\u00f3n, <strong>vamos a introducir una violaci\u00f3n de la integridad referencial entre las tablas Ventas y Producto<\/strong>. Para ello eliminamos unos pocos registros de la dimensi\u00f3n y nos fijamos en lo que ocurre en la anterior visualizaci\u00f3n:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"470\" height=\"363\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/violacion-integridad-referencial-power-bi-ventas-por-categoria.png?resize=470%2C363&#038;ssl=1\" alt=\"\" class=\"wp-image-2065\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/violacion-integridad-referencial-power-bi-ventas-por-categoria.png?w=470&amp;ssl=1 470w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/violacion-integridad-referencial-power-bi-ventas-por-categoria.png?resize=300%2C232&amp;ssl=1 300w\" sizes=\"auto, (max-width: 470px) 100vw, 470px\" \/><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Como vemos, aparece un valor en blanco en la columna Categor\u00eda que agrupa las Ventas correspondientes a todos los registros en los que existe un problema de integridad referencial. A todos los efectos, <strong>es como si se hubiera a\u00f1adido una nueva fila en nuestra dimensi\u00f3n,<\/strong> con todos los campos en blanco, para agrupar dichos registros.<\/p>\n\n\n\n<p>Antes de continuar, es muy importante entender que <strong>esto solo ocurre si hablamos de una relaci\u00f3n regular. <\/strong>En las relaciones f\u00edsicas en Power BI tenemos dos tipos: 1) las regulares, que son las que el motor del modelo puede comprobar que en el lado uno de la relaci\u00f3n los valores son \u00fanicos, y 2) las limitadas, que es cuando no se puede garantizar esta unicidad, circunstancia que se puede dar en uno de los siguientes casos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Siempre que tengamos una <strong>relaci\u00f3n varios a varios.<\/strong><\/li>\n\n\n\n<li><strong>En relaciones \u00abinter isla\u00bb,<\/strong> que son aquellas que se establecen cuando una de las tablas se encuentra importada en Vertipaq y la en modo Direct Query, o cuando ambas tablas se encuentran en modo Direct Query pero provienen de or\u00edgenes distintos. Podemos visualizar ambas circunstancias en la siguiente imagen:<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"629\" height=\"358\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Relaciones-inter-isla-en-Power-BI.-Relacion-limitada.png?resize=629%2C358&#038;ssl=1\" alt=\"\" class=\"wp-image-2066\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Relaciones-inter-isla-en-Power-BI.-Relacion-limitada.png?w=758&amp;ssl=1 758w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Relaciones-inter-isla-en-Power-BI.-Relacion-limitada.png?resize=300%2C171&amp;ssl=1 300w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><figcaption class=\"wp-element-caption\"><em>Fuente: SQLBI.com<\/em><\/figcaption><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Estas relaciones limitadas se representan en la vista de modelo con separaciones en la l\u00ednea que simboliza la relaci\u00f3n entre dos tablas:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"629\" height=\"337\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Relaciones-limitadas-vista-de-modelo.png?resize=629%2C337&#038;ssl=1\" alt=\"\" class=\"wp-image-2085\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Relaciones-limitadas-vista-de-modelo.png?w=874&amp;ssl=1 874w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Relaciones-limitadas-vista-de-modelo.png?resize=300%2C161&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Relaciones-limitadas-vista-de-modelo.png?resize=768%2C411&amp;ssl=1 768w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>En este art\u00edculo nos centramos en las relaciones regulares, por lo que, una vez aclarado este punto, seguimos con el ejemplo. <\/p>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Solucionando el problema<\/h3>\n\n\n\n<p>Vamos a distinguir <strong>dos tipos de problemas a detectar y solucionar,<\/strong> uno se refiere al caso en que cual, en una clave for\u00e1nea tenemos un valor nulo, y la otra cuando tenemos un valor que no existe en la clave primaria, que es la violaci\u00f3n de la integridad referencial propiamente dicha.<\/p>\n\n\n\n<p>En primer lugar, <strong>vamos a lidiar con los valores nulos en una clave for\u00e1nea, situaci\u00f3n que no tiene que representar a priori ning\u00fan problema en la calidad de los datos<\/strong>, y de hecho se da con cierta frecuencia en la vida real. Por ejemplo, en contabilidad anal\u00edtica es muy com\u00fan que tengamos ingresos o gastos para los que no aplica una determinada dimensi\u00f3n, pero siempre es preferible sustituirlos por otro valor, siguiendo la buena pr\u00e1ctica de modelado de no tener ning\u00fan valor <code>null<\/code> en una tabla de hechos. Para replicar este problema voy a sustituir un valor de la clave for\u00e1nea <code>IdProducto<\/code> por <code>null<\/code> en la tabla de hechos. <\/p>\n\n\n\n<p>Como vemos en la siguiente imagen,<strong> Power BI trata estos valores nulos de la misma forma que las violaciones de la integridad referencial, <\/strong>el informe sigue siendo el mismo pero con mayor importe agrupado en la fila en blanco:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"472\" height=\"367\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Con-valores-null-en-clave-foranea-1.png?resize=472%2C367&#038;ssl=1\" alt=\"\" class=\"wp-image-2081\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Con-valores-null-en-clave-foranea-1.png?w=472&amp;ssl=1 472w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Con-valores-null-en-clave-foranea-1.png?resize=300%2C233&amp;ssl=1 300w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Para solucionar los valores nulos en una clave for\u00e1nea vamos a sustituirlos por un valor arbitrario, por ejemplo -1:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#A6ACCD;--cbp-line-number-width:7.700004577636719px;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#0F111A\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"ReemplazarNulos= Table.ReplaceValue(\n        #&quot;Valor reemplazado&quot;,\n        null,\n        -1,\n        Replacer.ReplaceValue,{&quot;ProductKey&quot;}\n        )\" style=\"color:#A6ACCD;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #FFCB6B\">ReemplazarNulos<\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #FFCB6B\">Table<\/span><span style=\"color: #A6ACCD\">.ReplaceValue<\/span><span style=\"color: #89DDFF\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">        <\/span><span style=\"color: #89DDFF\">#&quot;<\/span><span style=\"color: #FFCB6B\">Valor reemplazado<\/span><span style=\"color: #89DDFF\">&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">        <\/span><span style=\"color: #89DDFF\">null,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">        <\/span><span style=\"color: #89DDFF\">-<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">        <\/span><span style=\"color: #FFCB6B\">Replacer<\/span><span style=\"color: #A6ACCD\">.ReplaceValue<\/span><span style=\"color: #89DDFF\">,{<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">ProductKey<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">        <\/span><span style=\"color: #89DDFF\">)<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#0F111A;color:#969dc4;font-size:12px;line-height:1;position:relative\">Power Query<\/span><\/div>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Y a continuaci\u00f3n vamos a crear un registro adicional en nuestra dimensi\u00f3n de Producto con el valor -1 en la clave primaria:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"629\" height=\"189\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Anadir-fila-Power-Query-1.png?resize=629%2C189&#038;ssl=1\" alt=\"\" class=\"wp-image-2083\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Anadir-fila-Power-Query-1.png?w=893&amp;ssl=1 893w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Anadir-fila-Power-Query-1.png?resize=300%2C90&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Anadir-fila-Power-Query-1.png?resize=768%2C231&amp;ssl=1 768w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Si seguidamente volvemos a la visualizaci\u00f3n, advertiremos que los registros que originalmente ten\u00edan un valor <code>null<\/code> en la clave for\u00e1nea <code>IdProducto<\/code> <strong>se han agrupado bajo la Categor\u00eda N\/A:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"471\" height=\"394\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Miembros-desconocidos-agrupados.png?resize=471%2C394&#038;ssl=1\" alt=\"\" class=\"wp-image-2084\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Miembros-desconocidos-agrupados.png?w=471&amp;ssl=1 471w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Miembros-desconocidos-agrupados.png?resize=300%2C251&amp;ssl=1 300w\" sizes=\"auto, (max-width: 471px) 100vw, 471px\" \/><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Como podemos ver, todav\u00eda tenemos el problema de los \u00abmiembros desconocidos\u00bb producido por la violaci\u00f3n de la integridad referencial entre las tablas de Ventas y Producto. Con estos registros, lo que necesitamos, y no nos queda otra, es cruzar las dimensiones con la tabla de hechos. <strong>Cabe resaltar que este proceso puede llegar a ser muy caro en t\u00e9rminos de rendimiento, raz\u00f3n por la cual estas operaciones se suelen realizar antes de que los datos lleguen a Power BI,<\/strong> en la construcci\u00f3n del Datawarehouse o Datamart anal\u00edtico que servir\u00e1 como origen del modelo de datos. Normalmente, este proceso forma <strong>parte de la creaci\u00f3n de las claves subrogadas, que jugar\u00e1n un papel crucial en los casos en los que necesitemos trabajar con dimensiones lentamente cambiantes.<\/strong><\/p>\n\n\n\n<p>En este modelo, esas claves subrogadas, que no dejan de ser un identificador \u00fanico que se asigna a cada registro de una tabla de dimensi\u00f3n y cuyos valores son totalmente independientes de los datos del origen transaccional, ya est\u00e1n creadas, por lo que vamos a realizar los cruces por ellas directamente.<\/p>\n\n\n\n<p>Para ello, combinamos las tablas Producto y Ventas:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/combinar-tablas.png?resize=629%2C567&#038;ssl=1\" alt=\"\" class=\"wp-image-2086\" width=\"629\" height=\"567\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/combinar-tablas.png?w=693&amp;ssl=1 693w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/combinar-tablas.png?resize=300%2C271&amp;ssl=1 300w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Y expandimos la clave primaria de la dimensi\u00f3n. Lo siguiente, es reemplazar los valores <code>null<\/code>, que corresponden a los registros que producen la violaci\u00f3n de la integridad referencial, por otro valor arbitrario, por ejemplo -2:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#A6ACCD;--cbp-line-number-width:7.699981689453125px;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#0F111A\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"ReemplazarNulos1= Table.ReplaceValue(#&quot;Se expandi\u00f3 Product&quot;,\n        null,\n        -2,\n        Replacer.ReplaceValue,{&quot;ProductKey.1&quot;})\" style=\"color:#A6ACCD;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #FFCB6B\">ReemplazarNulos1<\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #FFCB6B\">Table<\/span><span style=\"color: #A6ACCD\">.ReplaceValue<\/span><span style=\"color: #89DDFF\">(#&quot;<\/span><span style=\"color: #FFCB6B\">Se expandi\u00f3 Product<\/span><span style=\"color: #89DDFF\">&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">        <\/span><span style=\"color: #89DDFF\">null,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">        <\/span><span style=\"color: #89DDFF\">-<\/span><span style=\"color: #F78C6C\">2<\/span><span style=\"color: #89DDFF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">        <\/span><span style=\"color: #FFCB6B\">Replacer<\/span><span style=\"color: #A6ACCD\">.ReplaceValue<\/span><span style=\"color: #89DDFF\">,{<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">ProductKey.1<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">})<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#0F111A;color:#969dc4;font-size:12px;line-height:1;position:relative\">Power Query<\/span><\/div>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Para continuar, crearemos otro registro en la dimensi\u00f3n Producto para agrupar estos registros:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"629\" height=\"146\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image.png?resize=629%2C146&#038;ssl=1\" alt=\"\" class=\"wp-image-2087\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image.png?w=964&amp;ssl=1 964w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image.png?resize=300%2C69&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image.png?resize=768%2C178&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image.png?resize=900%2C208&amp;ssl=1 900w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Y tras cambiar el campo de la tabla de hechos con el que relacionamos con la dimensi\u00f3n Producto, volvemos a nuestra visualizaci\u00f3n y veremos que los registros que producen el problema de integridad referencial se han agrupado sobre este \u00faltimo registro creado en la dimensi\u00f3n:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"477\" height=\"398\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-1.png?resize=477%2C398&#038;ssl=1\" alt=\"\" class=\"wp-image-2088\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-1.png?w=477&amp;ssl=1 477w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-1.png?resize=300%2C250&amp;ssl=1 300w\" sizes=\"auto, (max-width: 477px) 100vw, 477px\" \/><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Identificar los problemas de integridad referencial<\/h3>\n\n\n\n<p>Para terminar, me gustar\u00eda comentar la mejor forma, en mi opini\u00f3n, de buscar e identificar estos problemas f\u00e1cilmente en cada actualizaci\u00f3n de los datos. Se trata de usar un script para Tabular Editor desarrollado por el compa\u00f1ero de la comunidad <a href=\"https:\/\/www.linkedin.com\/in\/Bernatagullo\/\" target=\"_blank\" rel=\"noopener\" title=\"Bernat Agullo.\">Bernat Agull\u00f3.<\/a> Todos los detalles y el c\u00f3digo del mismo pueden encontrarse en este art\u00edculo de su blog: <a href=\"https:\/\/www.esbrina-ba.com\/easy-management-of-referential-integrity\/\" target=\"_blank\" rel=\"noopener\" title=\"Blog Bernat Agullo\">https:\/\/www.esbrina-ba.com\/easy-management-of-referential-integrity\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n En este art\u00edculo vamos a explorar como se comporta Power BI cuando en un modelo de datos existen violaciones de la integridad referencial, y como podemos identificar y solventar este problema, a la vez que agrupamos los miembros desconocidos dot\u00e1ndolos de significado y garantizando la integridad de nuestro modelo. La integridad referencial es un [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[2,6],"tags":[27,9,51,10,29,50,11,12,31,14,23,18],"post_series":[],"class_list":["post-2059","post","type-post","status-publish","format-standard","hentry","category-arquitectura-de-datos","category-m-power-query","tag-bi","tag-dax","tag-dimensiones-analiticas","tag-editor-de-consultas","tag-etl","tag-integridad-referencial","tag-inteligencia-de-negocios","tag-m","tag-modelado-de-datos","tag-power-bi","tag-power-pivot","tag-power-query"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"Introducci\u00f3n En este art\u00edculo vamos a explorar como se comporta Power BI cuando en un modelo de datos existen violaciones de la integridad referencial, y como podemos identificar y solventar este problema, a la vez que agrupamos los miembros desconocidos dot\u00e1ndolos de significado y garantizando la integridad de nuestro modelo. La integridad referencial es un\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Admin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Business Intelligence Controlling | La nueva generaci\u00f3n del reporting econ\u00f3mico-financiero y el control de gesti\u00f3n empresarial\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Integridad referencial y miembros desconocidos en Power BI | Business Intelligence Controlling\" \/>\n\t\t<meta property=\"og:description\" content=\"Introducci\u00f3n En este art\u00edculo vamos a explorar como se comporta Power BI cuando en un modelo de datos existen violaciones de la integridad referencial, y como podemos identificar y solventar este problema, a la vez que agrupamos los miembros desconocidos dot\u00e1ndolos de significado y garantizando la integridad de nuestro modelo. La integridad referencial es un\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2023-08-31T08:06:54+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2023-09-19T13:20:46+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Integridad referencial y miembros desconocidos en Power BI | Business Intelligence Controlling\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Introducci\u00f3n En este art\u00edculo vamos a explorar como se comporta Power BI cuando en un modelo de datos existen violaciones de la integridad referencial, y como podemos identificar y solventar este problema, a la vez que agrupamos los miembros desconocidos dot\u00e1ndolos de significado y garantizando la integridad de nuestro modelo. La integridad referencial es un\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/08\\\/31\\\/integridad-referencial-y-miembros-de\\\/#article\",\"name\":\"Integridad referencial y miembros desconocidos en Power BI | Business Intelligence Controlling\",\"headline\":\"Integridad referencial y miembros desconocidos en Power BI\",\"author\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/vlozanoluque_sg8t8mat\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/bicontrolling.com\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/Ejemplo-violacion-integridad-referencial.png?fit=1509%2C680&ssl=1\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/08\\\/31\\\/integridad-referencial-y-miembros-de\\\/#articleImage\",\"width\":1509,\"height\":680},\"datePublished\":\"2023-08-31T10:06:54+02:00\",\"dateModified\":\"2023-09-19T15:20:46+02:00\",\"inLanguage\":\"es-ES\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/08\\\/31\\\/integridad-referencial-y-miembros-de\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/08\\\/31\\\/integridad-referencial-y-miembros-de\\\/#webpage\"},\"articleSection\":\"Arquitectura de datos, M (Power Query), BI, DAX, Dimensiones anal\\u00edticas, Editor de consultas, ETL, Integridad referencial, Inteligencia de negocios, M, Modelado de datos, Power BI, Power Pivot, Power Query\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/08\\\/31\\\/integridad-referencial-y-miembros-de\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#listItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\\\/\\\/bicontrolling.com\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/category\\\/arquitectura-de-datos\\\/#listItem\",\"name\":\"Arquitectura de datos\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/category\\\/arquitectura-de-datos\\\/#listItem\",\"position\":2,\"name\":\"Arquitectura de datos\",\"item\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/category\\\/arquitectura-de-datos\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/08\\\/31\\\/integridad-referencial-y-miembros-de\\\/#listItem\",\"name\":\"Integridad referencial y miembros desconocidos en Power BI\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#listItem\",\"name\":\"Inicio\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/08\\\/31\\\/integridad-referencial-y-miembros-de\\\/#listItem\",\"position\":3,\"name\":\"Integridad referencial y miembros desconocidos en Power BI\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/category\\\/arquitectura-de-datos\\\/#listItem\",\"name\":\"Arquitectura de datos\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#organization\",\"name\":\"Business Intelligence Controlling\",\"description\":\"La nueva generaci\\u00f3n del reporting econ\\u00f3mico-financiero y el control de gesti\\u00f3n empresarial\",\"url\":\"https:\\\/\\\/bicontrolling.com\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/vlozanoluque_sg8t8mat\\\/#author\",\"url\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/vlozanoluque_sg8t8mat\\\/\",\"name\":\"Admin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/08\\\/31\\\/integridad-referencial-y-miembros-de\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/00c17f691e05a0999c7ea23a9ae4aa6e7ae25f55cd91ae9629fe81a02ae98278?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Admin\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/08\\\/31\\\/integridad-referencial-y-miembros-de\\\/#webpage\",\"url\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/08\\\/31\\\/integridad-referencial-y-miembros-de\\\/\",\"name\":\"Integridad referencial y miembros desconocidos en Power BI | Business Intelligence Controlling\",\"description\":\"Introducci\\u00f3n En este art\\u00edculo vamos a explorar como se comporta Power BI cuando en un modelo de datos existen violaciones de la integridad referencial, y como podemos identificar y solventar este problema, a la vez que agrupamos los miembros desconocidos dot\\u00e1ndolos de significado y garantizando la integridad de nuestro modelo. La integridad referencial es un\",\"inLanguage\":\"es-ES\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/08\\\/31\\\/integridad-referencial-y-miembros-de\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/vlozanoluque_sg8t8mat\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/vlozanoluque_sg8t8mat\\\/#author\"},\"datePublished\":\"2023-08-31T10:06:54+02:00\",\"dateModified\":\"2023-09-19T15:20:46+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#website\",\"url\":\"https:\\\/\\\/bicontrolling.com\\\/\",\"name\":\"Business Intelligence Controlling\",\"description\":\"La nueva generaci\\u00f3n del reporting econ\\u00f3mico-financiero y el control de gesti\\u00f3n empresarial\",\"inLanguage\":\"es-ES\",\"publisher\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Integridad referencial y miembros desconocidos en Power BI | Business Intelligence Controlling","description":"Introducci\u00f3n En este art\u00edculo vamos a explorar como se comporta Power BI cuando en un modelo de datos existen violaciones de la integridad referencial, y como podemos identificar y solventar este problema, a la vez que agrupamos los miembros desconocidos dot\u00e1ndolos de significado y garantizando la integridad de nuestro modelo. La integridad referencial es un","canonical_url":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/#article","name":"Integridad referencial y miembros desconocidos en Power BI | Business Intelligence Controlling","headline":"Integridad referencial y miembros desconocidos en Power BI","author":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/vlozanoluque_sg8t8mat\/#author"},"publisher":{"@id":"https:\/\/bicontrolling.com\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/Ejemplo-violacion-integridad-referencial.png?fit=1509%2C680&ssl=1","@id":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/#articleImage","width":1509,"height":680},"datePublished":"2023-08-31T10:06:54+02:00","dateModified":"2023-09-19T15:20:46+02:00","inLanguage":"es-ES","mainEntityOfPage":{"@id":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/#webpage"},"isPartOf":{"@id":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/#webpage"},"articleSection":"Arquitectura de datos, M (Power Query), BI, DAX, Dimensiones anal\u00edticas, Editor de consultas, ETL, Integridad referencial, Inteligencia de negocios, M, Modelado de datos, Power BI, Power Pivot, Power Query"},{"@type":"BreadcrumbList","@id":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/#listItem","position":1,"name":"Inicio","item":"https:\/\/bicontrolling.com\/","nextItem":{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/#listItem","name":"Arquitectura de datos"}},{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/#listItem","position":2,"name":"Arquitectura de datos","item":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/","nextItem":{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/#listItem","name":"Integridad referencial y miembros desconocidos en Power BI"},"previousItem":{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/#listItem","name":"Inicio"}},{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/#listItem","position":3,"name":"Integridad referencial y miembros desconocidos en Power BI","previousItem":{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/#listItem","name":"Arquitectura de datos"}}]},{"@type":"Organization","@id":"https:\/\/bicontrolling.com\/#organization","name":"Business Intelligence Controlling","description":"La nueva generaci\u00f3n del reporting econ\u00f3mico-financiero y el control de gesti\u00f3n empresarial","url":"https:\/\/bicontrolling.com\/"},{"@type":"Person","@id":"https:\/\/bicontrolling.com\/index.php\/author\/vlozanoluque_sg8t8mat\/#author","url":"https:\/\/bicontrolling.com\/index.php\/author\/vlozanoluque_sg8t8mat\/","name":"Admin","image":{"@type":"ImageObject","@id":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/00c17f691e05a0999c7ea23a9ae4aa6e7ae25f55cd91ae9629fe81a02ae98278?s=96&d=mm&r=g","width":96,"height":96,"caption":"Admin"}},{"@type":"WebPage","@id":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/#webpage","url":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/","name":"Integridad referencial y miembros desconocidos en Power BI | Business Intelligence Controlling","description":"Introducci\u00f3n En este art\u00edculo vamos a explorar como se comporta Power BI cuando en un modelo de datos existen violaciones de la integridad referencial, y como podemos identificar y solventar este problema, a la vez que agrupamos los miembros desconocidos dot\u00e1ndolos de significado y garantizando la integridad de nuestro modelo. La integridad referencial es un","inLanguage":"es-ES","isPartOf":{"@id":"https:\/\/bicontrolling.com\/#website"},"breadcrumb":{"@id":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/#breadcrumblist"},"author":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/vlozanoluque_sg8t8mat\/#author"},"creator":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/vlozanoluque_sg8t8mat\/#author"},"datePublished":"2023-08-31T10:06:54+02:00","dateModified":"2023-09-19T15:20:46+02:00"},{"@type":"WebSite","@id":"https:\/\/bicontrolling.com\/#website","url":"https:\/\/bicontrolling.com\/","name":"Business Intelligence Controlling","description":"La nueva generaci\u00f3n del reporting econ\u00f3mico-financiero y el control de gesti\u00f3n empresarial","inLanguage":"es-ES","publisher":{"@id":"https:\/\/bicontrolling.com\/#organization"}}]},"og:locale":"es_ES","og:site_name":"Business Intelligence Controlling | La nueva generaci\u00f3n del reporting econ\u00f3mico-financiero y el control de gesti\u00f3n empresarial","og:type":"article","og:title":"Integridad referencial y miembros desconocidos en Power BI | Business Intelligence Controlling","og:description":"Introducci\u00f3n En este art\u00edculo vamos a explorar como se comporta Power BI cuando en un modelo de datos existen violaciones de la integridad referencial, y como podemos identificar y solventar este problema, a la vez que agrupamos los miembros desconocidos dot\u00e1ndolos de significado y garantizando la integridad de nuestro modelo. La integridad referencial es un","og:url":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/","article:published_time":"2023-08-31T08:06:54+00:00","article:modified_time":"2023-09-19T13:20:46+00:00","twitter:card":"summary","twitter:title":"Integridad referencial y miembros desconocidos en Power BI | Business Intelligence Controlling","twitter:description":"Introducci\u00f3n En este art\u00edculo vamos a explorar como se comporta Power BI cuando en un modelo de datos existen violaciones de la integridad referencial, y como podemos identificar y solventar este problema, a la vez que agrupamos los miembros desconocidos dot\u00e1ndolos de significado y garantizando la integridad de nuestro modelo. La integridad referencial es un"},"aioseo_meta_data":{"post_id":"2059","title":null,"description":null,"keywords":[],"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-08-08 10:12:18","updated":"2025-06-04 12:56:06","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/bicontrolling.com\/\" title=\"Inicio\">Inicio<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/\" title=\"Arquitectura de datos\">Arquitectura de datos<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tIntegridad referencial y miembros desconocidos en Power BI\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Inicio","link":"https:\/\/bicontrolling.com\/"},{"label":"Arquitectura de datos","link":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/"},{"label":"Integridad referencial y miembros desconocidos en Power BI","link":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/"}],"jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1828,"url":"https:\/\/bicontrolling.com\/index.php\/2021\/03\/06\/gppb2021-madrid-integracion-de-previsiones-y-presupuestos-en-el-modelo-tabular-video\/","url_meta":{"origin":2059,"position":0},"title":"GPPB2021 Madrid &#8211; Integraci\u00f3n de previsiones y presupuestos en el modelo tabular (video)","author":"Admin","date":"6 marzo, 2021","format":false,"excerpt":"Ya est\u00e1n disponibles las grabaciones del Global Power Platform Bootcamp de Madrid. Os comparto el video de mi sesi\u00f3n donde estuvimos analizando las diferentes opciones que tenemos para integrar previsiones y presupuestos en un modelo de datos de Power BI. Vimos c\u00f3mo crear relaciones virtuales con DAX, c\u00f3mo inspeccionar el\u2026","rel":"","context":"En \u00abArquitectura de datos\u00bb","block_context":{"text":"Arquitectura de datos","link":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/img.youtube.com\/vi\/_wGEZZGP_nI\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1938,"url":"https:\/\/bicontrolling.com\/index.php\/2021\/11\/26\/hasta-el-ultimo-segundo-en-power-bi\/","url_meta":{"origin":2059,"position":1},"title":"Hasta el \u00faltimo segundo en Power BI","author":"Admin","date":"26 noviembre, 2021","format":false,"excerpt":"Video de mi participaci\u00f3n en Power Platform Madrid, con una sesi\u00f3n sobre la creaci\u00f3n y el uso de una dimensi\u00f3n horaria que nos permita analizar nuestros hechos a granularidades inferiores al d\u00eda. https:\/\/www.youtube.com\/watch?v=UViZ3lzLxrE","rel":"","context":"En \u00abArquitectura de datos\u00bb","block_context":{"text":"Arquitectura de datos","link":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/img.youtube.com\/vi\/UViZ3lzLxrE\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1568,"url":"https:\/\/bicontrolling.com\/index.php\/2020\/04\/19\/mostrar-la-ultima-fecha-de-actualizacion-en-power-bi\/","url_meta":{"origin":2059,"position":2},"title":"Mostrar la \u00faltima fecha de actualizaci\u00f3n en Power BI","author":"Admin","date":"19 abril, 2020","format":false,"excerpt":"Introducci\u00f3n En numerosas ocasiones, la primera pregunta que nos hace un usuario de un informe en Power BI es \u00bfest\u00e1n los datos actualizados? En un Panel del Servicio podemos configurar en cualquiera de las visualizaciones ancladas en el mismo, la capacidad de mostrar la hora de \u00faltima actualizaci\u00f3n de los\u2026","rel":"","context":"En \u00abArquitectura de datos\u00bb","block_context":{"text":"Arquitectura de datos","link":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/04\/Imagen-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/04\/Imagen-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/04\/Imagen-1.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1509,"url":"https:\/\/bicontrolling.com\/index.php\/2020\/01\/28\/dinamizar-mas-de-un-valor-en-power-query\/","url_meta":{"origin":2059,"position":3},"title":"Dinamizar sobre m\u00e1s de un valor en Power Query","author":"Admin","date":"28 enero, 2020","format":false,"excerpt":"La funci\u00f3n Table.Pivot() del lenguaje M nos ofrece la capacidad de obtener como resultado una tabla que contiene un valor agregado para cada valor \u00fanico de una columna. Cuando usamos esta funci\u00f3n, Power Query agrupa cada valor mediante la agregaci\u00f3n que seleccionemos y rota (pivota) los datos de la columna\u2026","rel":"","context":"En \u00abArquitectura de datos\u00bb","block_context":{"text":"Arquitectura de datos","link":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/12\/Combinada.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/12\/Combinada.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/12\/Combinada.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/12\/Combinada.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1737,"url":"https:\/\/bicontrolling.com\/index.php\/2021\/02\/24\/comparer\/","url_meta":{"origin":2059,"position":4},"title":"Funciones de comparador en Power Query","author":"Admin","date":"24 febrero, 2021","format":false,"excerpt":"Una de las caracter\u00edsticas clave del lenguaje M es su cualidad de ser case sensitive, o sensible a may\u00fasculas y min\u00fasculas. Esto significa que las palabras clave del lenguaje, las variables, los nombres de las funciones y cualquier otro identificador deben escribirse siempre teniendo en cuenta esta peculiaridad. Power Query\u2026","rel":"","context":"En \u00abArquitectura de datos\u00bb","block_context":{"text":"Arquitectura de datos","link":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2021\/02\/Imagen-3.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2021\/02\/Imagen-3.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2021\/02\/Imagen-3.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2021\/02\/Imagen-3.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":464,"url":"https:\/\/bicontrolling.com\/index.php\/2017\/12\/10\/tablas-de-medidas-en-power-bi-desktop\/","url_meta":{"origin":2059,"position":5},"title":"Grupos de medidas en Power BI Desktop","author":"Admin","date":"10 diciembre, 2017","format":false,"excerpt":"En numerosas ocasiones, cuando estamos trabajando con modelos de datos complejos, con muchas tablas y relaciones, y que requieren un n\u00famero considerable de medidas, es importante tener en cuenta el lugar de almacenamiento de las mismas. Por ejemplo, es probable que tras cargar al modelo de datos todas las consultas\u2026","rel":"","context":"En \u00abArquitectura de datos\u00bb","block_context":{"text":"Arquitectura de datos","link":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/04\/image-9-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/04\/image-9-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/04\/image-9-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/04\/image-9-1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/04\/image-9-1.png?resize=1050%2C600&ssl=1 3x"},"classes":[]}],"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/2059","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/comments?post=2059"}],"version-history":[{"count":22,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/2059\/revisions"}],"predecessor-version":[{"id":2224,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/2059\/revisions\/2224"}],"wp:attachment":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/media?parent=2059"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/categories?post=2059"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/tags?post=2059"},{"taxonomy":"post_series","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/post_series?post=2059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}