Trabalhar com relatórios do Lifecycle Query Engine

Editando consultas para criar relatórios avançados

Sobre esta Tarefa

O fluxo de trabalho básico para criar relatórios avançados consiste em criar um relatório simples usando o assistente Report Builder e, se necessário, modificar a consulta SQL ou SPARQL gerada. Quando você modifica a consulta gerada e, em seguida, faz alterações usando a interface guiada Report Builder , a consulta gerada é automaticamente atualizada e se torna somente leitura. A consulta gerada é exibida no editor de texto na seção Advanced.
Para obter informações adicionais, consulte Criação avançada de relatórios no Jazz® Reporting Service
Observação: este artigo foi escrito originalmente para o Jazz Reporting ServiceJazz Reporting Service) 5.0.2, mas também se aplica à versão atual.

Convertendo manualmente SPARQL para SQL

Procedimento

SQL é uma linguagem padronizada para definir e manipular dados em um banco de dados relacional.

De acordo com o modelo relacional de dados:

  • O banco de dados é tratado como um conjunto de Tabelas.
  • Os relacionamentos são representados por valores em tabelas
  • Os dados são recuperados especificando uma tabela de resultados que pode ser derivada de uma ou mais tabelas base

Todas as instruções SQL executáveis devem ser preparadas antes que possam ser executadas O resultado da preparação é o executável. O método de preparação de uma instrução SQL e a persistência de sua forma operacional distinguem o SQL estático do SQL dinâmico Consulte o SQL do Db2 para obter mais detalhes.

Para converter SPARQL para SQL, a abordagem manual é a mais difícil mas geralmente a mais rápida. A seguir estão exemplos para converter SQARQL em SQL Db2 :

  1. SPARQL SUM de todos os pontos de história do usuário quando a história do usuário é aceita.
    SUM(IF($User Story:Story Points (numeric)$ && $User Story:Status$ = 'Accepted',$User Story:Story Points (numeric)$,0))

    Conversão SQL do Db2/Oracle do SPARQL

    
             SUM(
                 CASE 
                     WHEN 
                     $User Story:Story Points (numeric)$ AND $User Story:Status$ = 'Accepted'  
                     THEN $User Story:Story Points (numeric)$  
                 ELSE 0 END)
    
  2. Soma SPARQL de todas as RFEs destinadas exclusivamente ao uso interno criadas nos últimos 31 dias com o status “Novo” ou “Enviado”.
    
                  SUM(IF((
                        (lqe_fn:dateDiff('day', $RFE for internal use only:Creation Date$, NOW()) <31  )
                         &&
                        ($RFE for internal use only:Status$="New" || $RFE for internal use only:Status$="Submitted")
                        ),1,0))
    

    Conversão SQL do Db2 do SPARQL

    
             SUM(
                 CASE
                     WHEN
                     (DAYS(CURRENT TIMESTAMP) - DAYS($RFE for internal use only:Creation Date$)) < 31 AND
                     ($RFE for internal use only:Status$='New' OR $RFE for internal use only:Status$='Submitted')
                     THEN 1
                 ELSE 0 END)
    
  3. SPARQL avalia o valor de escore e o marca como alto, médio, baixo ou NA.
    
                  IF((($Eval:Score$>=8)),"HIGH", 
                  IF((($Eval:Score$>=4.0) && ($Eval:Score$ < 8)),"MEDIUM", 
                  IF((($Eval:Score$>=1.0) && ($Eval:Score$ < 4)),"LOW", "NA")))
    

    Conversão SQL do Db2 do SPARQL

    
             CASE
    	      WHEN ($Eval:Score$>= 8) THEN 'HIGH'
                      WHEN (($Eval:Score$ < 8) AND ($Eval:Score$>= 4)) THEN 'MEDIUM'
    	      WHEN (($Eval:Score$ < 4) AND ($Eval:Score$> 1)) THEN 'LOW'
                      ELSE 'NA'
             END
    
  4. Exemplo de uso de união.
    SUM(IF(COALESCE($User Story:Resolved$, false), 
    COALESCE($User Story:Complexity$, 0), 0))
    

    Db2 Conversão do SPARQL para SQL

    
         SUM(
             CASE 
                 WHEN COALESCE($User Story:Resolved$, 0) = 1 
                 THEN COALESCE($User Story:Complexity$, 0) ELSE 0 END)
    
  5. Exemplo de uso de união complexa.
    
                  IF (SUM(COALESCE($User Story:Complexity$, 0)) = 0, 0, 
                      100 * SUM(
                      IF(COALESCE($User Story:Resolved$, false), COALESCE($User Story:Complexity$, 0), 0)
                     )/SUM(COALESCE($User Story:Complexity$, 0))
                   )

    Conversão SQL do Db2 do SPARQL

    
             CASE WHEN SUM(COALESCE($User Story:Complexity$, 0)) = 0 THEN 0
                ELSE
                100 * CAST(SUM(
                    CASE WHEN COALESCE($User Story:Resolved$, 0) = 1 THEN  
                    COALESCE($User Story:Complexity$, 0) ELSE 0 END)
              AS DECIMAL)/CAST(SUM(COALESCE($User Story:Complexity$, 0))   AS DECIMAL) END
    
  6. Funções de expressão customizada SPARQL e Db2 ou Oracle
    Tipo de função SPARQL Db2/Oracle
    Função de Média AVG(<Replace with Attribute>) AVG(<Replace with Attribute>)
    Função de Contagem COUNT(<Replace with Attribute>) COUNT(<Replace with Attribute>)
    Função dateDiff
    lqe_fn:dateDiff('day', <Replace with Attribute>,   <Replace with
                      Attribute>)
    TIMESTAMPDIFF(16,<Replace with Attribute> - <Replace   with
                      Attribute>)*
    função group_concat
    GROUP_CONCAT(DISTINCT <Replace with Attribute>;separator
                      ='<Replace with Separator>')
    LISTAGG(<Replace with Attribute>, ', ')
    Função máxima MAX(<Replace with Attribute>) MAX(<Replace with Attribute>)
    Função mínima MIN(<Replace with Attribute>) MIN(<Replace with Attribute>)
    Função de Soma SUM(<Replace with Attribute>) SUM(<Replace with Attribute>)
    Nota: Oracle não suporta TIMESTAMPDIFF e, em vez disso, é necessário executar conversão explícita de tipos de dados de data/hora. Veja https://docs.oracle.com/cd/E11882_01/server.112/e10729/ch4datetime.htm#NLSPG253 para um exemplo.

Recursos

Sobre esta Tarefa

Se estiver procurando assistência para converter SPARQL em SQL, consulte a referência do fornecedor de banco de dados para implementações específicas do fornecedor de banco de dados:

Comparando resultados da consulta entre SPARQL e SQL

Sobre esta Tarefa

É possível verificar e comparar manualmente os resultados da consulta SPARQL e SQL, mas essa não é uma maneira confiável de estabelecer se os resultados são semelhantes Pode haver diferenças visíveis na ordem dos resultados, mesmo quando a ordenação está definida. Por exemplo, um resultado equivalente pode estar em uma página diferente dos relatórios que são gerados de SPARQL versus SQL. Mesmo que a ordenação dos resultados seja idêntica, a verificação visual de muitas linhas e colunas não é um método confiável para comparar.

Em vez de verificar manualmente os resultados que são gerados a partir de SPARQL versus SQL, é possível clicar em Comparar resultados da consulta na seção Avançado da guia Formatar resultados ou página Executar relatório para comparar a consulta. O serviço de comparação em Report Builder gera o SPARQL e o executa, gera o SQL e o executa e, em seguida, compara os resultados da consulta entre o SPARQL e o SQL para obter equivalência semântica. Com base na comparação, é exibida na tela uma mensagem de aviso ou de sucesso, acompanhada dos botões “Expandir” e “Recolher ”. Ao expandir a mensagem, uma tabela com o número de resultados e o tempo de execução para consultas SPARQL e SQL é exibida. Você também pode baixar o relatório comparativo em formato de texto clicando em “Baixar relatório comparativo ”.

Para ajudar ainda mais com o LQE, foi introduzido um novo recurso que permite aos usuários do Report Builder adicionar expressões personalizadas com SPARQL e SQL. Isso permite que os usuários aproveitem ainda mais o serviço Comparando resultados da consulta. Para aproveitar esse recurso, os usuários precisam incluir SPARQL ou SQL com o #if_sparql ou #if_sql e #endif_sparql ou #endif_sql. Veja o exemplo a seguir:
#if_sparql
AVG(<Replace with Attribute>)
#endif_sparql

#if_sql
AVG(<Replace with Attribute>)
#endif_sql

Quando uma expressão personalizada contiver tanto SPARQL quanto SQL, você deve usar o serviço de validação para atualizar a expressão personalizada. O serviço de validação valida o SPARQL ou SQL com base na seleção da linguagem de consulta de relatório Para validar tanto o SPARQL quanto o SQL, é necessário primeiro validar a linguagem de consulta padrão, por exemplo, o SPARQL, e, em seguida, atualizar a linguagem de consulta para SQL e executar a validação de expressões personalizadas. Essa ajuda garante que tanto o SPARQL quanto o SQL sejam validados antes da execução do relatório com expressão personalizada ou da comparação dos resultados da consulta.

Nota: A mesma sintaxe que é usada para suportar SQL e SPARQL em cálculos customizados também pode ser usada para suportar o relatório SQL e SPARQL avançados.