Cosè il sé in Python: esempi del mondo reale
Cos'è il sé in Python: esempi del mondo reale
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).
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.
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 .
La nostra tabella delle transazioni ha solo tre campi: numero di conto , data fattura e quantità di vendita .
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 .
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.
Diamo un'occhiata al risultato ed espandiamolo.
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.
Cambieremo solo la colonna in un tipo di testo. Ora, abbiamo una delle nostre due dimensioni impostate nella tabella dei fatti.
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.
Cambiamo semplicemente questo in un tipo di dati data, quindi spostiamo la colonna in primo piano.
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 .
Questo ti darà la differenza tra queste due date in termini di numero di giorni. Chiamiamo questa nuova colonna Giorni prima di oggi.
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 .
Ancora una volta, useremo Tutti i dati per il nuovo nome della colonna e Tutte le righe per l'operazione.
Questa volta aggiungeremo Minimum Days Between con Minimum come operazione e Days Before to Today come colonna. Questo ci darà l'ordine più recente.
Quindi espandiamo Tutti i dati e rimuoviamo il numero di conto .
Una volta ampliato questo aspetto, avremo i giorni minimi tra i numeri di conto.
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 .
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.
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 .
Invece di tenerli nella tabella dei fatti, duplichiamo questa tabella.
Chiameremo la tabella duplicata Account Flags .
Torniamo alla tabella Transazioni ed eliminiamo i campi Tipo di cliente e Tempistica del cliente .
Ora abbiamo la tabella dei fatti originale e la tabella Flag account.
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.
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 .
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.
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
Imparerai come salvare e caricare oggetti da un file .rds in R. Questo blog tratterà anche come importare oggetti da R a LuckyTemplates.
In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.
Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.
In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.
Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.
Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.
Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.
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