Ir para o conteúdo

Retornar uma Linha Aleatória de uma Tabela

Aqui está um guia prático rápido que permite retornar uma linha aleatória de qualquer tabela, o que pode ser útil para amostragem em testes:

  1. Na camada de lógica de negócios, crie um objeto de negócios que gere números de linha nas chaves primárias da tabela desejada.

    • Por exemplo: Cliente (Gerar número de linha) é um objeto que seleciona a tabela PK e possui um valor Expressão que gera o número da linha com este tipo de sintaxe:

      ${ROW_NUMBER() OVER(ORDER BY C.CustomerID)}

  2. Crie outro objeto de negócios que selecione o número máximo de linhas usando os resultados da etapa 1

    • Por exemplo: Cliente (Número Máximo de Linha) é um objeto que usa o objeto da etapa 1 e possui um valor Expressão que fornece o valor Número Máximo de Linha com esta sintaxe de tipo:

      MAX(CGRN.RowNum)

  3. Crie um novo Business Object que combine os objetos criados nas Etapas 1 e 2 e, em seguida, use a função RAND() para gerar um número de 1 até esse número máximo e filtre onde o número aleatório gerado = número da linha. Cross Join nos dois objetos usados nesta regra.

    • Por exemplo: Esta Regra possui as seguintes Colunas definidas:

      • ROW.CustomerID
      • MAX.MaxRowNum
      • ${FLOOR(RAND() * (MAX.MaxRowNum + 1))