Dati del database Bucketing Report Design

1

Ecco lo scenario: Ho item x (item_id, customer_number, cost) che può essere inviato ad un altro sistema più volte nel corso dei mesi, il che può o non può rifiutare l'articolo x prima di accettarlo definitivamente ad un certo punto.

Requisito di segnalazione: Intervallo di date arbitrario per data di inizio e data di fine Vuoi restituire un numero univoco di elementi che sono stati rifiutati nell'intervallo di tempo (tieni presente che se l'elemento x è stato rifiutato tre volte in questo intervallo di tempo, vorremmo contenerlo una sola volta).

Dati di esempio realistici:

Item X Rejected 01/02/2014
Item X Rejected 01/03/2014
Item X Rejected 02/15/2014

Se voglio eseguire il report dal 01/01/2014 al 02/01/2014 per l'articolo x, dovrei ottenere un conteggio pari a 1 per l'intervallo. Diventa strano quando eseguo il report per gennaio, quindi lo eseguo anche a febbraio perché lo stesso elemento dovrebbe apparire come un conteggio di 1 per entrambi i mesi, ma lo eseguo per i primi 3 mesi dell'anno, ma dovrebbe essere solo mostra come conteggio di 1.

Il problema: Ho a che fare con miliardi di record sul database. Normalmente dovremmo solo pre-calcolare i totali per i dati e caricarli per mese. In questo caso non possiamo farlo perché durante l'esecuzione di intervalli di date arbitrari, febbraio e gennaio non possono essere sommati nell'esempio precedente poiché ciò comporterebbe un conteggio di 2 per l'elemento x invece del totale univoco di 1.

Domanda: C'è un modo per pre-calcolare i dati per i conteggi unici come questo per intervalli di date arbitrari? Qualcuno ha qualche suggerimento per l'ottimizzazione della segnalazione qui (non coinvolge il lancio di più hardware)?

Utilizziamo Oracle Database 11g.

    
posta Reimius 23.02.2015 - 19:44
fonte

0 risposte

Leggi altre domande sui tag