- 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\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: 54)
Drupal\views\Plugin\views\argument\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: 82)
Drupal\views\Plugin\views\argument\ArgumentPluginBase->init(Object, Object, Array) (Line: 33)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2318)
Drupal\views\Plugin\views\display\DisplayPluginBase->preExecute() (Line: 1697)
Drupal\views\ViewExecutable->preExecute(Array) (Line: 1632)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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\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: 54)
Drupal\views\Plugin\views\argument\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: 82)
Drupal\views\Plugin\views\argument\ArgumentPluginBase->init(Object, Object, Array) (Line: 33)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2318)
Drupal\views\Plugin\views\display\DisplayPluginBase->preExecute() (Line: 1697)
Drupal\views\ViewExecutable->preExecute(Array) (Line: 1632)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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\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: 54)
Drupal\views\Plugin\views\argument\ManyToOne->defineOptions() (Line: 228)
Drupal\views\Plugin\views\PluginBase->unpackOptions(Array, Array) (Line: 110)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 82)
Drupal\views\Plugin\views\argument\ArgumentPluginBase->init(Object, Object, Array) (Line: 33)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2318)
Drupal\views\Plugin\views\display\DisplayPluginBase->preExecute() (Line: 1697)
Drupal\views\ViewExecutable->preExecute(Array) (Line: 1632)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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\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: 35)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2318)
Drupal\views\Plugin\views\display\DisplayPluginBase->preExecute() (Line: 1697)
Drupal\views\ViewExecutable->preExecute(Array) (Line: 1632)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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('views') (Line: 1316)
Drupal\views\Plugin\views\query\Sql->query() (Line: 1454)
Drupal\views\Plugin\views\query\Sql->build(Object) (Line: 1326)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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('views_substitutions', Array) (Line: 1418)
Drupal\views\Plugin\views\query\Sql->query() (Line: 1454)
Drupal\views\Plugin\views\query\Sql->build(Object) (Line: 1326)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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('views') (Line: 1316)
Drupal\views\Plugin\views\query\Sql->query(1) (Line: 1455)
Drupal\views\Plugin\views\query\Sql->build(Object) (Line: 1326)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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('views_substitutions', Array) (Line: 1418)
Drupal\views\Plugin\views\query\Sql->query(1) (Line: 1455)
Drupal\views\Plugin\views\query\Sql->build(Object) (Line: 1326)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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\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: 54)
Drupal\views\Plugin\views\argument\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: 82)
Drupal\views\Plugin\views\argument\ArgumentPluginBase->init(Object, Object, Array) (Line: 33)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 1876)
Drupal\views\ViewExecutable->buildTitle() (Line: 338)
Drupal\views\Plugin\views\display\Feed->attachTo(Object, 'page_1', Array) (Line: 1733)
Drupal\views\ViewExecutable->attachDisplays() (Line: 1333)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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\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: 54)
Drupal\views\Plugin\views\argument\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: 82)
Drupal\views\Plugin\views\argument\ArgumentPluginBase->init(Object, Object, Array) (Line: 33)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 1876)
Drupal\views\ViewExecutable->buildTitle() (Line: 338)
Drupal\views\Plugin\views\display\Feed->attachTo(Object, 'page_1', Array) (Line: 1733)
Drupal\views\ViewExecutable->attachDisplays() (Line: 1333)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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\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: 54)
Drupal\views\Plugin\views\argument\ManyToOne->defineOptions() (Line: 228)
Drupal\views\Plugin\views\PluginBase->unpackOptions(Array, Array) (Line: 110)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 82)
Drupal\views\Plugin\views\argument\ArgumentPluginBase->init(Object, Object, Array) (Line: 33)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 1876)
Drupal\views\ViewExecutable->buildTitle() (Line: 338)
Drupal\views\Plugin\views\display\Feed->attachTo(Object, 'page_1', Array) (Line: 1733)
Drupal\views\ViewExecutable->attachDisplays() (Line: 1333)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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\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: 35)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 1876)
Drupal\views\ViewExecutable->buildTitle() (Line: 338)
Drupal\views\Plugin\views\display\Feed->attachTo(Object, 'page_1', Array) (Line: 1733)
Drupal\views\ViewExecutable->attachDisplays() (Line: 1333)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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', 'insert-max_800_px-34184b1a-5cea-43dc-8441-a3ba1559bc3a') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-34184b1a-5cea-43dc-8441-a3ba1559bc3a') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-34184b1a-5cea-43dc-8441-a3ba1559bc3a') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-34184b1a-5cea-43dc-8441-a3ba1559bc3a') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-227db5d4-ed64-4247-82cf-89df09d317c7') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-227db5d4-ed64-4247-82cf-89df09d317c7') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-227db5d4-ed64-4247-82cf-89df09d317c7') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-227db5d4-ed64-4247-82cf-89df09d317c7') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-f2c966f8-dcda-4882-b5af-34dbe46cbbd3') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-f2c966f8-dcda-4882-b5af-34dbe46cbbd3') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-f2c966f8-dcda-4882-b5af-34dbe46cbbd3') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-f2c966f8-dcda-4882-b5af-34dbe46cbbd3') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-91d0be46-804a-4700-8b40-8d32b6ee5611') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-91d0be46-804a-4700-8b40-8d32b6ee5611') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-91d0be46-804a-4700-8b40-8d32b6ee5611') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-91d0be46-804a-4700-8b40-8d32b6ee5611') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-9fddc077-87c3-4e7f-aa94-4eb18f93e8ff') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-9fddc077-87c3-4e7f-aa94-4eb18f93e8ff') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-9fddc077-87c3-4e7f-aa94-4eb18f93e8ff') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-9fddc077-87c3-4e7f-aa94-4eb18f93e8ff') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La tarjeta es de utilidad cuando queremos mostrar una cifra independiente de cualquier otra referencia, lo que frecuentemente resulta más impactante y fácil de interpretar que otras gráficas más sofisticadas. Su panel de campos es extremadamente sencillo, admitiendo un único campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_01.jpg"></a>
Si llevamos a este campo una medida, se calculará y se mostrará en la visualización. Si llevamos un campo (numérico), podremos escoger la función de agregación a aplicar. Por ejemplo, si llevamos el campo <em>Number of Children</em> de nuestro modelo de datos (campo que contiene el número de hijos de nuestros clientes), podemos escoger entre las siguientes funciones de agregación:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_02.jpg"></a>
Si escogemos, por ejemplo, el promedio, la visualización mostrará el número medio de hijos de los clientes involucrados en el contexto actual (todos, por defecto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_03.jpg"></a>
El formato del valor numérico es, por defecto, automático. Así, si el valor de ventas que se está mostrando alcanza la cifra $4.500.000.000, se mostrará 5 mil M €. En todo caso, es posible personalizar este formato en el área de formato de la visualización (<em>Formato > Etiqueta de datos > Mostrar unidades</em>).
Es posible dar formato a la etiqueta que representa la cifra (<em>Formato > Etiqueta de datos</em>): color, formato numérico, familia de fuente... así como mostrar u ocultar el texto que se muestra bajo ésta (y modificar su formato: color, tamaño y familia de la fuente). No se puede, sin embargo, modificar dicho texto (por ejemplo, no podríamos cambiarlo por algo como "Número medio de hijos"). Lo que sí podemos hacer es añadir un texto al valor a mostrar creando una medida calculada como el resultado de la concatenación de ambos valores, el texto que nos interese y el valor numérico involucrado. Esta medida deberá ser cargada en el campo “<em>Campos</em>” de la visualización. Así, si estamos mostrando información de la medida <em>Sales</em>, podemos crear la siguiente medida basada en ella:
Ventas = CONCATENATE("Ventas totales: "; [Sales])
Y arrastrar esta medida hasta el campo “<em>Campos</em>” de la visualización. Desafortunadamente perdemos de esta forma la opción de dar formato al número (pues se trata como texto):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_04.jpg"></a>
Podemos modificar dicho formato si recurrimos a la función <a href="/dax/function/format">FORMAT</a> de DAX, por ejemplo:
Ventas = CONCATENATE("Ventas totales: " & UNICHAR(10); FORMAT([Sales]; "Currency"))
(se ha añadido la función <a href="/dax/function/unichar">UNICHAR</a> para forzar un salto de línea entre el texto y el valor numérico):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/card_05.jpg"></a>
En el ejemplo anterior se ha ocultado la etiqueta de categoría (<em>Formato > Etiqueta de categoría)</em>.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-5b26a0b4-4734-41a5-bcc6-3e3a9d8536e9') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-5b26a0b4-4734-41a5-bcc6-3e3a9d8536e9') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-5b26a0b4-4734-41a5-bcc6-3e3a9d8536e9') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-5b26a0b4-4734-41a5-bcc6-3e3a9d8536e9') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-2acd588b-540c-4d98-bbb3-3f3953cad44d') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-2acd588b-540c-4d98-bbb3-3f3953cad44d') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-2acd588b-540c-4d98-bbb3-3f3953cad44d') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-2acd588b-540c-4d98-bbb3-3f3953cad44d') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-e6431c98-5391-426f-8147-d255f14839af') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-e6431c98-5391-426f-8147-d255f14839af') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-e6431c98-5391-426f-8147-d255f14839af') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-e6431c98-5391-426f-8147-d255f14839af') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-9da6ae6e-120a-421d-a37d-f022ab43ca78') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-9da6ae6e-120a-421d-a37d-f022ab43ca78') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-9da6ae6e-120a-421d-a37d-f022ab43ca78') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-9da6ae6e-120a-421d-a37d-f022ab43ca78') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-94ec66df-2733-492f-822b-76ade4475468') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-94ec66df-2733-492f-822b-76ade4475468') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-94ec66df-2733-492f-822b-76ade4475468') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-94ec66df-2733-492f-822b-76ade4475468') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-76fb27f2-ec1a-4f33-90c1-96dce3848c6d') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-76fb27f2-ec1a-4f33-90c1-96dce3848c6d') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-76fb27f2-ec1a-4f33-90c1-96dce3848c6d') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-76fb27f2-ec1a-4f33-90c1-96dce3848c6d') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>gauge</strong>, <strong>medidor</strong> o <strong>gráfico indicador</strong> es especialmente útil si queremos mostrar un valor comparándolo con otro que se considera valor objetivo. Su panel de campos es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor numérico simple y con un valor objetivo. Adicionalmente podremos limitar el valor mínimo y valor máximo a mostrar en el indicador.
<ul><li>Campo “<em>Valor</em>”: recibirá el valor numérico simple a mostrar. Solo admite uno.</li>
<li>Campo “<em>Valor mínimo</em>”: recibirá el campo que determinará el valor mínimo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Min.</em>”).</li>
<li>Campo “<em>Valor máximo</em>”: recibirá el campo que determinará el valor máximo a mostrar en la visualización. Si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Máx.</em>”).</li>
<li>Campo “<em>Valor de destino</em>”: recibirá el campo que determinará el valor objetivo a mostrar en la visualización por medio de una barra (roja por defecto). Al igual que ocurre con los dos campos anteriores, si se trata de un valor numérico simple, también puede ser introducido en el área de formato de la visualización (“<em>Formato > Eje medidor > Destino</em>”).</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima del indicador.</li>
</ul>Los campos <em>Valor mínimo</em>, <em>Valor máximo</em> y <em>Valor de destino</em> solo pueden introducirse en el panel de configuración o en el de opciones, nunca en ambos al mismo tiempo. Es necesario comentar también que la sección <em>Eje medidor</em> del panel de formato no se muestra hasta que no se lleva algún campo al panel de campos de la visualización.
Llevemos, por ejemplo, la medida <em>Sales</em> (conteniendo la suma de los importes de ventas) al campo <em>Valor</em> de la visualización:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_02.jpg"></a>
Cuando creamos la visualización, el valor máximo toma siempre, por defecto, un valor igual al doble de la cifra mostrada en el medidor. Una vez introduzcamos un valor o una medida en el campo “<em>Valor máximo</em>”, la visualización se adaptará adecuadamente. El valor mínimo, por defecto, es cero.
Ahora podemos llevar campos o medidas de nuestro modelo de datos a los campos adecuados de la visualización para definir el valor objetivo y los valores mínimo y máximo. Por ejemplo, escribamos en <em>Formato > Eje medidor</em> las cifras 2000000 (2 millones) para el valor mínimo, 12000000 (12 millones) para el valor máximo, y 10000000 (10 millones) para el destino:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_03.jpg"></a>
La visualización muestra el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_04.jpg"></a>
Comprobamos que los límites del gráfico son los valores mínimo y máximo que hemos fijado, y que se muestra con una barra roja el objetivo. Si el valor máximo fuese inferior al valor de la métrica, se mostraría todo el indicador de color naranja. Por ejemplo, en la siguiente imagen se ha llevado el valor 5000000 (5 millones) -valor inferior a los 8 millones de ventas- al campo <em>Max.</em> de la sección <em>Formato > Eje medidor</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_06.jpg"></a>
Una limitación de esta visualización es que el color naranja que indica el valor de la métrica, aunque puede personalizarse, no cambia cuando se alcanza el objetivo.
Al mover el cursor por encima de la visualización se muestra la clásica ventana emergente con la información correspondiente, aunque en ésta no se incluye información sobre el objetivo, tan solo sobre la métrica que hayamos llevado al campo <em>Valor</em> (y sobre los campos que hayamos llevado a <em>Información sobre herramientas</em>). En el ejemplo de la siguiente imagen se ha llevado la medida <em>Units</em> (conteniendo el número de unidades vendidas) a dicho campo:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/gauge_05.jpg"></a>
Comentar, por último, que la visualización nos permite escoger -como ya se ha adelantado- el color que representa la métrica siendo mostrada (el naranja de las anteriores imágenes) y el color de la barrita que representa el objetivo (rojo por defecto), ambas opciones personalizables en <em>Formato > Colores de datos</em>. Podemos también mostrar, ocultar y dar formato a la cifra correspondiente a la métrica que se muestra en el centro (<em>Formato > Valor de globo</em>), así como mostrar u ocultar las cifras que se muestran en los extremos de la visualización con los valores mínimo y máximo a representar (<em>Formato > Etiquetas de datos</em>).
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-8236df16-2140-4995-8e8a-9d3e3a876bca') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-8236df16-2140-4995-8e8a-9d3e3a876bca') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-8236df16-2140-4995-8e8a-9d3e3a876bca') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-8236df16-2140-4995-8e8a-9d3e3a876bca') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-e92f3fa3-a7a1-47fc-b97b-59aa27adfacd') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-e92f3fa3-a7a1-47fc-b97b-59aa27adfacd') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-e92f3fa3-a7a1-47fc-b97b-59aa27adfacd') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-e92f3fa3-a7a1-47fc-b97b-59aa27adfacd') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-8fba9dbe-142d-4887-981c-92285d4d8608') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-8fba9dbe-142d-4887-981c-92285d4d8608') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-8fba9dbe-142d-4887-981c-92285d4d8608') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-8fba9dbe-142d-4887-981c-92285d4d8608') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-8eb6a0d2-6329-4690-823f-d15d1bc33961') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-8eb6a0d2-6329-4690-823f-d15d1bc33961') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-8eb6a0d2-6329-4690-823f-d15d1bc33961') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-8eb6a0d2-6329-4690-823f-d15d1bc33961') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-5b7cd1a7-850a-4e31-a720-7dda878bbb3d') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-5b7cd1a7-850a-4e31-a720-7dda878bbb3d') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-5b7cd1a7-850a-4e31-a720-7dda878bbb3d') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-5b7cd1a7-850a-4e31-a720-7dda878bbb3d') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-43174d56-cd04-45a6-8c4a-58ff2190abd7') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-43174d56-cd04-45a6-8c4a-58ff2190abd7') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-43174d56-cd04-45a6-8c4a-58ff2190abd7') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-43174d56-cd04-45a6-8c4a-58ff2190abd7') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-c6b2d0cb-38cc-4796-a681-cf8b561c943e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-c6b2d0cb-38cc-4796-a681-cf8b561c943e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-c6b2d0cb-38cc-4796-a681-cf8b561c943e') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-c6b2d0cb-38cc-4796-a681-cf8b561c943e') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-9dc6b7a7-3879-4eb9-8c36-a8e2b1e43d12') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-9dc6b7a7-3879-4eb9-8c36-a8e2b1e43d12') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-9dc6b7a7-3879-4eb9-8c36-a8e2b1e43d12') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'insert-max_800_px-9dc6b7a7-3879-4eb9-8c36-a8e2b1e43d12') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>Waterfall chart</strong> o <strong>Gráfico de cascada</strong> es especialmente útil cuando queremos mostrar el efecto acumulativo de una serie de valores positivos y negativos, por ejemplo, flujos de caja, ventas periódicas, etc. El panel de configuración es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_01.jpg"></a>
En este tipo de visualizaciones trabajamos con un valor base a representar como aumentos o disminuciones en el eje vertical y un criterio (frecuentemente temporal, pero no tiene por qué ser así) que se mostrará en el eje horizontal.
<ul><li>Campo “<em>Categoría</em>”: recibirá el criterio temporal (por ejemplo, “años”) o del tipo que sea, que se mostrará en el eje X. Si hay más de uno o si se trata de una jerarquía se mostrará la opción “<em>Explorar en profundidad</em>” que, activada, nos permite recorrer esa estructura jerárquica.</li>
<li>Campo "<em>Desglose</em>": recibirá un criterio adicional por el que se dividirá cada una de las barras creadas.</li>
<li>Campo “<em>Eje Y</em>”: recibirá el valor base conteniendo los incrementos o disminuciones a mostrar verticalmente. Solo admite uno.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de una barra.</li>
</ul>Tras creas una instancia de esta visualización, llevemos al campo <em>Eje Y</em> una medida que calcule el incremento de ventas de un año con respecto al año anterior, por ejemplo:
Sales YoY =
DIVIDE(
[Sales] - [Sales LY];
[Sales LY]
)
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_02.jpg"></a>
Inicialmente se muestra la métrica en análisis por medio de una única barra vertical. Si llevamos al campo <em>Categoría</em> de la visualización el campo <em>Date</em> de nuestro modelo de datos, la barra anterior se desglosa según el criterio en cuestión (por años en nuestro caso) mostrando una barra para cada año, pero no representando éstas las cifras de ventas por año, sino la variación de un año con respecto al anterior:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_03.jpg"></a>
Si visualizamos en una tabla las cifras de ventas por año:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_04.jpg"></a>
...comprobamos que el primer año no está representado en la gráfica de cascada (al no existir una cifra anterior con respecto a la que calcular el incremento o decremento), y que, por ejemplo, el año 2016 representó una cierta caída con respecto al año 2015, caída que se muestra en el gráfico de cascada con la primera columna de color rojo.
Si movemos el cursor encima de las barras, se muestra la ventana emergente clásica con información sobre los datos siendo representados, aunque también podemos mostrar las etiquetas correspondientes en <em>Formato > Etiquetas de datos</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_05.jpg"></a>
En este ejemplo, al haber llevado al campo <em>Categoría</em> una jerarquía, la visualización nos muestra en la esquina superior derecha los típicos controles que nos permiten navegar por ésta.
El campo <em>Desglose</em> de la visualización nos permite visualizar los valores que toma la métrica en análisis para cada valor del campo que hayamos llevado al eje X desglosando el incremento o decremento de dicho valor según la aportación de cada valor del campo que llevemos a <em>Desglose</em>. Veámoslo con un ejemplo:
Si quisiéramos, por ejemplo visualizar cómo las ventas de cada país aportan al incremento o decremento final de cada año, deberíamos poder llevar el campo <em>Country</em> de nuestro modelo de datos al campo <em>Desglose</em>. En este ejemplo particular con el que estamos trabajando, sin embargo, Power BI nos devuelve un error: "<em>La función 'SAMEPERIODLASTYEAR' espera una selección contigua cuando la columna de fecha viene de una tabla del lado 1 de una relación bidireccional</em>", de forma que, para probar este campo <em>Desglose</em>, vamos a crear una nueva visualización semejante a la anterior sustituyendo la medida <em>Sales YoY</em> por otra medida que simplemente sume las ventas. Y, por supuesto, vamos a llevar el campo <em>Country</em> al campo <em>Desglose</em>, pues éste era el objetivo (aunque con una métrica diferente):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_06.jpg"></a>
Vemos columnas (con color naranja) que representan la métrica para los años y, entre ellas, el desglose del incremento o decremento por país, mostrándose en primer lugar los que más aportan a la cifra final (es por esto que entre 2015 y 2016 el primer país mostrado es Portugal, mientras que entre 2016 y 2017 es Italia, por ejemplo).
Y también aquí, por supuesto, se muestra la ventana emergente con la información asociada, en este caso mostrando los valores iniciales y finales (para cada país, en nuestro ejemplo) y el cambio correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_07.jpg"></a>
La visualización, además, nos permite configurar los ejes X e Y, la leyenda y los colores a usar:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/waterfall_chart_08.jpg"></a>
Buena visualización, aunque limitada por esos errores que muestra en función del tipo de métrica que se use.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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)