Uso de matrizes em um script para aprimorar uma história

Objective

After completing this lesson, you will be able to use matrizes para fazer loop no conjunto de resultados.

Iteração de quantidade de resultados

Visualização de um conjunto de resultados

Antes de usar o conjunto de resultados no script, devemos garantir a compreensão dos elementos do conjunto de resultados.

  • O cabeçalho da dimensão contém nomes de dimensão.
  • Em Cabeçalho da coluna e Cabeçalho da linha, você encontra membros que normalmente formam uma árvore. A combinação de todos os membros em um eixo é chamada de tupla de eixo.
  • No ponto de cruzamento de uma tupla do eixo da linha e da coluna, você encontra uma célula de dados na área Dados.

Você pode combinar as duas tuplas de linhas e colunas em uma tupla maior com o mesmo efeito: selecione uma única célula de dados. Uma seleção de "tupla grande" como esta também sobrevive a algumas modificações, por exemplo, se uma dimensão for movida de linhas para colunas ou se os eixos forem trocados.

Uma abordagem de "tupla única" é usada no design da história para selecionar células de dados.

Uma tabela dividida em quatro, que corresponde à lista acima. Superior esquerdo: cabeçalho da dimensão (roxo). Superior direito: cabeçalho da coluna (laranja) embaixo à esquerda: cabeçalho da linha (verde). Inferior direito: dados (amarelo).

Referência de uma única célula de dados

Você pode referenciar uma única célula de dados com a função getData({selection}) de uma fonte de dados. Para especificar a célula, você transfere uma seleção para a função. A seleção é escrita no formato JSON comum.

Para cada célula, você pode obter um dos seguintes valores:

  • Valor formatado, por exemplo, 10,803,914,00
  • Valor bruto, por exemplo, 10803914
Referência de uma única célula de dados. Exemplo destacado em vermelho na tabela com a seleção destacada em vermelho abaixo dela.

Leitura de um conjunto de seleções

Se você precisar trabalhar com mais de uma única célula de dados, poderá trabalhar com seleções. Por exemplo, você pode ler um conjunto de seleções em uma matriz e, em seguida, para gerar a visualização desejada, fazer loop sobre a matriz.

Lendo um conjunto de seleções. Tabela com exemplo destacado com detalhes mostrados abaixo.

Leitura de um valor de célula de uma seleção

Passo 1: Leia as seleções desejadas em uma matriz.

Passo 2: Loop sobre a matriz e use uma função. Por exemplo, use a função getData({selection}) para visualizar/reagir aos valores de dados.

O código do bloco de código acima. Com Seleções (amarelo) e célula (verde) destacadas. Os resultados são exibidos na parte inferior da imagem.

Aqui está o código usado no exemplo acima:

Code Snippet
1234567891011
var selections = Table_1.getDataSource().getDataSelections({ [Alias.MeasureDimension]:"00O2SOEHXWHF3AU4LBEW8WZSX", "0D_NW_BP__0D_NW_CNTRY":"US" }); console.log(selections); for (var x=0; x<selections.length; x++ ){ var cell = Table_1.getDataSource().getData(selections[x]); console.log(cell.formattedValue); }

Leitura de um membro de dimensão de uma seleção

É possível que só trabalhar com os valores não seja suficiente porque seus usuários querem saber o elemento ao qual os valores pertencem.

Você pode fazer isso com a função getResultMember(dimension, {selection}), como mostrado na figura a seguir.

O código do bloco de código abaixo. Com Seleções (amarelo) e célula (verde), ano (azul) e país (azul) destacados. Os resultados são exibidos na parte inferior da imagem.

Aqui está o código usado no exemplo acima:

Code Snippet
123456789101112
var selections = Table_1.getDataSource().getDataSelections({ [Alias.MeasureDimension]:"00O2SOEHXWHF3AU4LBEW8WZSX", "0D_NW_BP__0D_NW_CNTRY":"US" }); console.log(selections); for (var x=0; x<selections.length; x++ ){ var cell = Table_1.getDataSource().getData(selections[x]); var year = Table_1.getDataSource().getResultMember("0CALYEAR", selections[x]); var country = Table_1.getDataSource().getResultMember("0D_NW_BP__0D_NW_CNTRY", selections[x]); console.log(country.description + " / " + year.description + " / " + cell.formattedValue);}

Leitura do conjunto de resultados completo

Como uma alternativa ao que é mostrado até agora, você pode ler o todo (ou partes) do conjunto de resultados em uma matriz de uma só vez. Para cada célula, você obtém uma lista completa de propriedades que pode referenciar na continuação do processamento de script.

Por exemplo:

Code Snippet
123
var resultset = Table_1.getDataSource().getResultSet(); console.log(resultset);
Lendo o conjunto de resultados completo. A seleção na tabela é destacada com os detalhes exibidos na parte inferior da imagem.

Para ler o valor no exemplo acima, você usaria:

Code Snippet
123
console.log(resultset[0][Alias.MeasureDimension].formattedValue);

A sintaxe para o getResultSet oferece três parâmetros opcionais. Se você não indicar nenhum desses parâmetros, recupera todo o conjunto de resultados disponível.

Code Snippet
1
Table_1.getDataSource().getResultSet(selection?, offset?, limit?: integer)

  • selection Pode ser usado para restringir o conjunto de resultados retornados, por exemplo, a uma medida ou membro da dimensão.
  • offset Ignora as células de deslocamento antes de começar a retornar as células.
  • limit Restringe o número de células retornadas.

Alias de scripting

O ambiente de scripting oferece um objeto Alias que pode ser utilizado para referenciar diferentes objetos padrão. Os objetos disponíveis são os seguintes:

  • Alias.DefaultTheme
  • Alias.FlatHierarchy
  • Alias.MeasureDimension
  • Alias.NullMember
  • Alias.TotalsMember

Para referenciar o membro de resultado no script, você pode usar o alias Alias.TotalsMember.

Exemplo de código usando Alias.TotalsMember.

Para referenciar a dimensão de medida no script, você pode usar o alias Alias.MeasureDimension.

Exemplo de código usando Alias.MeasureDimension.

Loop do conjunto de resultados

Cenário empresarial: sua equipe faz uma solicitação para adicionar um quadro de líderes à história. Eles querem mostrar os três principais países visualmente e os países restantes em uma tabela abaixo da imagem. Eles querem que todos os dados visualizados sejam atualizados automaticamente assim que os dados forem modificados, por exemplo, enquanto um usuário seleciona um ano.

A história que você usará já foi criada com widgets de visualização e alguns dos scripts necessários, pois neste exercício você só escreverá uma função de script para fazer loop sobre o conjunto de resultados e atualizar todos os campos de texto adequadamente. Esta função é necessária sempre que os valores precisarem ser atualizados.

Este vídeo orientará você sobre a história final e a criação de script necessárias.

Simular as etapas

O exercício prático abaixo simula estar no modo avançado no SAP Analytics Cloud e orienta você pelo uso de matrizes para fazer o loop do conjunto de resultados, como mostrado no vídeo de demonstração.

Fluxo de tarefa: neste exercício prático, você irá:

  • Adicione scripts à página e à tabela para que os widgets de texto sejam atualizados quando a história for aberta ou quando os resultados da tabela forem modificados
  • Desenvolva o script para visualizar o quadro de líderes
  • Ampliar a função de script para visualizar a visão tabelar
  • Testar sua história no modo de visualização