- 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', '5b4c599e-a800-470c-b4d2-aa320f12a350') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Se describen a continuación varios ejemplos en los que se utilizan variables dentro de expresiones DAX:
Definición de una medida concatenando textos y números
Sales txt =
VAR TotalSales = SUM(Sales[SalesAmount])
VAR Text1 = "Este mes hemos vendido "
VAR Text2 = "Este mes no hemos vendido nada"
RETURN
IF(
TotalSales > 0; -- IF
CONCATENATE(Text1; TotalSales); -- THEN
Text2 -- ELSE
)
En este ejemplo se define una primera variable, <em>TotalSales</em>, conteniendo la suma (contextualizada) de la columna <em>SalesAmount</em> de la tabla <em>Sales</em>, columna que contiene los importes de cada venta. A continuación se definen dos variables conteniendo textos que serán usadas en la salida de la medida.
El valor devuelto es el resultado de un <a href="/dax/function/if">IF</a>: Si las ventas (recordemos nuevamente, contextualizadas) son mayores que cero, se devuelve un mensaje indicando las ventas: "<em>Este mes hemos vendido XXXX</em>". En caso contrario, se devuelve directamente la cadena de texto <em>Text2</em>: "<em>Este mes no hemos vendido nada</em>". A pesar de los textos usados, la medida así definida no es capaz de distinguir si el contexto ha reducido las fechas a un mes o no.
Para la concatenación de los textos se ha usado la función <a href="/dax/function/concatenate">CONCATENATE</a>.
Medida con SWITCH
Greetings =
VAR CurrentTime = HOUR(NOW())
VAR Period =
SWITCH(
TRUE();
CurrentTime < 12; "morning";
CurrentTime < 17; "afternoon";
"evening"
)
RETURN "Good" & " " & Period
Se desea devolver en esta medida un mensaje de buenos días, tardes o noches en función de la hora de que se trate. Para ello extraemos hora con la función <a href="/dax/function/hour">HOUR </a>a partir de la fecha y hora actual que devuelve la función <a href="/dax/function/now">NOW</a>.
A continuación, asignamos a la variable <em>Period</em> una cadena de texto en función de la hora calculada: Si la hora es anterior a las 12 del mediodía le asignamos el texto "<em>morning</em>", si es anterior a las 5 de la tarde le asignamos el texto "<em>afternoon</em>" y, si no se cumple ninguna de estas dos condiciones, le asignamos el texto por defecto "<em>evening</em>".
Por último, devolvemos la concatenación de la palabra "<em>Good</em>" y el contenido de la variable <em>Period</em>, resultando "<em>Good morning</em>", "<em>Good afternoon</em>" o "<em>Good evening</em>".
Creación de una columna calculada
State & Country =
VAR State = Geography[StateProvinceName]
VAR Country = Geography[Country]
RETURN State & ", " & Country
En este ejemplo estamos añadiendo a la tabla <em>Geography </em>un campo al que denominamos <em>State & Country</em> conteniendo la concatenación del estado y del país. Para ello extraemos ambos campos y los almacenamos en sendas variables, y devolvemos la concatenación:
Medida que devuelve el número de elementos de una tabla filtrada
Bikes sales =
VAR Bikes = FILTER(Sales; RELATED(Category[Category]) = "Bikes")
RETURN
COUNTROWS(Bikes)
En este ejemplo partimos de una tabla de ventas, <em>Sales</em>, y una tabla conteniendo las posibles categorías a las que pertenecen los productos que se venden, <em>Category</em>, y deseamos saber cuántas ventas han sido de productos de la categoría <em>Bikes</em>.
Comenzamos extrayendo el subconjunto de la tabla <em>Sales</em> conteniendo las ventas de productos cuya categoría es la buscada, para lo que filtramos la tabla con <a href="/dax/function/filter">FILTER </a>especificando como filtro que la categoría sea <em>Bikes</em>. Al encontrarse esta información (la categoría de cada producto) en una tabla de dimensiones, se necesario usar la función <a href="/dax/function/related">RELATED </a>para acceder a ella.
Por último, devolvemos el recuento de las filas de esta tabla usando la función <a href="/dax/function/countrows">COUNTROWS</a>.
', '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: 88)
__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_bd990293b89f3b78c69fe0ee2f7828b5->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-with-summary.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', '5b4c599e-a800-470c-b4d2-aa320f12a350') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Se describen a continuación varios ejemplos en los que se utilizan variables dentro de expresiones DAX:
Definición de una medida concatenando textos y números
Sales txt =
VAR TotalSales = SUM(Sales[SalesAmount])
VAR Text1 = "Este mes hemos vendido "
VAR Text2 = "Este mes no hemos vendido nada"
RETURN
IF(
TotalSales > 0; -- IF
CONCATENATE(Text1; TotalSales); -- THEN
Text2 -- ELSE
)
En este ejemplo se define una primera variable, <em>TotalSales</em>, conteniendo la suma (contextualizada) de la columna <em>SalesAmount</em> de la tabla <em>Sales</em>, columna que contiene los importes de cada venta. A continuación se definen dos variables conteniendo textos que serán usadas en la salida de la medida.
El valor devuelto es el resultado de un <a href="/dax/function/if">IF</a>: Si las ventas (recordemos nuevamente, contextualizadas) son mayores que cero, se devuelve un mensaje indicando las ventas: "<em>Este mes hemos vendido XXXX</em>". En caso contrario, se devuelve directamente la cadena de texto <em>Text2</em>: "<em>Este mes no hemos vendido nada</em>". A pesar de los textos usados, la medida así definida no es capaz de distinguir si el contexto ha reducido las fechas a un mes o no.
Para la concatenación de los textos se ha usado la función <a href="/dax/function/concatenate">CONCATENATE</a>.
Medida con SWITCH
Greetings =
VAR CurrentTime = HOUR(NOW())
VAR Period =
SWITCH(
TRUE();
CurrentTime < 12; "morning";
CurrentTime < 17; "afternoon";
"evening"
)
RETURN "Good" & " " & Period
Se desea devolver en esta medida un mensaje de buenos días, tardes o noches en función de la hora de que se trate. Para ello extraemos hora con la función <a href="/dax/function/hour">HOUR </a>a partir de la fecha y hora actual que devuelve la función <a href="/dax/function/now">NOW</a>.
A continuación, asignamos a la variable <em>Period</em> una cadena de texto en función de la hora calculada: Si la hora es anterior a las 12 del mediodía le asignamos el texto "<em>morning</em>", si es anterior a las 5 de la tarde le asignamos el texto "<em>afternoon</em>" y, si no se cumple ninguna de estas dos condiciones, le asignamos el texto por defecto "<em>evening</em>".
Por último, devolvemos la concatenación de la palabra "<em>Good</em>" y el contenido de la variable <em>Period</em>, resultando "<em>Good morning</em>", "<em>Good afternoon</em>" o "<em>Good evening</em>".
Creación de una columna calculada
State & Country =
VAR State = Geography[StateProvinceName]
VAR Country = Geography[Country]
RETURN State & ", " & Country
En este ejemplo estamos añadiendo a la tabla <em>Geography </em>un campo al que denominamos <em>State & Country</em> conteniendo la concatenación del estado y del país. Para ello extraemos ambos campos y los almacenamos en sendas variables, y devolvemos la concatenación:
Medida que devuelve el número de elementos de una tabla filtrada
Bikes sales =
VAR Bikes = FILTER(Sales; RELATED(Category[Category]) = "Bikes")
RETURN
COUNTROWS(Bikes)
En este ejemplo partimos de una tabla de ventas, <em>Sales</em>, y una tabla conteniendo las posibles categorías a las que pertenecen los productos que se venden, <em>Category</em>, y deseamos saber cuántas ventas han sido de productos de la categoría <em>Bikes</em>.
Comenzamos extrayendo el subconjunto de la tabla <em>Sales</em> conteniendo las ventas de productos cuya categoría es la buscada, para lo que filtramos la tabla con <a href="/dax/function/filter">FILTER </a>especificando como filtro que la categoría sea <em>Bikes</em>. Al encontrarse esta información (la categoría de cada producto) en una tabla de dimensiones, se necesario usar la función <a href="/dax/function/related">RELATED </a>para acceder a ella.
Por último, devolvemos el recuento de las filas de esta tabla usando la función <a href="/dax/function/countrows">COUNTROWS</a>.
', '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: 88)
__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_bd990293b89f3b78c69fe0ee2f7828b5->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-with-summary.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', '5b4c599e-a800-470c-b4d2-aa320f12a350') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Se describen a continuación varios ejemplos en los que se utilizan variables dentro de expresiones DAX:
Definición de una medida concatenando textos y números
Sales txt =
VAR TotalSales = SUM(Sales[SalesAmount])
VAR Text1 = "Este mes hemos vendido "
VAR Text2 = "Este mes no hemos vendido nada"
RETURN
IF(
TotalSales > 0; -- IF
CONCATENATE(Text1; TotalSales); -- THEN
Text2 -- ELSE
)
En este ejemplo se define una primera variable, <em>TotalSales</em>, conteniendo la suma (contextualizada) de la columna <em>SalesAmount</em> de la tabla <em>Sales</em>, columna que contiene los importes de cada venta. A continuación se definen dos variables conteniendo textos que serán usadas en la salida de la medida.
El valor devuelto es el resultado de un <a href="/dax/function/if">IF</a>: Si las ventas (recordemos nuevamente, contextualizadas) son mayores que cero, se devuelve un mensaje indicando las ventas: "<em>Este mes hemos vendido XXXX</em>". En caso contrario, se devuelve directamente la cadena de texto <em>Text2</em>: "<em>Este mes no hemos vendido nada</em>". A pesar de los textos usados, la medida así definida no es capaz de distinguir si el contexto ha reducido las fechas a un mes o no.
Para la concatenación de los textos se ha usado la función <a href="/dax/function/concatenate">CONCATENATE</a>.
Medida con SWITCH
Greetings =
VAR CurrentTime = HOUR(NOW())
VAR Period =
SWITCH(
TRUE();
CurrentTime < 12; "morning";
CurrentTime < 17; "afternoon";
"evening"
)
RETURN "Good" & " " & Period
Se desea devolver en esta medida un mensaje de buenos días, tardes o noches en función de la hora de que se trate. Para ello extraemos hora con la función <a href="/dax/function/hour">HOUR </a>a partir de la fecha y hora actual que devuelve la función <a href="/dax/function/now">NOW</a>.
A continuación, asignamos a la variable <em>Period</em> una cadena de texto en función de la hora calculada: Si la hora es anterior a las 12 del mediodía le asignamos el texto "<em>morning</em>", si es anterior a las 5 de la tarde le asignamos el texto "<em>afternoon</em>" y, si no se cumple ninguna de estas dos condiciones, le asignamos el texto por defecto "<em>evening</em>".
Por último, devolvemos la concatenación de la palabra "<em>Good</em>" y el contenido de la variable <em>Period</em>, resultando "<em>Good morning</em>", "<em>Good afternoon</em>" o "<em>Good evening</em>".
Creación de una columna calculada
State & Country =
VAR State = Geography[StateProvinceName]
VAR Country = Geography[Country]
RETURN State & ", " & Country
En este ejemplo estamos añadiendo a la tabla <em>Geography </em>un campo al que denominamos <em>State & Country</em> conteniendo la concatenación del estado y del país. Para ello extraemos ambos campos y los almacenamos en sendas variables, y devolvemos la concatenación:
Medida que devuelve el número de elementos de una tabla filtrada
Bikes sales =
VAR Bikes = FILTER(Sales; RELATED(Category[Category]) = "Bikes")
RETURN
COUNTROWS(Bikes)
En este ejemplo partimos de una tabla de ventas, <em>Sales</em>, y una tabla conteniendo las posibles categorías a las que pertenecen los productos que se venden, <em>Category</em>, y deseamos saber cuántas ventas han sido de productos de la categoría <em>Bikes</em>.
Comenzamos extrayendo el subconjunto de la tabla <em>Sales</em> conteniendo las ventas de productos cuya categoría es la buscada, para lo que filtramos la tabla con <a href="/dax/function/filter">FILTER </a>especificando como filtro que la categoría sea <em>Bikes</em>. Al encontrarse esta información (la categoría de cada producto) en una tabla de dimensiones, se necesario usar la función <a href="/dax/function/related">RELATED </a>para acceder a ella.
Por último, devolvemos el recuento de las filas de esta tabla usando la función <a href="/dax/function/countrows">COUNTROWS</a>.
', '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: 88)
__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_bd990293b89f3b78c69fe0ee2f7828b5->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-with-summary.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', '5b4c599e-a800-470c-b4d2-aa320f12a350') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Se describen a continuación varios ejemplos en los que se utilizan variables dentro de expresiones DAX:
Definición de una medida concatenando textos y números
Sales txt =
VAR TotalSales = SUM(Sales[SalesAmount])
VAR Text1 = "Este mes hemos vendido "
VAR Text2 = "Este mes no hemos vendido nada"
RETURN
IF(
TotalSales > 0; -- IF
CONCATENATE(Text1; TotalSales); -- THEN
Text2 -- ELSE
)
En este ejemplo se define una primera variable, <em>TotalSales</em>, conteniendo la suma (contextualizada) de la columna <em>SalesAmount</em> de la tabla <em>Sales</em>, columna que contiene los importes de cada venta. A continuación se definen dos variables conteniendo textos que serán usadas en la salida de la medida.
El valor devuelto es el resultado de un <a href="/dax/function/if">IF</a>: Si las ventas (recordemos nuevamente, contextualizadas) son mayores que cero, se devuelve un mensaje indicando las ventas: "<em>Este mes hemos vendido XXXX</em>". En caso contrario, se devuelve directamente la cadena de texto <em>Text2</em>: "<em>Este mes no hemos vendido nada</em>". A pesar de los textos usados, la medida así definida no es capaz de distinguir si el contexto ha reducido las fechas a un mes o no.
Para la concatenación de los textos se ha usado la función <a href="/dax/function/concatenate">CONCATENATE</a>.
Medida con SWITCH
Greetings =
VAR CurrentTime = HOUR(NOW())
VAR Period =
SWITCH(
TRUE();
CurrentTime < 12; "morning";
CurrentTime < 17; "afternoon";
"evening"
)
RETURN "Good" & " " & Period
Se desea devolver en esta medida un mensaje de buenos días, tardes o noches en función de la hora de que se trate. Para ello extraemos hora con la función <a href="/dax/function/hour">HOUR </a>a partir de la fecha y hora actual que devuelve la función <a href="/dax/function/now">NOW</a>.
A continuación, asignamos a la variable <em>Period</em> una cadena de texto en función de la hora calculada: Si la hora es anterior a las 12 del mediodía le asignamos el texto "<em>morning</em>", si es anterior a las 5 de la tarde le asignamos el texto "<em>afternoon</em>" y, si no se cumple ninguna de estas dos condiciones, le asignamos el texto por defecto "<em>evening</em>".
Por último, devolvemos la concatenación de la palabra "<em>Good</em>" y el contenido de la variable <em>Period</em>, resultando "<em>Good morning</em>", "<em>Good afternoon</em>" o "<em>Good evening</em>".
Creación de una columna calculada
State & Country =
VAR State = Geography[StateProvinceName]
VAR Country = Geography[Country]
RETURN State & ", " & Country
En este ejemplo estamos añadiendo a la tabla <em>Geography </em>un campo al que denominamos <em>State & Country</em> conteniendo la concatenación del estado y del país. Para ello extraemos ambos campos y los almacenamos en sendas variables, y devolvemos la concatenación:
Medida que devuelve el número de elementos de una tabla filtrada
Bikes sales =
VAR Bikes = FILTER(Sales; RELATED(Category[Category]) = "Bikes")
RETURN
COUNTROWS(Bikes)
En este ejemplo partimos de una tabla de ventas, <em>Sales</em>, y una tabla conteniendo las posibles categorías a las que pertenecen los productos que se venden, <em>Category</em>, y deseamos saber cuántas ventas han sido de productos de la categoría <em>Bikes</em>.
Comenzamos extrayendo el subconjunto de la tabla <em>Sales</em> conteniendo las ventas de productos cuya categoría es la buscada, para lo que filtramos la tabla con <a href="/dax/function/filter">FILTER </a>especificando como filtro que la categoría sea <em>Bikes</em>. Al encontrarse esta información (la categoría de cada producto) en una tabla de dimensiones, se necesario usar la función <a href="/dax/function/related">RELATED </a>para acceder a ella.
Por último, devolvemos el recuento de las filas de esta tabla usando la función <a href="/dax/function/countrows">COUNTROWS</a>.
', '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: 88)
__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_bd990293b89f3b78c69fe0ee2f7828b5->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-with-summary.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)