- Deprecated function: Use of "static" in callables is deprecated in Drupal\user\Entity\Role::postLoad() (line 172 of core/modules/user/src/Entity/Role.php).
Drupal\user\Entity\Role::postLoad(Object, Array) (Line: 423)
Drupal\Core\Entity\EntityStorageBase->postLoad(Array) (Line: 353)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 16)
Drupal\user\RoleStorage->isPermissionInRoles('access site in maintenance mode', Array) (Line: 112)
Drupal\Core\Session\UserSession->hasPermission('access site in maintenance mode') (Line: 105)
Drupal\Core\Session\AccountProxy->hasPermission('access site in maintenance mode') (Line: 83)
Drupal\redirect\RedirectChecker->canRedirect(Object) (Line: 120)
Drupal\redirect\EventSubscriber\RedirectRequestSubscriber->onKernelRequestCheckRedirect(Object, 'kernel.request', Object)
call_user_func(Array, Object, 'kernel.request', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.request') (Line: 145)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'e2427ade-b4f5-48a7-8e40-c15a17b8bb68') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'e2427ade-b4f5-48a7-8e40-c15a17b8bb68') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'e2427ade-b4f5-48a7-8e40-c15a17b8bb68') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'e2427ade-b4f5-48a7-8e40-c15a17b8bb68') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '888cf6f1-afd6-4a31-9de4-b8f255202c01') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '888cf6f1-afd6-4a31-9de4-b8f255202c01') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '888cf6f1-afd6-4a31-9de4-b8f255202c01') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '888cf6f1-afd6-4a31-9de4-b8f255202c01') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '830c4044-336e-49e0-a45f-0c032db335c9') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '830c4044-336e-49e0-a45f-0c032db335c9') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '830c4044-336e-49e0-a45f-0c032db335c9') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '830c4044-336e-49e0-a45f-0c032db335c9') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'ca71f32d-85e4-4779-8378-41e8dd2026f1') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'ca71f32d-85e4-4779-8378-41e8dd2026f1') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'ca71f32d-85e4-4779-8378-41e8dd2026f1') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'ca71f32d-85e4-4779-8378-41e8dd2026f1') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'e0c816a0-89ef-4da7-aa01-b1b7ac62009c') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'e0c816a0-89ef-4da7-aa01-b1b7ac62009c') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'e0c816a0-89ef-4da7-aa01-b1b7ac62009c') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'e0c816a0-89ef-4da7-aa01-b1b7ac62009c') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Supongamos ahora que en el campo <em>Country</em> de la tabla <em>Geography</em> tenemos el país en el que se encuentra el revendedor que ha realizado cada venta. Veamos, en primer lugar, las ventas por país. Para esto llevamos, simplemente, la medida que suma las ventas (<em>Sales</em>) y el campo <em>Country </em>a una visualización tipo tabla:
La medida <em>Sales</em> está sumando el campo que contiene la cifra de ventas, <em>SalesAmount</em>:
Sales = SUM(Sales[SalesAmount])
Supongamos ahora que deseamos ser capaces de analizar las ventas en todos los países que no sean Estados Unidos. Una primera opción sería utilizar la función <a href="/es/dax/function/calculate">CALCULATE </a>para revaluar la medida <em>Sales</em>:
Non USA sales = CALCULATE([Sales], Geography[Country] <> "United States")
Podemos llevar esta nueva medida a una visualización tipo tarjeta para ver el resultado:
La cifra es correcta, pero si llevamos esta medida a una tabla junto con el campo <em>Country</em> para mostrar las ventas fuera de los Estados Unidos segmentadas por país, el resultado es el siguiente:
Por supuesto, esto no es lo que deseábamos, pero la función CALCULATE está modificando el contexto para considerar siempre todos los países que no sean los Estados Unidos.
Lo que queremos es poder usar el campo <em>SalesAmount </em>que contiene la cifra de venta pero incluyendo solo aquellos registros de ventas que no se correspondan con revendedores situados en los Estados Unidos. Para empezar, podemos construir esta tabla que solo considere los países de interés usando la función <a href="/es/dax/function/filter">FILTER</a>. El pseudocódigo sería algo así como:
Tabla filtrada = FILTER(
Sales,
Países que no sean Estados Unidos
)
Si la tabla <em>Sales</em> incluyese un campo "<em>Country</em>", bastaría con añadir <em>Country <> "United States"</em> en lugar de "<em>Países que no sean Estados Unidos</em>", pero no lo incluye. Esta información relativa al país en el que se encuentra el revendedor está en otra tabla, la mencionada tabla de <em>Geography</em>, tabla que no es accesible directamente como argumento de la función FILTER. Es en esta situación en la que la función RELATED resulta de utilidad. Suponiendo que existe una relación (de tipo varios a uno, o uno a uno) entre la tabla de ventas y la de geografía, podemos acceder desde la primera a la columna <em>Country</em> de la segunda con la expresión:
RELATED(Geography[Country])
Ahora, el código de la tabla filtrada sería el siguiente:
Tabla filtrada = FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
)
Tal y como se ha comentado, la función RELATED requiere de un contexto de fila, lo que podemos conseguir usando una función de escaneo de tablas como <a href="/es/dax/function/sumx">SUMX</a>, que es exactamente lo que buscamos para calcular el total de ventas:
Sales non USA =
SUMX(
FILTER(
Sales,
RELATED(Geography[Country]) <> "United States"
),
Sales[SalesAmount]
)
Lo que estamos haciendo es sumar el campo <em>SalesAmount </em>para cada una de las filas de la tabla filtrada, y ésta está compuesta por el conjunto de registros de ventas que no tienen asociado como país a los Estados Unidos, pero sin excluir otros posibles filtros que vengan dados por el contexto.
De esta forma, si llevamos esta medida a una tarjeta:
...comprobamos que el total es correcto. Y si la llevamos a una tabla junto con el campo <em>Country</em> de <em>Geography</em>:
...vemos que la medida se adapta correctamente al contexto, tal y como queríamos.
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 125)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_c80c0b77898c75587c022d0756404fc4->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-long.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Return type of Drupal\google_analytics\Component\Render\GoogleAnalyticsJavaScriptSnippet::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 10 of modules/contrib/google_analytics/src/Component/Render/GoogleAnalyticsJavaScriptSnippet.php).
include('/var/www/vhosts/interactivechaos.ovh/httpdocs/modules/contrib/google_analytics/src/Component/Render/GoogleAnalyticsJavaScriptSnippet.php') (Line: 578)
Composer\Autoload\ClassLoader::Composer\Autoload\{closure}('/var/www/vhosts/interactivechaos.ovh/httpdocs/modules/contrib/google_analytics/src/Component/Render/GoogleAnalyticsJavaScriptSnippet.php') (Line: 432)
Composer\Autoload\ClassLoader->loadClass('Drupal\google_analytics\Component\Render\GoogleAnalyticsJavaScriptSnippet') (Line: 372)
google_analytics_page_attachments(Array) (Line: 313)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}(Object, 'google_analytics') (Line: 405)
Drupal\Core\Extension\ModuleHandler->invokeAllWith('page_attachments', Object) (Line: 310)
Drupal\Core\Render\MainContent\HtmlRenderer->invokePageAttachmentHooks(Array) (Line: 288)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Use of "static" in callables is deprecated in Drupal\user\Entity\Role::postLoad() (line 172 of core/modules/user/src/Entity/Role.php).
Drupal\user\Entity\Role::postLoad(Object, Array) (Line: 423)
Drupal\Core\Entity\EntityStorageBase->postLoad(Array) (Line: 353)
Drupal\Core\Entity\EntityStorageBase->loadMultiple() (Line: 126)
eu_cookie_compliance_page_attachments(Array) (Line: 313)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}(Object, 'eu_cookie_compliance') (Line: 405)
Drupal\Core\Extension\ModuleHandler->invokeAllWith('page_attachments', Object) (Line: 310)
Drupal\Core\Render\MainContent\HtmlRenderer->invokePageAttachmentHooks(Array) (Line: 288)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\views\ManyToOneHelper::$handler is deprecated in Drupal\views\ManyToOneHelper->__construct() (line 24 of core/modules/views/src/ManyToOneHelper.php).
Drupal\views\ManyToOneHelper->__construct(Object) (Line: 51)
Drupal\views\Plugin\views\filter\ManyToOne->defineOptions() (Line: 141)
Drupal\views\Plugin\views\PluginBase->init(Object, Object, Array) (Line: 104)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 95)
Drupal\views\Plugin\views\filter\FilterPluginBase->init(Object, Object, Array) (Line: 44)
Drupal\views\Plugin\views\filter\InOperator->init(Object, Object, Array) (Line: 36)
Drupal\views\Plugin\views\filter\ManyToOne->init(Object, Object, Array) (Line: 25)
Drupal\options\Plugin\views\filter\ListField->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('filter') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('filter', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2633)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->build() (Line: 171)
Drupal\block\BlockViewBuilder::preRender(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 302)
__TwigTemplate_c8b006727765bdbd2647614d70488e6c->block_sidebar_first(Array, Array) (Line: 182)
Twig\Template->displayBlock('sidebar_first', Array, Array) (Line: 178)
__TwigTemplate_c8b006727765bdbd2647614d70488e6c->block_main(Array, Array) (Line: 182)
Twig\Template->displayBlock('main', Array, Array) (Line: 87)
__TwigTemplate_c8b006727765bdbd2647614d70488e6c->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/page.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('page', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 97)
__TwigTemplate_ed8fa9c8f2c296c9becadea6e6efe774->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/html.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('html', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 162)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 157)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\views\ManyToOneHelper::$handler is deprecated in Drupal\views\ManyToOneHelper->__construct() (line 24 of core/modules/views/src/ManyToOneHelper.php).
Drupal\views\ManyToOneHelper->__construct(Object) (Line: 51)
Drupal\views\Plugin\views\filter\ManyToOne->defineOptions() (Line: 228)
Drupal\views\Plugin\views\PluginBase->unpackOptions(Array, Array) (Line: 144)
Drupal\views\Plugin\views\PluginBase->init(Object, Object, Array) (Line: 104)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 95)
Drupal\views\Plugin\views\filter\FilterPluginBase->init(Object, Object, Array) (Line: 44)
Drupal\views\Plugin\views\filter\InOperator->init(Object, Object, Array) (Line: 36)
Drupal\views\Plugin\views\filter\ManyToOne->init(Object, Object, Array) (Line: 25)
Drupal\options\Plugin\views\filter\ListField->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('filter') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('filter', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2633)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->build() (Line: 171)
Drupal\block\BlockViewBuilder::preRender(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 302)
__TwigTemplate_c8b006727765bdbd2647614d70488e6c->block_sidebar_first(Array, Array) (Line: 182)
Twig\Template->displayBlock('sidebar_first', Array, Array) (Line: 178)
__TwigTemplate_c8b006727765bdbd2647614d70488e6c->block_main(Array, Array) (Line: 182)
Twig\Template->displayBlock('main', Array, Array) (Line: 87)
__TwigTemplate_c8b006727765bdbd2647614d70488e6c->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/page.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('page', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 97)
__TwigTemplate_ed8fa9c8f2c296c9becadea6e6efe774->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/html.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('html', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 162)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 157)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\views\ManyToOneHelper::$handler is deprecated in Drupal\views\ManyToOneHelper->__construct() (line 24 of core/modules/views/src/ManyToOneHelper.php).
Drupal\views\ManyToOneHelper->__construct(Object) (Line: 51)
Drupal\views\Plugin\views\filter\ManyToOne->defineOptions() (Line: 228)
Drupal\views\Plugin\views\PluginBase->unpackOptions(Array, Array) (Line: 110)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 95)
Drupal\views\Plugin\views\filter\FilterPluginBase->init(Object, Object, Array) (Line: 44)
Drupal\views\Plugin\views\filter\InOperator->init(Object, Object, Array) (Line: 36)
Drupal\views\Plugin\views\filter\ManyToOne->init(Object, Object, Array) (Line: 25)
Drupal\options\Plugin\views\filter\ListField->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('filter') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('filter', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2633)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->build() (Line: 171)
Drupal\block\BlockViewBuilder::preRender(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 302)
__TwigTemplate_c8b006727765bdbd2647614d70488e6c->block_sidebar_first(Array, Array) (Line: 182)
Twig\Template->displayBlock('sidebar_first', Array, Array) (Line: 178)
__TwigTemplate_c8b006727765bdbd2647614d70488e6c->block_main(Array, Array) (Line: 182)
Twig\Template->displayBlock('main', Array, Array) (Line: 87)
__TwigTemplate_c8b006727765bdbd2647614d70488e6c->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/page.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('page', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 97)
__TwigTemplate_ed8fa9c8f2c296c9becadea6e6efe774->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/html.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('html', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 162)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 157)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\views\ManyToOneHelper::$handler is deprecated in Drupal\views\ManyToOneHelper->__construct() (line 24 of core/modules/views/src/ManyToOneHelper.php).
Drupal\views\ManyToOneHelper->__construct(Object) (Line: 38)
Drupal\views\Plugin\views\filter\ManyToOne->init(Object, Object, Array) (Line: 25)
Drupal\options\Plugin\views\filter\ListField->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('filter') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('filter', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2633)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->build() (Line: 171)
Drupal\block\BlockViewBuilder::preRender(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 302)
__TwigTemplate_c8b006727765bdbd2647614d70488e6c->block_sidebar_first(Array, Array) (Line: 182)
Twig\Template->displayBlock('sidebar_first', Array, Array) (Line: 178)
__TwigTemplate_c8b006727765bdbd2647614d70488e6c->block_main(Array, Array) (Line: 182)
Twig\Template->displayBlock('main', Array, Array) (Line: 87)
__TwigTemplate_c8b006727765bdbd2647614d70488e6c->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/page.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('page', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 97)
__TwigTemplate_ed8fa9c8f2c296c9becadea6e6efe774->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/html.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('html', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 162)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 157)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)