{"id":608,"date":"2018-07-25T07:01:04","date_gmt":"2018-07-25T07:01:04","guid":{"rendered":"https:\/\/trainingpowerbi.wordpress.com\/2018\/07\/25\/userelationship-en-columnas-calculadas\/"},"modified":"2019-07-16T15:09:03","modified_gmt":"2019-07-16T13:09:03","slug":"userelationship-en-columnas-calculadas","status":"publish","type":"post","link":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/","title":{"rendered":"Uso de la funci\u00f3n USERELATIONSHIP en columnas calculadas"},"content":{"rendered":"<div id=\"container\" class=\"application\">\n<div class=\"js-toc\">\n<section role=\"document\">\n<div id=\"sbo-rt-content\">\n<div class=\"annotator-wrapper\">\n<div class=\"heading\">\n<h4>Introducci\u00f3n<\/h4>\n<p>En un modelo tabular con relaciones inactivas podemos usar la funci\u00f3n <code>USERELATIONSHIP()<\/code> para activar una de ellas durante el tiempo de ejecuci\u00f3n de un determinado c\u00e1lculo con DAX. Para ello, simplemente tenemos que especificar dicha funci\u00f3n (y los par\u00e1metros correspondientes) como uno de los argumentos de filtro de la funci\u00f3n <code>CALCULATE()<\/code>. El uso de <code>USERELATIONSHIP()<\/code> es sencillo cuando queremos crear una medida, pero se complica si lo que deseamos es utilizar dicha funci\u00f3n en la definici\u00f3n de una <strong>columna calculada<\/strong>. En este art\u00edculo vamos a ver qu\u00e9 es lo que ocurre en estos casos, explicando uno de los aspectos m\u00e1s importantes que se produce cuando ejecutamos la funci\u00f3n <code>CALCULATE()<\/code> dentro de una columna calculada, o de forma m\u00e1s general, dentro de un contexto de fila: <strong>la transici\u00f3n de contexto.<\/strong><\/p>\n<p><!--more--><\/p>\n<h4>El contexto de evaluaci\u00f3n en DAX<\/h4>\n<p>Las expresiones en el lenguaje DAX dependen \u00edntegramente del <strong>contexto de evaluaci\u00f3n<\/strong> bajo el que se ejecutan, de forma que podemos obtener muchos resultados distintos para una misma f\u00f3rmula en funci\u00f3n del contexto en el cual se eval\u00faa dicha expresi\u00f3n.<\/p>\n<p>Por ejemplo, la siguiente f\u00f3rmula:<\/p>\n<p>Ventas\u00a0=<br \/>\n<span class=\"Keyword\" style=\"color: #0070ff;\">SUMX<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0PedidosDetalle;\u00a0PedidosDetalle[Cantidad]\u00a0*\u00a0PedidosDetalle[Precio]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><\/p>\n<p>Aplicada en el campo \u00abValores\u00bb de una matriz muestra el siguiente resultado:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-10-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-619 size-full\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-10-1.png?resize=450%2C278&#038;ssl=1\" alt=\"\" width=\"450\" height=\"278\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-10-1.png?w=450&amp;ssl=1 450w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-10-1.png?resize=300%2C185&amp;ssl=1 300w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/a><\/p>\n<p>Como podemos observar, en cada celda tenemos un n\u00famero distinto, el cual depende del conjunto de filtros aplicado en el modelo de datos. En este caso, los campos de las columnas y las filas de la matriz, junto con el filtro procedente del segmentador, forman el <strong>contexto de filtro<\/strong> bajo el que la f\u00f3rmula se ejecuta.<\/p>\n<p>A parte del contexto de filtro, el contexto de evaluaci\u00f3n en DAX est\u00e1 tambi\u00e9n formado por el <strong>contexto de fila,\u00a0<\/strong>el cual contiene una sola fila para la cual se ejecutar\u00e1 la expresi\u00f3n. Existen varias formas de crear un contexto de fila, la m\u00e1s sencilla de ellas consiste en definir una columna calculada, donde autom\u00e1ticamente el motor de DAX generar\u00e1 el contexto e implementar\u00e1 la expresi\u00f3n correspondiente para cada una de las filas de la tabla donde se crea la nueva columna.<\/p>\n<h4><\/h4>\n<h4>La transici\u00f3n de contexto<\/h4>\n<p>La funci\u00f3n <code>CALCULATE()<\/code> realiza una importante labor cuando es ejecutada dentro de un contexto de fila, que conviene entender con claridad, ya que aparte de que encontraremos sus efectos en multitud de expresiones, nos permitir\u00e1 realizar con facilidad c\u00e1lculos complejos basados en iteraciones de tablas.<\/p>\n<p>Lo que <code>CALCULATE()<\/code> realiza es la transformaci\u00f3n de<strong> todos los contextos de fila<\/strong> que se encuentran activos cuando la funci\u00f3n es ejecutada en un contexto de filtro equivalente. Como sabemos, los contextos de filtro se propagan a las tablas relacionadas autom\u00e1ticamente, al contrario que los contextos de fila, con los que tenemos que usar las funciones <code>RELATED()<\/code> y <code>RELATEDTABLE()<\/code> si queremos acceder a valores relacionados que se encuentran almacenados en otra de las tablas del modelo. Por ejemplo, la siguiente columna calculada en la tabla &#8216;Productos&#8217;:<\/p>\n<p>Productos[CantidadMediaCliente] =<br \/>\n<span class=\"Keyword\" style=\"color: #0070ff;\">AVERAGEX<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/>\n<span class=\"Keyword\" style=\"color: #0070ff;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 FILTER<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Clientes;\u00a0Clientes[Pais]\u00a0=\u00a0<span class=\"StringLiteral\" style=\"color: #d93124;\">\u00abGermany\u00bb<\/span>\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/>\n<span class=\"Keyword\" style=\"color: #0070ff;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CALCULATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">SUM<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0PedidosDetalle[Cantidad]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/>\n<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><\/p>\n<p>Calcula la cantidad media del producto actual que ha sido comprada por los clientes alemanes. Existen 3 contextos de fila en la anterior expresi\u00f3n:<\/p>\n<ol>\n<li>La tabla &#8216;Clientes&#8217; es iterada por <code>FILTER()<\/code>, para mostrar solo los clientes cuyo pa\u00eds es Alemania.<\/li>\n<li>La tabla &#8216;Clientes&#8217; filtrada para los clientes alemanes es iterada por <code>AVERAGEX()<\/code>.<\/li>\n<li>La tabla &#8216;Productos&#8217; es iterada por la propia evaluaci\u00f3n de la columna calculada.<\/li>\n<\/ol>\n<p>De esta forma, la funci\u00f3n <code>SUM()<\/code> dentro de <code>CALCULATE()<\/code> es ejecutada bajo un contexto de filtro que deja visibles las cantidades de la tabla &#8216;PedidosDetalle&#8217; (nuestra tabla de hechos) correspondientes al producto actual y al cliente actual (que adem\u00e1s tiene que ser Alem\u00e1n, sino quedar\u00e1 fuera del contexto por la iteraci\u00f3n de la funci\u00f3n <code>FILTER()<\/code>). El resultado de la columna calculada es el siguiente (hacer <em>click<\/em> en la imagen para ampliar):<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-11-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-632 size-full\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-11-1.png?resize=629%2C306&#038;ssl=1\" alt=\"\" width=\"629\" height=\"306\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-11-1.png?w=1039&amp;ssl=1 1039w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-11-1.png?resize=300%2C146&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-11-1.png?resize=768%2C373&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-11-1.png?resize=1024%2C498&amp;ssl=1 1024w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-11-1.png?resize=900%2C437&amp;ssl=1 900w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<p>Podemos resumir este apartado de la siguiente forma:<\/p>\n<blockquote><p>Dentro de <code>CALCULATE()<\/code> no existe ning\u00fan contexto de fila, solo <strong>existe un contexto de filtro<\/strong> que ser\u00e1 el equivalente a la combinaci\u00f3n de todos los contextos de fila activos en la expresi\u00f3n, junto con los filtros introducidos por los dem\u00e1s elementos que definen el contexto actual.<\/p><\/blockquote>\n<section role=\"document\">\n<div id=\"sbo-rt-content\">\n<div class=\"annotator-wrapper\">\n<div class=\"heading\">\n<h4>Comportamiento de USERELATIONSHIP en una columna calculada<\/h4>\n<p>Como hemos indicado a lo largo del art\u00edculo, cuando definimos una columna calculada estamos escribiendo una expresi\u00f3n DAX que ser\u00e1 ejecutada dentro de un contexto de fila creado en la tabla donde almacenaremos la nueva columna. Como la funci\u00f3n <code>USERELATIONSHIP()<\/code> la usamos como argumento de filtro de la funci\u00f3n <code>CALULATE()<\/code>, y esta \u00faltima realiza una <strong>transici\u00f3n de contexto<\/strong> cuando es ejecutada en un contexto de fila, el uso de relaciones inactivas en columnas calculadas se vuelve una operaci\u00f3n compleja, donde obtener el comportamiento deseado no es tan intuitivo como en las medidas.<\/p>\n<p>Si queremos definir una columna calculada en la tabla &#8216;Pedidos&#8217; que nos devuelva, para cada fila, la fecha de env\u00edo de la dimensi\u00f3n temporal utilizando una de las relaciones inactivas entre las 2 tablas, por ejemplo la fecha de env\u00edo, podemos probar con el siguiente c\u00f3digo:<\/p>\n<p>Pedidos[FechaEnvioUR] =<br \/>\n<span class=\"Keyword\" style=\"color: #0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/>\n<span class=\"Keyword\" style=\"color: #0070ff;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 VALUES<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario[Fecha]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/>\n<span class=\"Keyword\" style=\"color: #0070ff;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 USERELATIONSHIP<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario[Fecha];\u00a0Pedidos[FechaEnvio]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/>\n<span class=\"Parenthesis\" style=\"color: #969696;\">)<br \/>\n<\/span><br \/>\nAtendiendo al comportamiento habitual de la funci\u00f3n <code>USERELATIONSHIP()<\/code> en una medida podemos esperar que la anterior expresi\u00f3n devuelva, para cada fila de la tabla &#8216;Pedidos&#8217;, la fecha de env\u00edo correspondiente, pero como podemos observar en la siguiente imagen, DAX ignora por completo la relaci\u00f3n especificada con la funci\u00f3n <code>USERELATIONSHIP()<\/code>, devolviendo el valor <strong>basado en la relaci\u00f3n activa<\/strong> en el modelo de datos, que corresponde a la fecha de pedido:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-657 size-full\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.png?resize=629%2C256&#038;ssl=1\" alt=\"\" width=\"629\" height=\"256\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.png?w=1143&amp;ssl=1 1143w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.png?resize=300%2C122&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.png?resize=768%2C312&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.png?resize=1024%2C417&amp;ssl=1 1024w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.png?resize=900%2C366&amp;ssl=1 900w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>Este resultado se produce porque, en los modelos tabulares, <strong>el contexto de filtro se propaga autom\u00e1ticamente<\/strong> desde las tablas de consulta hacia las tablas de datos; es decir, cuando asignamos un filtro a una dimensi\u00f3n, este se propaga de forma que solo las filas de la tabla de datos que cumplan las condiciones del filtro ser\u00e1n tenidas en cuenta por DAX a la hora de evaluar la expresi\u00f3n.<\/p>\n<p>Si damos la vuelta a la situaci\u00f3n anterior e intentamos usar <code>USERELATIONSHIP()<\/code> desde la dimensi\u00f3n para acceder a los valores correspondientes almacenados en la tabla de hechos <strong>mediante una relaci\u00f3n que se encuentra inactiva<\/strong> en el modelo de datos veremos que en este caso los valores se filtran correctamente, obteniendo valores distintos a los obtenidos si filtramos la tabla &#8216;Pedidos&#8217; a trav\u00e9s de la relaci\u00f3n activa por defecto en nuestro modelo. Por ejemplo, podemos definir las siguientes columnas calculadas en la dimensi\u00f3n temporal:<\/p>\n<p>Calendario[VentasPedido]\u00a0=<br \/>\n<span class=\"Keyword\" style=\"color: #0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/>\n<span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">SUMX<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0PedidosDetalle;\u00a0PedidosDetalle[Cantidad]\u00a0*\u00a0PedidosDetalle[Precio]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/>\n<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><\/p>\n<p>Calendario[VentasEnvio]\u00a0=<br \/>\n<span class=\"Keyword\" style=\"color: #0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/>\n<span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">SUMX<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0PedidosDetalle;\u00a0PedidosDetalle[Cantidad]\u00a0*\u00a0PedidosDetalle[Precio]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/>\n<span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">USERELATIONSHIP<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Pedidos[FechaEnvio];\u00a0Calendario[Fecha]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/>\n<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><\/p>\n<p>Si visualizamos una tabla con la fecha de la dimensi\u00f3n temporal y las 2 columnas calculadas anteriores observaremos que el filtro de contexto correspondiente a cada d\u00eda <strong>se propaga correctamente<\/strong> a las tablas relacionadas, obteniendo el comportamiento deseado:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-13-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-648 size-full\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-13-1.png?resize=506%2C821&#038;ssl=1\" alt=\"\" width=\"506\" height=\"821\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-13-1.png?w=506&amp;ssl=1 506w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-13-1.png?resize=185%2C300&amp;ssl=1 185w\" sizes=\"auto, (max-width: 506px) 100vw, 506px\" \/><\/a><\/p>\n<p>Podemos entonces afirmar que la funci\u00f3n <code>USERELATIONSHIP()<\/code>, usada en la expresi\u00f3n de una columna calculada, nos permitir\u00e1 \u00abviajar\u00bb a trav\u00e9s de las relaciones inactivas en un modelo de datos, solo si los filtros son aplicados en las tablas de consulta (o dimensiones) para acceder a los valores almacenados en las tablas de hechos. Si, por el contrario, invocamos la funci\u00f3n desde una tabla de hechos, para acceder a valores almacenados en una dimensi\u00f3n, <strong>la direcci\u00f3n de la propagaci\u00f3n autom\u00e1tica del filtro de contexto<\/strong> impedir\u00e1 el correcto funcionamiento de la misma.<\/p>\n<p>Existen distintas maneras de resolver este problema. Una de ellas se basa en la creaci\u00f3n de<strong> relaciones calculadas<\/strong> puras, que no dependen de la activaci\u00f3n de relaciones presentes en el modelo, sino que generan la b\u00fasqueda de los valores correspondientes desde el propio c\u00f3digo. Por ejemplo, si queremos desnormalizar, mediante la creaci\u00f3n de una columna calculada en la tabla &#8216;Pedidos&#8217; la fecha de la dimensi\u00f3n temporal correspondiente a la fecha den env\u00edo, tal y como intent\u00e1bamos al principio de este apartado, podemos usar el siguiente c\u00f3digo:<\/p>\n<p>Pedidos[FechaEnvioFILTER] =<br \/>\n<span class=\"Keyword\" style=\"color: #0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/>\n<span class=\"Keyword\" style=\"color: #0070ff;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 VALUES<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario[Fecha]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/>\n<span class=\"Keyword\" style=\"color: #0070ff;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 FILTER<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario;\u00a0Calendario[Fecha]\u00a0=\u00a0Pedidos[FechaEnvio]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/>\n<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><\/p>\n<p>Y obtendr\u00edamos el resultado deseado:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-14-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-655 size-full\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-14-1.png?resize=629%2C248&#038;ssl=1\" alt=\"\" width=\"629\" height=\"248\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-14-1.png?w=1171&amp;ssl=1 1171w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-14-1.png?resize=300%2C118&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-14-1.png?resize=768%2C302&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-14-1.png?resize=1024%2C403&amp;ssl=1 1024w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-14-1.png?resize=900%2C354&amp;ssl=1 900w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>Otra forma sencilla de conseguir el mismo resultado, sin necesidad de relaciones, es utilizar la funci\u00f3n <code>LOOKUPVALUE()<\/code>:<\/p>\n<p>Pedidos[FechaEnvioLOOKUPVALUE]\u00a0=<br \/>\n<span class=\"Keyword\" style=\"color: #0070ff;\">LOOKUPVALUE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario[Fecha];\u00a0Calendario[Fecha];\u00a0Pedidos[FechaEnvio]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><\/p>\n<blockquote><p><span style=\"color: #808080;\">Todo el c\u00f3digo DAX de este art\u00edculo ha sido formateado con<em> \u00abDAX Formatter\u00bb <\/em><\/span><br \/>\n<a href=\"http:\/\/www.daxformatter.com?utm_source=badge-dark&amp;utm_medium=ad&amp;utm_campaign=embed\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.daxformatter.com\/wp-content\/themes\/daxformatter\/images\/daxformatter-badge-small-dark.png?w=629\" alt=\"DAX Formatter by SQLBI\" \/><\/a><\/p><\/blockquote>\n<\/section>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n En un modelo tabular con relaciones inactivas podemos usar la funci\u00f3n USERELATIONSHIP() para activar una de ellas durante el tiempo de ejecuci\u00f3n de un determinado c\u00e1lculo con DAX. Para ello, simplemente tenemos que especificar dicha funci\u00f3n (y los par\u00e1metros correspondientes) como uno de los argumentos de filtro de la funci\u00f3n CALCULATE(). El uso de [&hellip;]<\/p>\n","protected":false},"author":2,"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,4],"tags":[27,9,11,14,23],"post_series":[],"class_list":["post-608","post","type-post","status-publish","format-standard","hentry","category-arquitectura-de-datos","category-dax-power-pivot","tag-bi","tag-dax","tag-inteligencia-de-negocios","tag-power-bi","tag-power-pivot"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Introducci\u00f3n En un modelo tabular con relaciones inactivas podemos usar la funci\u00f3n USERELATIONSHIP() para activar una de ellas durante el tiempo de ejecuci\u00f3n de un determinado c\u00e1lculo con DAX. Para ello, simplemente tenemos que especificar dicha funci\u00f3n (y los par\u00e1metros correspondientes) como uno de los argumentos de filtro de la funci\u00f3n CALCULATE(). El uso de\" \/>\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\/2018\/07\/25\/userelationship-en-columnas-calculadas\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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=\"Uso de la funci\u00f3n USERELATIONSHIP en columnas calculadas | Business Intelligence Controlling\" \/>\n\t\t<meta property=\"og:description\" content=\"Introducci\u00f3n En un modelo tabular con relaciones inactivas podemos usar la funci\u00f3n USERELATIONSHIP() para activar una de ellas durante el tiempo de ejecuci\u00f3n de un determinado c\u00e1lculo con DAX. Para ello, simplemente tenemos que especificar dicha funci\u00f3n (y los par\u00e1metros correspondientes) como uno de los argumentos de filtro de la funci\u00f3n CALCULATE(). El uso de\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2018-07-25T07:01:04+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-07-16T13:09:03+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Uso de la funci\u00f3n USERELATIONSHIP en columnas calculadas | Business Intelligence Controlling\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Introducci\u00f3n En un modelo tabular con relaciones inactivas podemos usar la funci\u00f3n USERELATIONSHIP() para activar una de ellas durante el tiempo de ejecuci\u00f3n de un determinado c\u00e1lculo con DAX. Para ello, simplemente tenemos que especificar dicha funci\u00f3n (y los par\u00e1metros correspondientes) como uno de los argumentos de filtro de la funci\u00f3n CALCULATE(). El uso de\" \/>\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\\\/2018\\\/07\\\/25\\\/userelationship-en-columnas-calculadas\\\/#article\",\"name\":\"Uso de la funci\\u00f3n USERELATIONSHIP en columnas calculadas | Business Intelligence Controlling\",\"headline\":\"Uso de la funci\\u00f3n USERELATIONSHIP en columnas calculadas\",\"author\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/bicontrolling.com\\\/wp-content\\\/uploads\\\/2018\\\/08\\\/image-10-1.png?fit=450%2C278&ssl=1\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/07\\\/25\\\/userelationship-en-columnas-calculadas\\\/#articleImage\",\"width\":450,\"height\":278},\"datePublished\":\"2018-07-25T07:01:04+02:00\",\"dateModified\":\"2019-07-16T15:09:03+02:00\",\"inLanguage\":\"es-ES\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/07\\\/25\\\/userelationship-en-columnas-calculadas\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/07\\\/25\\\/userelationship-en-columnas-calculadas\\\/#webpage\"},\"articleSection\":\"Arquitectura de datos, DAX, BI, DAX, Inteligencia de negocios, Power BI, Power Pivot\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/07\\\/25\\\/userelationship-en-columnas-calculadas\\\/#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\\\/2018\\\/07\\\/25\\\/userelationship-en-columnas-calculadas\\\/#listItem\",\"name\":\"Uso de la funci\\u00f3n USERELATIONSHIP en columnas calculadas\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com#listItem\",\"name\":\"Inicio\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/07\\\/25\\\/userelationship-en-columnas-calculadas\\\/#listItem\",\"position\":3,\"name\":\"Uso de la funci\\u00f3n USERELATIONSHIP en columnas calculadas\",\"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\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/admin\\\/\",\"name\":\"Admin\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/07\\\/25\\\/userelationship-en-columnas-calculadas\\\/#webpage\",\"url\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/07\\\/25\\\/userelationship-en-columnas-calculadas\\\/\",\"name\":\"Uso de la funci\\u00f3n USERELATIONSHIP en columnas calculadas | Business Intelligence Controlling\",\"description\":\"Introducci\\u00f3n En un modelo tabular con relaciones inactivas podemos usar la funci\\u00f3n USERELATIONSHIP() para activar una de ellas durante el tiempo de ejecuci\\u00f3n de un determinado c\\u00e1lculo con DAX. Para ello, simplemente tenemos que especificar dicha funci\\u00f3n (y los par\\u00e1metros correspondientes) como uno de los argumentos de filtro de la funci\\u00f3n CALCULATE(). El uso de\",\"inLanguage\":\"es-ES\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/07\\\/25\\\/userelationship-en-columnas-calculadas\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2018-07-25T07:01:04+02:00\",\"dateModified\":\"2019-07-16T15:09:03+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":"Uso de la funci\u00f3n USERELATIONSHIP en columnas calculadas | Business Intelligence Controlling","description":"Introducci\u00f3n En un modelo tabular con relaciones inactivas podemos usar la funci\u00f3n USERELATIONSHIP() para activar una de ellas durante el tiempo de ejecuci\u00f3n de un determinado c\u00e1lculo con DAX. Para ello, simplemente tenemos que especificar dicha funci\u00f3n (y los par\u00e1metros correspondientes) como uno de los argumentos de filtro de la funci\u00f3n CALCULATE(). El uso de","canonical_url":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/#article","name":"Uso de la funci\u00f3n USERELATIONSHIP en columnas calculadas | Business Intelligence Controlling","headline":"Uso de la funci\u00f3n USERELATIONSHIP en columnas calculadas","author":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/bicontrolling.com\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-10-1.png?fit=450%2C278&ssl=1","@id":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/#articleImage","width":450,"height":278},"datePublished":"2018-07-25T07:01:04+02:00","dateModified":"2019-07-16T15:09:03+02:00","inLanguage":"es-ES","mainEntityOfPage":{"@id":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/#webpage"},"isPartOf":{"@id":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/#webpage"},"articleSection":"Arquitectura de datos, DAX, BI, DAX, Inteligencia de negocios, Power BI, Power Pivot"},{"@type":"BreadcrumbList","@id":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/#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\/2018\/07\/25\/userelationship-en-columnas-calculadas\/#listItem","name":"Uso de la funci\u00f3n USERELATIONSHIP en columnas calculadas"},"previousItem":{"@type":"ListItem","@id":"https:\/\/bicontrolling.com#listItem","name":"Inicio"}},{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/#listItem","position":3,"name":"Uso de la funci\u00f3n USERELATIONSHIP en columnas calculadas","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\/admin\/#author","url":"https:\/\/bicontrolling.com\/index.php\/author\/admin\/","name":"Admin"},{"@type":"WebPage","@id":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/#webpage","url":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/","name":"Uso de la funci\u00f3n USERELATIONSHIP en columnas calculadas | Business Intelligence Controlling","description":"Introducci\u00f3n En un modelo tabular con relaciones inactivas podemos usar la funci\u00f3n USERELATIONSHIP() para activar una de ellas durante el tiempo de ejecuci\u00f3n de un determinado c\u00e1lculo con DAX. Para ello, simplemente tenemos que especificar dicha funci\u00f3n (y los par\u00e1metros correspondientes) como uno de los argumentos de filtro de la funci\u00f3n CALCULATE(). El uso de","inLanguage":"es-ES","isPartOf":{"@id":"https:\/\/bicontrolling.com\/#website"},"breadcrumb":{"@id":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/#breadcrumblist"},"author":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/admin\/#author"},"creator":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/admin\/#author"},"datePublished":"2018-07-25T07:01:04+02:00","dateModified":"2019-07-16T15:09:03+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":"Uso de la funci\u00f3n USERELATIONSHIP en columnas calculadas | Business Intelligence Controlling","og:description":"Introducci\u00f3n En un modelo tabular con relaciones inactivas podemos usar la funci\u00f3n USERELATIONSHIP() para activar una de ellas durante el tiempo de ejecuci\u00f3n de un determinado c\u00e1lculo con DAX. Para ello, simplemente tenemos que especificar dicha funci\u00f3n (y los par\u00e1metros correspondientes) como uno de los argumentos de filtro de la funci\u00f3n CALCULATE(). El uso de","og:url":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/","article:published_time":"2018-07-25T07:01:04+00:00","article:modified_time":"2019-07-16T13:09:03+00:00","twitter:card":"summary","twitter:title":"Uso de la funci\u00f3n USERELATIONSHIP en columnas calculadas | Business Intelligence Controlling","twitter:description":"Introducci\u00f3n En un modelo tabular con relaciones inactivas podemos usar la funci\u00f3n USERELATIONSHIP() para activar una de ellas durante el tiempo de ejecuci\u00f3n de un determinado c\u00e1lculo con DAX. Para ello, simplemente tenemos que especificar dicha funci\u00f3n (y los par\u00e1metros correspondientes) como uno de los argumentos de filtro de la funci\u00f3n CALCULATE(). El uso de"},"aioseo_meta_data":{"post_id":"608","title":null,"description":null,"keywords":null,"keyphrases":null,"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":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"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":"","isEnabled":true},"graphs":[]},"schema_type":null,"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":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-03-31 11:39:56","updated":"2025-06-04 11:10:56","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\">&raquo;<\/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\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tUso de la funci\u00f3n USERELATIONSHIP en columnas calculadas\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":"Uso de la funci\u00f3n USERELATIONSHIP en columnas calculadas","link":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/"}],"jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":275,"url":"https:\/\/bicontrolling.com\/index.php\/2018\/03\/31\/patron-total-acumulado-en-power-bi\/","url_meta":{"origin":608,"position":0},"title":"Patr\u00f3n del total acumulado en Power BI","author":"Admin","date":"31 marzo, 2018","format":false,"excerpt":"Una medida com\u00fan que encontraremos \u00fatil con frecuencia es aquella que computa el total acumulado de una m\u00e9trica a lo largo de las categor\u00edas de alguna dimensi\u00f3n, normalmente el tiempo. El acumulado (ya sea como suma, promedio o cualquier otro tipo de agregaci\u00f3n), es uno de los c\u00e1lculos m\u00e1s utilizados\u2026","rel":"","context":"En \u00abDAX\u00bb","block_context":{"text":"DAX","link":"https:\/\/bicontrolling.com\/index.php\/category\/dax-power-pivot\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2017\/12\/image-1-1.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1655,"url":"https:\/\/bicontrolling.com\/index.php\/2023\/07\/20\/las-funciones-all-como-modificadores-de-calculate\/","url_meta":{"origin":608,"position":1},"title":"Las funciones ALL* como modificadores de CALCULATE","author":"Admin","date":"20 julio, 2023","format":false,"excerpt":"En este art\u00edculo vamos a analizar, mediante varios ejemplos, como se comportan las funciones de la familia ALL cuando las usamos como la funci\u00f3n de primer nivel en un argumento de filtro de CALCULATE. En estos casos, ALL deja de ser una funci\u00f3n tabular y se transforma en un modificador\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\/2023\/08\/MismoResultadoConKEEPFILTERS.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/MismoResultadoConKEEPFILTERS.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/MismoResultadoConKEEPFILTERS.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1404,"url":"https:\/\/bicontrolling.com\/index.php\/2019\/12\/22\/medias-moviles\/","url_meta":{"origin":608,"position":2},"title":"Medias m\u00f3viles en Power BI","author":"Admin","date":"22 diciembre, 2019","format":false,"excerpt":"En estad\u00edstica, una media m\u00f3vil se refiere al c\u00e1lculo de puntos de datos mediante la creaci\u00f3n de una serie de promedios de diferentes subconjuntos del total de los datos originales con el objetivo de suavizar las fluctuaciones del corto plazo, resaltando as\u00ed las tendencias o ciclos de largo plazo. En\u2026","rel":"","context":"En \u00abDAX\u00bb","block_context":{"text":"DAX","link":"https:\/\/bicontrolling.com\/index.php\/category\/dax-power-pivot\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/12\/ConTIntelligence.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/12\/ConTIntelligence.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/12\/ConTIntelligence.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/12\/ConTIntelligence.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":541,"url":"https:\/\/bicontrolling.com\/index.php\/2018\/05\/26\/tasas-de-variacion-con-time-intelligence\/","url_meta":{"origin":608,"position":3},"title":"Tasas de variaci\u00f3n e Inteligencia de Tiempo","author":"Admin","date":"26 mayo, 2018","format":false,"excerpt":"Introducci\u00f3n Data Analysis Expressions (DAX) incluye la importante funcionalidad de Time Intelligence o inteligencia de tiempo,\u00a0funciones integradas en el lenguaje con las que podemos manipular y agregar datos en funci\u00f3n de periodos temporales para construir y comparar c\u00e1lculos sobre dichos periodos. Este tipo de an\u00e1lisis de series temporales es esencial\u2026","rel":"","context":"En \u00abDAX\u00bb","block_context":{"text":"DAX","link":"https:\/\/bicontrolling.com\/index.php\/category\/dax-power-pivot\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/07\/image-5-2.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1466,"url":"https:\/\/bicontrolling.com\/index.php\/2020\/10\/19\/diagramas-pareto-powerbi\/","url_meta":{"origin":608,"position":4},"title":"Diagramas de Pareto din\u00e1micos en Power BI","author":"Admin","date":"19 octubre, 2020","format":false,"excerpt":"Introducci\u00f3n El\u00a0diagrama de Pareto, tambi\u00e9n conocido como\u00a0curva cerrada\u00a0o\u00a0distribuci\u00f3n A-B-C, es un gr\u00e1fico combinado de columnas y l\u00edneas en el que los valores individuales se representan en orden descendente por columnas, y el total acumulado se representa a trav\u00e9s de la l\u00ednea. El nombre del gr\u00e1fico proviene del principio de Pareto,\u2026","rel":"","context":"En \u00abControlling \/ Dir. Financiera\u00bb","block_context":{"text":"Controlling \/ Dir. Financiera","link":"https:\/\/bicontrolling.com\/index.php\/category\/controlling-dir-financiera\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/10\/Imagen-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/10\/Imagen-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/10\/Imagen-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/10\/Imagen-1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/10\/Imagen-1.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":1002,"url":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/","url_meta":{"origin":608,"position":5},"title":"Integraci\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI","author":"Admin","date":"4 julio, 2019","format":false,"excerpt":"Introducci\u00f3n El modelado de previsiones presupuestarias constituye uno de los escenarios m\u00e1s desafiantes en el campo del dise\u00f1o y explotaci\u00f3n de modelos de datos en Power BI. Las estructuras de datos en dicha herramienta se basan en el motor de Analysis Services y en la tecnolog\u00eda xVelocity (previamente denominada VertiPaq);\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\/07\/desviaciones-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/desviaciones-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/desviaciones-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/desviaciones-1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/desviaciones-1.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/desviaciones-1.png?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/608","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\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/comments?post=608"}],"version-history":[{"count":2,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/608\/revisions"}],"predecessor-version":[{"id":1258,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/608\/revisions\/1258"}],"wp:attachment":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/media?parent=608"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/categories?post=608"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/tags?post=608"},{"taxonomy":"post_series","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/post_series?post=608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}