N Valores antes e após a seleção

Uma das questões que surgiu na comunidade esta semana estava relacionada com a hipótese de centrar num gráfico o valor escolhido e de acordo com os restantes filtros apenas fossem apresentadas 3 barras a direita e 3 barras à esquerda.

Se os valores fossem sempre idênticos isto poderia realizar-se simplesmente com um filtro básico, no entanto o que se pretendia era que de acordo com o ranking do valor escolhido na semana escolhida as restantes barras fossem as correspondentes.

Vamos então mostrar um pequeno exemplo e qual o resultado pretendido:

Na tabela acima como podem verificar temos 10 utilizadores distribuídos por duas semanas com diferentes valores se eu colocar as duas semanas lado a lado e ordenar pelo valor teremos a seguinte ordenação de dados:

Se pegarmos por exemplo no User F verificamos que na semana 1 o seu valor é o 4º lugar e na semana 2 é o 6º lugar, assim o que pretendemos mostrar no nosso gráfico serão as áreas delimitadas:

De modo a efetuarmos os cálculos necessários iremos precisar de identificar qual o ranking do utilizador na semana selecionada e depois retornar esse valor e filtrar os restantes valores por esse ranking.

Vamos então criar as seguintes medidas:

Ranking = RANKX(ALLSELECTED('Dados');CALCULATE(SUM('Dados'[Value])))

Filtering =
VAR temptable =
    //Temporary table to return the user name and corresponding Ranking number
    SUMMARIZE (
        ALLSELECTED ( 'Dados' );
        'Dados'[User Name];
        "@RankingValue"; [Ranking]
    )
VAR selected_user_ranking =
    // Return the ranking of the selected user based on previous table
    MAXX (
        FILTER (
            temptable;
            'Dados'[User Name] = SELECTEDVALUE ( Users_Slicer[User Name] )
        );
        [@RankingValue]
    )
RETURN
    // Check if the Slicer has more than one value selected and return 1 for all or for the values above/below ranking
    IF (
        DISTINCTCOUNT ( Users_Slicer[User Name] ) <> 1;
        1;
        SWITCH (
            TRUE ();
            selected_user_ranking <= [Ranking] + 3
                && selected_user_ranking >= [Ranking] - 3; 1
        )
    )



CondittionalFormatting = IF(SELECTEDVALUE(Users_Slicer[User Name]) = SELECTEDVALUE('Dados'[User Name]);"Green";"Blue")

Também necessitamos de criar uma tabela desconexa com os nomes dos utilizadores (A, B, …, J) é a tabela que referenciamos com o nome “User_Slicers” nas medidas atrás

As medidas acima permitem-nos então criar as nossas visualizações sendo que a medida Filtering deverá ser incluída nos filtros dos gráficos e selecionar a opção Is not Blank.

Resultado final encontra-se abaixo:

Podemos agora fazer diversas variações do mesmo exemplo no entanto convêm ter atenção ao contexto da medida de filtro pois a inclusão / redução de valores nas visualizações poderá dar dados erróneos.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google photo

Está a comentar usando a sua conta Google Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s

%d bloggers like this: