{"id":539,"date":"2018-02-26T11:06:03","date_gmt":"2018-02-26T11:06:03","guid":{"rendered":"https:\/\/trainingpowerbi.wordpress.com\/?p=539"},"modified":"2018-02-26T11:06:03","modified_gmt":"2018-02-26T11:06:03","slug":"userelationship","status":"publish","type":"post","link":"https:\/\/bicontrolling.com\/index.php\/2018\/02\/26\/userelationship\/","title":{"rendered":"La funci\u00f3n USERELATIONSHIP"},"content":{"rendered":"<p>En cualquier modelo de datos es relativamente frecuente la necesidad de analizar un mismo par\u00e1metro en funci\u00f3n de fechas distintas que describen un mismo evento. Por ejemplo, podemos disponer de una tabla de pedidos donde, para cada uno de ellos, tengamos una fecha de pedido, una de entrega y una de env\u00edo. Pueden existir varias relaciones entre dos tablas en un modelo tabular, pero <strong>solo una de ellas puede permanecer activa<\/strong> durante la realizaci\u00f3n de un c\u00e1lculo determinado, requiriendo la desactivaci\u00f3n de las dem\u00e1s:<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-587\" src=\"https:\/\/trainingpowerbi.files.wordpress.com\/2018\/06\/image-3.png?resize=629%2C305\" alt=\"Image 3\" width=\"629\" height=\"305\" \/><\/p>\n<p><!--more--><\/p>\n<p>La situaci\u00f3n se complica cuando queremos mostrar en una misma visualizaci\u00f3n los datos para las 3 fechas <strong>al mismo tiempo<\/strong>. Para ello, podemos recurrir a la funci\u00f3n <code>USERELATIONSHIP()<\/code> , que especifica la relaci\u00f3n que va a ser usada en un determinado c\u00e1lculo como la \u00fanica relaci\u00f3n existente entre las columnas especificadas como argumentos de dicha funci\u00f3n, cambiando la relaci\u00f3n activa en el contexto de filtro definido por <code>CALCULATE()<\/code>. De esta manera,\u00a0<code>USERELATIONSHIP()<\/code> anula, cuando sea necesario, la relaci\u00f3n activa por defecto entre las dos tablas, activando posteriormente la relaci\u00f3n detallada en los par\u00e1metros de la funci\u00f3n.<\/p>\n<p>Por ejemplo, en la vista de relaciones de la imagen anterior podemos observar que la <strong>relaci\u00f3n activa entre las tablas<\/strong> &#8216;Pedidos&#8217; y &#8216;Calendario&#8217; corresponde al campo que especifica la fecha del pedido correspondiente, quedando las otras 2 relaciones inactivas.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-588\" src=\"https:\/\/trainingpowerbi.files.wordpress.com\/2018\/06\/image-5.png?resize=629%2C488\" alt=\"Image 5\" width=\"629\" height=\"488\" \/><\/p>\n<p>Si queremos segmentar las ventas en funci\u00f3n de las 3 fechas (pedido, env\u00edo y entrega) necesitaremos construir las siguientes medidas:<\/p>\n<p>VentasPorEntrega\u00a0=<br \/>\n<span class=\"Keyword\" style=\"color:#0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color:#969696;\">\u00a0(<\/span><br \/>\n[Ventas];<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[FechaEntrega]; Calendario[Fecha]\u00a0 <span class=\"Parenthesis\" style=\"color:#969696;\">)<\/span><br \/>\n<span class=\"Parenthesis\" style=\"color:#969696;\">)<\/span><\/p>\n<p>VentasPorEnvio\u00a0=<br \/>\n<span class=\"Keyword\" style=\"color:#0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color:#969696;\">\u00a0(<\/span><br \/>\n[Ventas];<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]; Calendario[Fecha]\u00a0 <span class=\"Parenthesis\" style=\"color:#969696;\">)<\/span><br \/>\n<span class=\"Parenthesis\" style=\"color:#969696;\">)<\/span><\/p>\n<p>De esta forma, DAX activa la relaci\u00f3n inactiva especificada en los argumentos de la funci\u00f3n durante la evaluaci\u00f3n del par\u00e1metro de expresi\u00f3n de la funci\u00f3n <code>CALCULATE()<\/code>, desactivando (<strong>en el mismo momento<\/strong>), la relaci\u00f3n activa por defecto que en nuestro caso es la correspondiente a la fecha de pedido, y con la que se calcula la medida <code>[Ventas]<\/code>. Ahora podemos utilizar las 3 medidas en una misma visualizaci\u00f3n, de manera que cada una de ellas muestre\u00a0correctamente los datos segmentados por los periodos definidos en el contexto de filtro:<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-590\" src=\"https:\/\/trainingpowerbi.files.wordpress.com\/2018\/06\/image-6.png?resize=390%2C349\" alt=\"Image 6\" width=\"390\" height=\"349\" \/><\/p>\n<p>Es importante entender que el estado de la relaci\u00f3n no interviene en el uso de la funci\u00f3n <code>USERELATIONSHIP()<\/code> ; es decir, aun cuando la relaci\u00f3n especificada se encuentre inactiva en el modelo de datos, <strong>se usar\u00e1 y anular\u00e1 cualquier otra relaci\u00f3n activa<\/strong> presente entre las 2 tablas y no mencionada en los argumentos de la funci\u00f3n.<\/p>\n<p>Existen multitud de escenarios empresariales en los que tendremos m\u00e1s de una fecha describiendo un mismo evento, ejemplos t\u00edpicos pueden ser:<\/p>\n<ul>\n<li>Fechas de entrada y salida de producci\u00f3n en un taller de fabricaci\u00f3n.<\/li>\n<li>Fechas de ingreso y de alta en un hospital.<\/li>\n<li>Fechas de pedido, env\u00edo y entrega en empresas de transporte.<\/li>\n<li>Etc.<\/li>\n<\/ul>\n<p>Un caso de especial inter\u00e9s para mi es el que se genera al usar la <strong>contabilidad financiera<\/strong> de una empresa como origen de datos, donde por un lado tendremos un libro diario con las fechas de los asientos contables y por el otro las fechas de los libros de IVA soportado y repercutido. Modelar esta situaci\u00f3n con una relaci\u00f3n inactiva entre nuestra dimensi\u00f3n temporal y nuestra tabla de registro de IVA soportado por ejemplo, como se muestra en la siguiente imagen, nos permitir\u00e1 segmentar los datos num\u00e9ricos por periodos, tanto para c\u00e1lculos relacionados con los ingresos y gastos de la empresa como para aquellos relacionados con las liquidaciones de impuestos.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-598\" src=\"https:\/\/trainingpowerbi.files.wordpress.com\/2018\/06\/image-1.png?resize=611%2C834\" alt=\"Image 1\" width=\"611\" height=\"834\" \/><\/p>\n<p>Por ejemplo, para calcular el IVA soportado del primer trimestre del a\u00f1o 2018 podemos usar el siguiente c\u00f3digo:<\/p>\n<p>IVAsop1T\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;\">SUM<\/span><span class=\"Parenthesis\" style=\"color:#969696;\">\u00a0(<\/span>\u00a0&#8216;Registro\u00a0IVAsop'[IVA]\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>\u00a0&#8216;Registro\u00a0IVAsop'[Fecha];\u00a0Calendario[Fecha]\u00a0<span class=\"Parenthesis\" style=\"color:#969696;\">)<\/span>;<br \/>\nCalendario[Trimestre]\u00a0=\u00a0<span class=\"StringLiteral\" style=\"color:#d93124;\">\u00abT1\u00a02018\u00bb<\/span><br \/>\n<span class=\"Parenthesis\" style=\"color:#969696;\">)<\/span><\/p>\n<p>De este modo, utilizando los importes acumulados de los registros de IVA, nos ser\u00e1 posible la creaci\u00f3n de visualizaciones que informen del estado de las liquidaciones del impuesto de manera provisional, facilitando as\u00ed la gesti\u00f3n de la tesorer\u00eda.<\/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","protected":false},"excerpt":{"rendered":"<p>En cualquier modelo de datos es relativamente frecuente la necesidad de analizar un mismo par\u00e1metro en funci\u00f3n de fechas distintas que describen un mismo evento. Por ejemplo, podemos disponer de una tabla de pedidos donde, para cada uno de ellos, tengamos una fecha de pedido, una de entrega y una de env\u00edo. Pueden existir varias [&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,3,4],"tags":[],"post_series":[],"class_list":["post-539","post","type-post","status-publish","format-standard","hentry","category-arquitectura-de-datos","category-controlling-dir-financiera","category-dax-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=\"En cualquier modelo de datos es relativamente frecuente la necesidad de analizar un mismo par\u00e1metro en funci\u00f3n de fechas distintas que describen un mismo evento. Por ejemplo, podemos disponer de una tabla de pedidos donde, para cada uno de ellos, tengamos una fecha de pedido, una de entrega y una de env\u00edo. Pueden existir varias\" \/>\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\/02\/26\/userelationship\/\" \/>\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=\"La funci\u00f3n USERELATIONSHIP | Business Intelligence Controlling\" \/>\n\t\t<meta property=\"og:description\" content=\"En cualquier modelo de datos es relativamente frecuente la necesidad de analizar un mismo par\u00e1metro en funci\u00f3n de fechas distintas que describen un mismo evento. Por ejemplo, podemos disponer de una tabla de pedidos donde, para cada uno de ellos, tengamos una fecha de pedido, una de entrega y una de env\u00edo. Pueden existir varias\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/bicontrolling.com\/index.php\/2018\/02\/26\/userelationship\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2018-02-26T11:06:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2018-02-26T11:06:03+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"La funci\u00f3n USERELATIONSHIP | Business Intelligence Controlling\" \/>\n\t\t<meta name=\"twitter:description\" content=\"En cualquier modelo de datos es relativamente frecuente la necesidad de analizar un mismo par\u00e1metro en funci\u00f3n de fechas distintas que describen un mismo evento. Por ejemplo, podemos disponer de una tabla de pedidos donde, para cada uno de ellos, tengamos una fecha de pedido, una de entrega y una de env\u00edo. Pueden existir varias\" \/>\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\\\/02\\\/26\\\/userelationship\\\/#article\",\"name\":\"La funci\\u00f3n USERELATIONSHIP | Business Intelligence Controlling\",\"headline\":\"La funci\\u00f3n USERELATIONSHIP\",\"author\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/trainingpowerbi.files.wordpress.com\\\/2018\\\/06\\\/image-3.png\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/02\\\/26\\\/userelationship\\\/#articleImage\"},\"datePublished\":\"2018-02-26T11:06:03+01:00\",\"dateModified\":\"2018-02-26T11:06:03+01:00\",\"inLanguage\":\"es-ES\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/02\\\/26\\\/userelationship\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/02\\\/26\\\/userelationship\\\/#webpage\"},\"articleSection\":\"Arquitectura de datos, Controlling \\\/ Dir. Financiera, DAX\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/02\\\/26\\\/userelationship\\\/#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\\\/02\\\/26\\\/userelationship\\\/#listItem\",\"name\":\"La funci\\u00f3n USERELATIONSHIP\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com#listItem\",\"name\":\"Inicio\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/02\\\/26\\\/userelationship\\\/#listItem\",\"position\":3,\"name\":\"La funci\\u00f3n USERELATIONSHIP\",\"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\\\/02\\\/26\\\/userelationship\\\/#webpage\",\"url\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/02\\\/26\\\/userelationship\\\/\",\"name\":\"La funci\\u00f3n USERELATIONSHIP | Business Intelligence Controlling\",\"description\":\"En cualquier modelo de datos es relativamente frecuente la necesidad de analizar un mismo par\\u00e1metro en funci\\u00f3n de fechas distintas que describen un mismo evento. Por ejemplo, podemos disponer de una tabla de pedidos donde, para cada uno de ellos, tengamos una fecha de pedido, una de entrega y una de env\\u00edo. Pueden existir varias\",\"inLanguage\":\"es-ES\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2018\\\/02\\\/26\\\/userelationship\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2018-02-26T11:06:03+01:00\",\"dateModified\":\"2018-02-26T11:06:03+01: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":"La funci\u00f3n USERELATIONSHIP | Business Intelligence Controlling","description":"En cualquier modelo de datos es relativamente frecuente la necesidad de analizar un mismo par\u00e1metro en funci\u00f3n de fechas distintas que describen un mismo evento. Por ejemplo, podemos disponer de una tabla de pedidos donde, para cada uno de ellos, tengamos una fecha de pedido, una de entrega y una de env\u00edo. Pueden existir varias","canonical_url":"https:\/\/bicontrolling.com\/index.php\/2018\/02\/26\/userelationship\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bicontrolling.com\/index.php\/2018\/02\/26\/userelationship\/#article","name":"La funci\u00f3n USERELATIONSHIP | Business Intelligence Controlling","headline":"La funci\u00f3n USERELATIONSHIP","author":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/bicontrolling.com\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/trainingpowerbi.files.wordpress.com\/2018\/06\/image-3.png","@id":"https:\/\/bicontrolling.com\/index.php\/2018\/02\/26\/userelationship\/#articleImage"},"datePublished":"2018-02-26T11:06:03+01:00","dateModified":"2018-02-26T11:06:03+01:00","inLanguage":"es-ES","mainEntityOfPage":{"@id":"https:\/\/bicontrolling.com\/index.php\/2018\/02\/26\/userelationship\/#webpage"},"isPartOf":{"@id":"https:\/\/bicontrolling.com\/index.php\/2018\/02\/26\/userelationship\/#webpage"},"articleSection":"Arquitectura de datos, Controlling \/ Dir. Financiera, DAX"},{"@type":"BreadcrumbList","@id":"https:\/\/bicontrolling.com\/index.php\/2018\/02\/26\/userelationship\/#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\/02\/26\/userelationship\/#listItem","name":"La funci\u00f3n USERELATIONSHIP"},"previousItem":{"@type":"ListItem","@id":"https:\/\/bicontrolling.com#listItem","name":"Inicio"}},{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/index.php\/2018\/02\/26\/userelationship\/#listItem","position":3,"name":"La funci\u00f3n USERELATIONSHIP","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\/02\/26\/userelationship\/#webpage","url":"https:\/\/bicontrolling.com\/index.php\/2018\/02\/26\/userelationship\/","name":"La funci\u00f3n USERELATIONSHIP | Business Intelligence Controlling","description":"En cualquier modelo de datos es relativamente frecuente la necesidad de analizar un mismo par\u00e1metro en funci\u00f3n de fechas distintas que describen un mismo evento. Por ejemplo, podemos disponer de una tabla de pedidos donde, para cada uno de ellos, tengamos una fecha de pedido, una de entrega y una de env\u00edo. Pueden existir varias","inLanguage":"es-ES","isPartOf":{"@id":"https:\/\/bicontrolling.com\/#website"},"breadcrumb":{"@id":"https:\/\/bicontrolling.com\/index.php\/2018\/02\/26\/userelationship\/#breadcrumblist"},"author":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/admin\/#author"},"creator":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/admin\/#author"},"datePublished":"2018-02-26T11:06:03+01:00","dateModified":"2018-02-26T11:06:03+01: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":"La funci\u00f3n USERELATIONSHIP | Business Intelligence Controlling","og:description":"En cualquier modelo de datos es relativamente frecuente la necesidad de analizar un mismo par\u00e1metro en funci\u00f3n de fechas distintas que describen un mismo evento. Por ejemplo, podemos disponer de una tabla de pedidos donde, para cada uno de ellos, tengamos una fecha de pedido, una de entrega y una de env\u00edo. Pueden existir varias","og:url":"https:\/\/bicontrolling.com\/index.php\/2018\/02\/26\/userelationship\/","article:published_time":"2018-02-26T11:06:03+00:00","article:modified_time":"2018-02-26T11:06:03+00:00","twitter:card":"summary","twitter:title":"La funci\u00f3n USERELATIONSHIP | Business Intelligence Controlling","twitter:description":"En cualquier modelo de datos es relativamente frecuente la necesidad de analizar un mismo par\u00e1metro en funci\u00f3n de fechas distintas que describen un mismo evento. Por ejemplo, podemos disponer de una tabla de pedidos donde, para cada uno de ellos, tengamos una fecha de pedido, una de entrega y una de env\u00edo. Pueden existir varias"},"aioseo_meta_data":{"post_id":"539","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":[],"defaultGraph":"","defaultPostTypeGraph":""},"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\tLa funci\u00f3n USERELATIONSHIP\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":"La funci\u00f3n USERELATIONSHIP","link":"https:\/\/bicontrolling.com\/index.php\/2018\/02\/26\/userelationship\/"}],"jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":608,"url":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/","url_meta":{"origin":539,"position":0},"title":"Uso de la funci\u00f3n USERELATIONSHIP en columnas calculadas","author":"Admin","date":"25 julio, 2018","format":false,"excerpt":"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\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\/08\/image-121-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":816,"url":"https:\/\/bicontrolling.com\/index.php\/2018\/08\/23\/medidas-semi-aditivas-en-dax\/","url_meta":{"origin":539,"position":1},"title":"Medidas semi-aditivas en DAX","author":"Admin","date":"23 agosto, 2018","format":false,"excerpt":"En cualquier sistema de BI, podemos crear c\u00e1lculos o medidas de 3 tipos distintos: Medidas aditivas: son generalmente la mayor parte de las medidas que nos encontraremos en un modelo de datos anal\u00edtico, y se caracterizan porque podemos usar la funci\u00f3n SUM() para agregar sus valores en funci\u00f3n de cualquier\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\/04\/image-1-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/04\/image-1-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/04\/image-1-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/04\/image-1-1.png?resize=700%2C400&ssl=1 2x"},"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":539,"position":2},"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":[]},{"id":2111,"url":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/","url_meta":{"origin":539,"position":3},"title":"Trabajando con tablas &#8216;desde-hasta&#8217; o de rango de fechas en Power BI","author":"Admin","date":"26 octubre, 2023","format":false,"excerpt":"Introducci\u00f3n Uno de los tipos de tabla que nos encontramos frecuentemente a la hora de crear un modelo de datos anal\u00edtico corresponde a las tablas \"desde-hasta\" o de intervalo de fechas. Estas son un tipo de estructura muy vers\u00e1til que utilizan las bases de datos para representar y gestionar informaci\u00f3n\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\/image-5.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-5.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-5.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-5.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":275,"url":"https:\/\/bicontrolling.com\/index.php\/2018\/03\/31\/patron-total-acumulado-en-power-bi\/","url_meta":{"origin":539,"position":4},"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":1769,"url":"https:\/\/bicontrolling.com\/index.php\/2020\/12\/09\/crear-dimension-horaria-en-dax\/","url_meta":{"origin":539,"position":5},"title":"Crear dimensi\u00f3n horaria en DAX","author":"Admin","date":"9 diciembre, 2020","format":false,"excerpt":"Introducci\u00f3n En una entrada anterior vimos c\u00f3mo, en escenarios donde tanto los atributos relacionados con la fecha como los relacionados con la hora son relevantes para el an\u00e1lisis que queremos realizar, pod\u00edamos crear una dimensi\u00f3n horaria en M que nos sirviera para filtrar y segmentar nuestras medidas en funci\u00f3n de\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\/12\/Imagen-34.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/12\/Imagen-34.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/12\/Imagen-34.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/12\/Imagen-34.png?resize=700%2C400&ssl=1 2x"},"classes":[]}],"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/539","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=539"}],"version-history":[{"count":0,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/539\/revisions"}],"wp:attachment":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/media?parent=539"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/categories?post=539"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/tags?post=539"},{"taxonomy":"post_series","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/post_series?post=539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}