Validação de intervalos

Limpeza de Dados em Java

Dennis Lee

Software Engineer

Conjunto de vendas de chocolate

  • Vamos usar um conjunto de vendas de chocolate ao longo do capítulo
  • Vamos alterar colunas como valor e data para mostrar validação de dados

 

Vendedor(a) País Produto Data Valor Caixas enviadas
James Rudeforth Reino Unido Mint Chip Choco 4-Jan-22 $5,320 180
Van Tuxwell Índia 85% Dark Bars 1-Aug-22 $7,896 94
Gigi Bohling Índia Peanut Butter Cubes 7-Jul-22 $4,501 91
Jan Morforth Austrália Peanut Butter Cubes 27-Apr-22 $12,726 342
Jehu Fischer Reino Unido Peanut Butter Cubes 24-Feb-22 $13,685 184
Limpeza de Dados em Java

Por que validar intervalos

// Extraímos esses valores e datas do conjunto
List<Double> salesAmounts = Arrays.asList(5320.0, 7896.0, 4501.0,
                                          12726.0, 13685.0);
List<String> saleDates = Arrays.asList("4-Jan-22", "1-Aug-22", "7-Jul-22", 
                                       "27-Apr-22", "24-Feb-22");

System.out.println("Sales amounts: " + salesAmounts);
System.out.println("Sale dates: " + saleDates);
Sales amounts: [5320.0, 7896.0, 4501.0, 12726.0, 13685.0]
Sale dates: [4-Jan-22, 1-Aug-22, 7-Jul-22, 27-Apr-22, 24-Feb-22]
Limpeza de Dados em Java

Encontrando limites do intervalo

// Obter o valor mínimo
Double minSale = Collections.min(salesAmounts);
// Obter o valor máximo
Double maxSale = Collections.max(salesAmounts);

System.out.println("Range: $" + minSale + " - $" + maxSale);
Range: $4501.0 - $13685.0
Limpeza de Dados em Java

Definindo um intervalo válido

// O valor de venda não deve ser menor que 0.0
Double lowerThreshold = 0.0;
// O valor de venda não deve ser maior que 15000.0
Double upperThreshold = 15000.0;

for (Double amount : salesAmounts) { // Verificar se cada valor está dentro do intervalo if (amount >= lowerThreshold && amount <= upperThreshold) { System.out.println(amount + " is within range"); } }
Limpeza de Dados em Java

Intervalo válido: saídas

5320.0 is within range
7896.0 is within range
4501.0 is within range
12726.0 is within range
13685.0 is within range
Limpeza de Dados em Java

Definindo categorias de intervalo

import org.apache.commons.lang3.Range;
// Categoria de vendas baixas: $0 - $5000
Range<Double> lowSales = Range.between(0.0, 5000.0);
// Categoria de vendas médias: $5000 - $10000
Range<Double> mediumSales = Range.between(5000.0, 10000.0);
// Categoria de vendas altas: $10000 - $15000
Range<Double> highSales = Range.between(10000.0, 15000.0);
Limpeza de Dados em Java

Verificando categorias de intervalo

for (Double amount : salesAmounts) {
    if (lowSales.contains(amount)) { // O valor está no intervalo de vendas baixas?
        System.out.println("$" + amount + " - Vendas baixas");
    } else if (mediumSales.contains(amount)) { // O valor está no intervalo de vendas médias?
        System.out.println("$" + amount + " - Vendas médias");
    } else if (highSales.contains(amount)) { // O valor está no intervalo de vendas altas?
        System.out.println("$" + amount + " - Vendas altas");
    } else { // O valor está fora do esperado?
        System.out.println("$" + amount + " - Fora do intervalo esperado");
    }
}
Limpeza de Dados em Java

Verificando categorias: saídas

Categorização de vendas:
$5320.0 - Vendas médias
$7896.0 - Vendas médias
$4501.0 - Vendas baixas
$12726.0 - Vendas altas
$13685.0 - Vendas altas
Limpeza de Dados em Java

Validando datas

// d-MMM-yy: dia do mês (d), mês abreviado (MMM), ano com dois dígitos (yy)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d-MMM-yy");
LocalDate startDate = LocalDate.of(2022, 1, 1); // Início de 2022
LocalDate endDate = LocalDate.of(2022, 12, 31); // Fim de 2022

for (String dateStr : saleDates) { LocalDate saleDate = LocalDate.parse(dateStr, formatter);
// Datas válidas ocorrem após startDate e antes de endDate boolean isValid = saleDate.isAfter(startDate) && saleDate.isBefore(endDate); System.out.println(dateStr + " is valid: " + isValid); }
Limpeza de Dados em Java

Validando datas: saídas

4-Jan-22 is valid: true
1-Aug-22 is valid: true
7-Jul-22 is valid: true
27-Apr-22 is valid: true
24-Feb-22 is valid: true
Limpeza de Dados em Java

Juntando tudo

  • Importante: org.apache.commons.lang3.Range
  • Obter min e máx: Collections.min(salesAmounts), Collections.max(salesAmounts)
  • Definir categorias: Range.between(0.0, 5000.0)
  • Verificar categorias: lowSales.contains(amount)
  • Validar datas: saleDate.isAfter(startDate), saleDate.isBefore(endDate)
Limpeza de Dados em Java

Vamos praticar!

Limpeza de Dados em Java

Preparing Video For Download...