Dimensione spazzatura: cosè e perché è tuttaltro che spazzatura

Dimensione spazzatura: cosè e perché è tuttaltro che spazzatura

Oggi voglio parlare di un concetto di modellazione dei dati chiamato dimensione spazzatura . Dal nome, penseresti che sia una tecnica dispregiativa e qualcosa che vorresti evitare, ma in realtà è un approccio utile.

In effetti, ho lavorato su una domanda dal e una dimensione spazzatura era la soluzione perfetta per questo. Una volta che lo vedi e lo capisci, ne troverai molte applicazioni nel tuo lavoro. Puoi guardare il video completo di questo tutorial in fondo a questo blog.

Sommario

Cosa sono le dimensioni spazzatura?

The Data Warehouse Toolkit di Kimball e Ross , una delle bibbie della modellazione dimensionale, la definisce come il raggruppamento di flag e indicatori tipicamente a bassa cardinalità . Cardinalità bassa significa un piccolo numero di osservazioni univoche all'interno di un dato campo.

Nel nostro esempio, abbiamo un modello di dati per la nostra attività di creazione di PC personalizzati. Il modello dati riguarda gli ordini e le fatture. Abbiamo anche una serie di flag in cui possiamo catturare il tipo di processore , il tipo di configurazione della torre (Compact o Full) e lo scopo (Gaming o Workstation).

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Definizione delle dimensioni spazzatura utilizzando l'analogia del cassetto spazzatura della cucina

Se guardi ciascuno di questi campi, ci sono solo due osservazioni uniche in ogni campo. Questo è ciò che Kimball chiamerebbe flag a bassa cardinalità . Dice che creando una dimensione astratta, rimuoviamo i flag dalla tabella dei fatti mentre li collochiamo in un utile quadro dimensionale.

L'analogia del cassetto della spazzatura della cucina per una dimensione della spazzatura è buona. Tutti hanno un cassetto pieno di elastici, punti metallici, batterie, candeline, eccetera. Non è importante che nessuna di queste cose garantisca di avere il proprio cassetto, ma devi avere un posto dove metterle.

Mantenerli può far aumentare le dimensioni della tabella dei fatti. Supponiamo di avere una tabella dei fatti con un milione di record. Abbiamo costruito molti computer e per ogni computer che costruiamo dobbiamo contrassegnare il processore, la torre e lo scopo. Ciò significa che per un milione di righe di PC che sono state ordinate, abbiamo anche 3 milioni di flag nella tabella dei fatti.

Riduzione delle dimensioni della tabella dei fatti

Potremmo spostarli in una tabella delle dimensioni e collegarli solo all'ID modello per rimuovere i 3 milioni di flag dalla tabella dei fatti. Per fare ciò, possiamo creare una tabella separata per ciascuno di questi flag e funzionerà. Ma questo processo complicherà il modello di dati, in cui normalmente si desidera evitare tabelle a colonna singola.

La soluzione ideale è utilizzare una dimensione spazzatura , in cui si dispone di un gruppo di flag a bassa cardinalità correlati in modo generale. Questi sono tutti correlati agli attributi dei computer che stiamo costruendo, ma non in un modo veramente diretto che normalmente avresti per una specifica tabella delle dimensioni.

Revisione del problema del membro del forum

Diamo un'occhiata all'applicazione specifica che è stata pubblicata sul forum. Il membro voleva creare due diversi campi, uno per Stalled e uno per Active . Se il cliente ha effettuato una transazione negli ultimi 45 giorni, viene contrassegnata come attiva; in caso contrario, viene contrassegnato come bloccato.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Il membro desiderava anche un'altra tabella delle dimensioni per il tipo di cliente, che può essere multi-ordine o singolo ordine. Se il conto ha avuto due o più transazioni in qualsiasi momento della cronologia utilizzando un unico numero di conto, sarebbe considerato un cliente multi-ordine. E se avessero un solo ordine per un determinato numero di conto, sarebbe un cliente con un solo ordine.

Quindi queste sono le due bandiere che vogliamo sviluppare. Passiamo a LuckyTemplates e scopriamo come farlo.

Modellazione dei dati per la dimensione spazzatura

Diamo un'occhiata al modello di dati. È un modello di dati molto semplice. Abbiamo la nostra tabella Date estesa e la tabella Transazioni .

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

La nostra tabella delle transazioni ha solo tre campi: numero di conto , data fattura e quantità di vendita .

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Generalmente, se riusciamo ad avvicinare la trasformazione alla fonte, lo faremo. Questo non è dinamico nel corso di una sessione di reporting, quindi non è necessario farlo in DAX .

Dovremmo farlo in power query o data warehouse/SQL se abbiamo questa opzione. Ma per ora, supponiamo di no e che lo stiamo facendo solo in power query .

Identificazione del tipo di client per la dimensione spazzatura

La prima cosa che faremo è capire il tipo di cliente, se si tratta di un singolo ordine o di una transazione multi-ordine. Useremo Group By , Count e Count Rows .

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Quindi aggiungi tutti i dati e rendila un'operazione All Rows in modo da restituire non la tabella aggregata, ma la tabella iniziale con quel numero di righe in ogni riga.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Diamo un'occhiata al risultato ed espandiamolo.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Possiamo aggiungere una colonna personalizzata e denominarla Client Type e quindi creare un'istruzione IF. L'affermazione è se Count è uguale a 1, quindi è un singolo ordine; in caso contrario, è multi-ordine.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Cambieremo solo la colonna in un tipo di testo. Ora, abbiamo una delle nostre due dimensioni impostate nella tabella dei fatti.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Facciamo la seconda tabella delle dimensioni. Per questo, se l'ordine più recente è a 45 giorni o meno dalla data odierna, il cliente viene considerato attivo. Se non c'è nessun ordine entro 45 giorni da oggi, allora il cliente è inattivo.

Aggiungeremo una colonna personalizzata e denomineremo la colonna Today . Quindi aggiungi DateTime.LocalNow per fornirci la data e l'ora correnti, quindi Date.From per fornirci solo la parte della data.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Cambiamo semplicemente questo in un tipo di dati data, quindi spostiamo la colonna in primo piano.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

C'è un modo semplice per creare una sottrazione tra le due colonne di date. Basta evidenziare queste due date, fare clic su Date sulla barra multifunzione, quindi fare clic su Sottrai giorni .

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Questo ti darà la differenza tra queste due date in termini di numero di giorni. Chiamiamo questa nuova colonna Giorni prima di oggi.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Il passo successivo è trovare i giorni minimi prima di oggi, il che significa l'ordine più recente per ogni numero di conto. Se quel numero è minore o uguale a 45, è attivo.

Facciamo un altro Group By , quindi Advanced , quindi Account Number .

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Ancora una volta, useremo Tutti i dati per il nuovo nome della colonna e Tutte le righe per l'operazione.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Questa volta aggiungeremo Minimum Days Between con Minimum come operazione e Days Before to Today come colonna. Questo ci darà l'ordine più recente.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Quindi espandiamo Tutti i dati e rimuoviamo il numero di conto .

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Una volta ampliato questo aspetto, avremo i giorni minimi tra i numeri di conto.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Infine, aggiungeremo un'altra colonna personalizzata e la chiameremo Client Timing . Inseriremo un parametro what-if dove se il nostro Min Days Between è minore o uguale a 45, allora è Active oppure Stalled .

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Rimozione delle colonne non necessarie

Dato che ora abbiamo molte colonne di supporto, facciamo clic su Scegli colonne ed eliminiamo quelle che non ci servono.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Rimuoveremo le colonne Count , Today , Days Before to Today e Min Days Between . Ora abbiamo solo la tabella dei fatti originale, oltre alle colonne Client Type e Client Timing .

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Invece di tenerli nella tabella dei fatti, duplichiamo questa tabella.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Chiameremo la tabella duplicata Account Flags .

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Torniamo alla tabella Transazioni ed eliminiamo i campi Tipo di cliente e Tempistica del cliente .

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Ora abbiamo la tabella dei fatti originale e la tabella Flag account.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Per la tabella Indicatori account, non abbiamo bisogno dei campi Tipo di cliente e Tempistica del cliente , quindi li eliminiamo. Evidenziamo semplicemente tutti questi campi, rimuoviamo le righe e rimuoviamo i duplicati.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Ora abbiamo la nostra tabella delle dimensioni spazzatura. Non resta che premere Chiudi e applica . Il passaggio successivo consiste nel collegare il numero di conto dalla nostra tabella dei flag di conto al numero di conto nella nostra tabella delle transazioni .

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Abbiamo una relazione uno-a-molti tra la tabella delle transazioni (che è la nostra tabella dei fatti) e la tabella dei flag dell'account (che è la nostra tabella delle dimensioni spazzatura).


Creazione delle relazioni del modello di dati in LuckyTemplates
Modellazione dei dati in LuckyTemplates: suggerimenti e best practice

Conclusione

Lasciamo cadere le dimensioni Client Timing e Client Type nel nostro canvas e trasformiamole in affettatrici. Ora possiamo fare esattamente ciò che il membro voleva fare inizialmente, ovvero dividere in base a questi attributi.

Se facciamo clic su Ordine multiplo, ci lascerà solo con quelli che hanno più ordini e se andiamo su Ordine singolo, ci lascerà con quelli che hanno un acquisto.

Dimensione spazzatura: cos'è e perché è tutt'altro che spazzatura

Per riassumere, questo è fondamentalmente cos'è una dimensione spazzatura e come puoi crearla. Questa è una tecnica molto utile se si dispone di un gruppo di flag assortiti a bassa cardinalità che si desidera incorporare nel modello di dati in modo efficiente.

La tecnica del raggruppamento per tutte le righe è estremamente utile per creare queste dimensioni spazzatura. Spero che tu l'abbia trovato utile e come sempre.


Cosè il sé in Python: esempi del mondo reale

Cosè il sé in Python: esempi del mondo reale

Cos'è il sé in Python: esempi del mondo reale

Come salvare e caricare un file RDS in R

Come salvare e caricare un file RDS in R

Imparerai come salvare e caricare oggetti da un file .rds in R. Questo blog tratterà anche come importare oggetti da R a LuckyTemplates.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.

Introduzione al filtraggio del contesto in LuckyTemplates

Introduzione al filtraggio del contesto in LuckyTemplates

In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.

Idee di materializzazione per cache di dati in DAX Studio

Idee di materializzazione per cache di dati in DAX Studio

Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.

Reporting aziendale tramite LuckyTemplates

Reporting aziendale tramite LuckyTemplates

Se finora utilizzi ancora Excel, questo è il momento migliore per iniziare a utilizzare LuckyTemplates per le tue esigenze di reportistica aziendale.

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cos'è il gateway LuckyTemplates? Tutto quello che devi sapere