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:
-
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)}
-
-
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)
-
-
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))
-