Instâncias de dados locais para várias visualizações

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 5 min. de leitura
  • Um recurso de dados especial da API de visualização de dados está disponível para buscar dados para várias visualizações de dados simultaneamente. Este recurso de dados reduz o número de chamadas de API e, portanto, pode acelerar a busca de dados.

    Quando usar

    Você pode usar o recurso de dados "API de visualização de dados para várias visualizações de dados" nos seguintes cenários:
    • Várias visualizações de dados do mesmo tipo têm a mesma fonte de dados. Por exemplo, você tem cinco visualizações em que o tipo de visualização é Pontuação única e a fonte de dados é a tabela Incidente [incident] com o filtro active=true. Se você tiver vários grupos de indicadores com o mesmo tipo e fonte de dados, poderá criar uma instância do mesmo recurso de dados de visualização múltipla para cada grupo.
    • Uma visualização de dados tem vários recursos de dados que fazem referência à mesma fonte de dados. Por exemplo, você tem uma visualização de linha com um recurso de dados do indicador "Número de incidentes em aberto" e outro recurso de dados do indicador "Idade média de incidentes em aberto". Ambos os indicadores usam a fonte de dados Incident.Open. Para maior eficiência, você pode converter esta visualização para usar apenas um recurso de dados.

    Quando não usar

    • Há apenas uma visualização na página Construtor de IU.
    • As visualizações de dados na página provavelmente levarão muito tempo para carregar dados. Nesse caso, é melhor manter o carregamento de dados dividido entre recursos de dados separados.

    Configurar um recurso de dados de visualização múltipla

    Se o seu caso de uso atender aos critérios para um recurso de dados de visualização múltipla, você poderá seguir este procedimento.

    Antes de Iniciar

    Revise o caso de uso de um único recurso de dados para várias visualizações em Instâncias de dados locais para várias visualizações.

    Função necessária: ui_builder_admin, administrador

    Por Que e Quando Desempenhar Esta Tarefa

    Importante:
    Este recurso de dados mescla várias chamadas em uma única. A chamada única é executada como uma transação única em um único thread. Portanto, use este recurso de dados com cuidado extra, especialmente ao lidar com uma grande quantidade de dados, pois em alguns casos isso pode levar a tempos limites de transação. Dependendo da quantidade de dados, da configuração da página e da experiência do usuário desejada, você pode obter resultados melhores usando recursos de dados separados.

    Procedimento

    1. Navegue até o painel técnico ou a página do UIB com as visualizações de dados.
    2. Verifique se as visualizações de dados na página atendem aos critérios em Quando usar.
      Por exemplo, você tem várias visualizações de mostrador na fonte de dados da tabela Incidente e a quantidade de dados buscada não é muito grande.
    3. Na gaveta Dados e scripts, em Recursos de dados, selecione + Adicionar recurso de dados.

      Adicione o link do recurso de dados quando ainda não houver recursos de dados.
    4. Na janela Selecionar um recurso de dados, pesquise por Visualização de dados.
      Você obtém uma seleção dos recursos de dados que pode usar.
      Seleção de recursos de dados da API de visualização de dados, incluindo o para várias visualizações de dados.
    5. Selecione "API de visualização de dados para várias visualizações de dados".
    6. Defina o tipo como Configurações de dados.
    7. No campo de solicitação, preencha o JSON.
      Consulte o Exemplo no final deste procedimento.
    8. Em cada visualização de dados em que você deseja usar este recurso de dados, execute as seguintes ações:
      1. Selecione a visualização de dados.
      2. Abra o painel Configuração.
      3. Ative Definir dados manualmente.
      4. Use a vinculação de dados para vincular um script ao campo Dados.

    Recurso de dados para três visualizações de pontuação única com a mesma fonte de dados

    Neste exemplo, iniciamos com uma página UIB que contém três componentes de visualização de dados. Todos esses componentes são do tipo de visualização de pontuação única e todos usam a mesma fonte de dados.

    Siga o procedimento geral na Etapa 6. Agora você tem uma API de visualização de dados para várias visualizações de dados na página Painéis.

    Em seguida, você grava o JSON para a solicitação, da seguinte forma:
    [
        {
            "details": {
                "visualizationId": "vis_1",
                "followFilter": true
            },
            "configurations": {
                "dataConfigurations": [
                    {
                        "sourceType": "table",
                        "dataCategory": "simple",
                        "order": 0,
                        "tableOrViewName": "incident",
                        "aggregateFunction": "COUNT"
                    }
                ]
            }
        },
        {
            "details": {
                "visualizationId": "vis_2",
                "followFilter": true
            },
            "configurations": {
                "dataConfigurations": [
                    {
                        "sourceType": "table",
                        "dataCategory": "simple",
                        "order": 0,
                        "tableOrViewName": "incident",
                        "aggregateFunction": "AVG",
                        "aggregateField": "business_duration"
                    }
                ]
            }
        },
        {
            "details": {
                "visualizationId": "vis_3",
                "followFilter": true
            },
            "configurations": {
                "dataConfigurations": [
                    {
                        "sourceType": "table",
                        "dataCategory": "simple",
                        "order": 0,
                        "tableOrViewName": "incident",
                        "aggregateFunction": "AVG",
                        "aggregateField": "priority"
                    }
                ]
            }
        }
    ]

    A solicitação é uma matriz de objetos, um para cada visualização de dados. Cada visualização tem uma propriedade details com um valor arbitrário para visualizationId e um booliano followFilter definindo se a visualização segue componentes de filtro na página. Nesse caso, todas as três visualizações seguem os filtros.

    Cada visualização também tem uma propriedade configurations, contendo apenas uma matriz dataConfigurations. Como todas as visualizações são do mesmo tipo, Pontuação única, e esse tipo de visualização mostra apenas um valor simples, todas as três propriedades dataCategory são "simples". Da mesma forma, todas as visualizações usam a mesma fonte de dados. Como a fonte de dados é a tabela Incidente [incidente], todas as três visualizações têm um sourceType de "tabela" e um tableOrViewName de "incidente". O único lugar onde as visualizações podem variar é nos agregados que elas usam. Aqui você vê que o primeiro usa uma agregação COUNT, o segundo usa um agregado AVG no campo business_duration e o terceiro usa um MÉDIA do campo de prioridade.

    A configuração final do recurso de dados é semelhante a esta:
    Conclua a configuração do agente de dados do painel.
    Por fim, para cada visualização de dados, você vincula o script a seguir ao campo de dados. Você usa o valor arbitrário visualizationId que forneceu a cada visualização como o valor vizId no script para essa visualização.
    function evaluateProperty({api, helpers}) {
      const data = api.data.data_visualization_api_for_multiple_data_visualizations_1.output;
    ​
      if (!data) {
        return [];
      }
    ​
      const vizId = 'vis_1';
    ​
      const dataForViz = data.result.find(d => d.details.visualizationId === vizId);
    ​
        return dataForViz.dataResponses;
    }

    Solicitar JSON para um indicador

    A solicitação de uma visualização em um indicador é diferente do exemplo anterior, que era para uma tabela. Aqui está o JSON para uma visualização de série temporal, que mostra uma tendência ao longo do tempo, para o indicador Número de incidentes em aberto, agrupado pelo detalhamento de Prioridade:
    [
        {
            "details": {
                "visualizationId": "vis1",
                "followFilter": true
            },
            "configurations": {
                "dataConfigurations": [
                    {
                        "sortBy": "choice",
                        "sortOrder": "asc",
                        "sourceType": "indicator",
                        "dataCategory": "trend",
                        "order": 0,
                        "splitView": false,
                        "numberOfGroups": 2,
                        "uuid": {
                            "indicator": "fb007202d7130100b96d45a3ce6103b4",
                            "breakdowns": []
                        },
                        "trendBy": "anything",
                        "trendInterval": "date",
                        "groupBy": [
                            "0df47e02d7130100b96d45a3ce610399"
                        ],
                        "removeMissingIntervalData": false
                    }
                ]
            }
        }
    ]

    A primeira e mais obvia diferença é que sourceType é "indicador" e dataCategory é "tendência". Você também vê que, em vez de uma propriedade tableOrViewName, você tem um objeto uuid com o UUID do indicador Número de incidentes em aberto e uma matriz vazia que pode conter os UUID de detalhamentos para filtrar esse indicador. Como esta visualização oferece suporte a valores de agrupamento, você tem uma matriz groupBy que, neste caso, contém somente o UUID do detalhamento de Prioridade. Ter um agrupamento implica em classificação, e aqui você vê que o sortBy é "escolha", refletindo o tipo de dados do detalhamento de prioridade, e o sortOrder é crescente.