Μοντελοποίηση διαστάσεων στο Amazon Redshift | Υπηρεσίες Ιστού της Amazon

Μοντελοποίηση διαστάσεων στο Amazon Redshift | Υπηρεσίες Ιστού της Amazon

Κόμβος πηγής: 2778508

Amazon RedShift είναι μια πλήρως διαχειριζόμενη αποθήκη δεδομένων cloud σε κλίμακα petabyte που χρησιμοποιείται από δεκάδες χιλιάδες πελάτες για την επεξεργασία exabyte δεδομένων κάθε μέρα για να τροφοδοτήσει τον φόρτο εργασίας τους στα αναλυτικά στοιχεία. Μπορείτε να δομήσετε τα δεδομένα σας, να μετρήσετε τις επιχειρηματικές διαδικασίες και να λάβετε πολύτιμες πληροφορίες γρήγορα, χρησιμοποιώντας ένα μοντέλο διαστάσεων. Το Amazon Redshift παρέχει ενσωματωμένες λειτουργίες για την επιτάχυνση της διαδικασίας μοντελοποίησης, ενορχήστρωσης και αναφοράς από ένα μοντέλο διαστάσεων.

Σε αυτήν την ανάρτηση, συζητάμε πώς να εφαρμόσουμε ένα μοντέλο διαστάσεων, συγκεκριμένα το Μεθοδολογία Kimball. Συζητάμε την υλοποίηση διαστάσεων και γεγονότων στο Amazon Redshift. Δείχνουμε πώς να εκτελείται η εξαγωγή, ο μετασχηματισμός και η φόρτωση (ELT), μια διαδικασία ολοκλήρωσης που επικεντρώνεται στη μεταφορά των ακατέργαστων δεδομένων από μια λίμνη δεδομένων σε ένα στρώμα σταδιοποίησης για την εκτέλεση της μοντελοποίησης. Συνολικά, η ανάρτηση θα σας δώσει μια σαφή κατανόηση του τρόπου χρήσης της μοντελοποίησης διαστάσεων στο Amazon Redshift.

Επισκόπηση λύσεων

Το παρακάτω διάγραμμα απεικονίζει την αρχιτεκτονική λύσεων.

Στις επόμενες ενότητες, αρχικά συζητάμε και δείχνουμε τις βασικές πτυχές του μοντέλου διαστάσεων. Μετά από αυτό, δημιουργούμε ένα data mart χρησιμοποιώντας το Amazon Redshift με ένα μοντέλο δεδομένων διαστάσεων που περιλαμβάνει πίνακες διαστάσεων και δεδομένων. Τα δεδομένα φορτώνονται και σκηνοθετούνται χρησιμοποιώντας το COPY εντολή, τα δεδομένα στις διαστάσεις φορτώνονται χρησιμοποιώντας το ΣΥΓΧΩΝΕΥΣΗ δήλωση και τα γεγονότα θα ενωθούν με τις διαστάσεις από τις οποίες προέρχονται οι πληροφορίες. Προγραμματίζουμε τη φόρτωση των διαστάσεων και των στοιχείων χρησιμοποιώντας το Amazon Redshift Query Editor V2. Τέλος, χρησιμοποιούμε Amazon QuickSight για να αποκτήσετε πληροφορίες σχετικά με τα μοντελοποιημένα δεδομένα με τη μορφή ενός πίνακα εργαλείων QuickSight.

Για αυτήν τη λύση, χρησιμοποιούμε ένα δείγμα δεδομένων (κανονικοποιημένο) που παρέχεται από το Amazon Redshift για πωλήσεις εισιτηρίων εκδηλώσεων. Για αυτήν την ανάρτηση, περιορίσαμε το σύνολο δεδομένων για λόγους απλότητας και επίδειξης. Οι παρακάτω πίνακες δείχνουν παραδείγματα των δεδομένων για τις πωλήσεις εισιτηρίων και τους χώρους διεξαγωγής.

Σύμφωνα με το Μεθοδολογία μοντελοποίησης διαστάσεων Kimball, υπάρχουν τέσσερα βασικά βήματα για το σχεδιασμό ενός μοντέλου διαστάσεων:

  1. Προσδιορίστε την επιχειρηματική διαδικασία.
  2. Δηλώστε την ουσία των δεδομένων σας.
  3. Προσδιορίστε και εφαρμόστε τις διαστάσεις.
  4. Προσδιορίστε και εφαρμόστε τα γεγονότα.

Επιπλέον, προσθέτουμε ένα πέμπτο βήμα για σκοπούς επίδειξης, το οποίο είναι η αναφορά και η ανάλυση επιχειρηματικών γεγονότων.

Προϋποθέσεις

Για αυτήν την καθοδήγηση, θα πρέπει να έχετε τις ακόλουθες προϋποθέσεις:

Προσδιορίστε την επιχειρηματική διαδικασία

Με απλά λόγια, ο προσδιορισμός της επιχειρηματικής διαδικασίας είναι ο προσδιορισμός ενός μετρήσιμου γεγονότος που δημιουργεί δεδομένα μέσα σε έναν οργανισμό. Συνήθως, οι εταιρείες διαθέτουν κάποιου είδους λειτουργικό σύστημα πηγής που παράγει τα δεδομένα τους στην ακατέργαστη μορφή τους. Αυτό είναι ένα καλό σημείο εκκίνησης για τον εντοπισμό διαφόρων πηγών για μια επιχειρηματική διαδικασία.

Στη συνέχεια, η επιχειρηματική διαδικασία συνεχίζεται ως α δεδομένα mart με τη μορφή διαστάσεων και γεγονότων. Εξετάζοντας το δείγμα δεδομένων μας που αναφέρθηκε προηγουμένως, μπορούμε να δούμε ξεκάθαρα ότι η επιχειρηματική διαδικασία είναι οι πωλήσεις που πραγματοποιήθηκαν για ένα δεδομένο γεγονός.

Ένα συνηθισμένο λάθος που γίνεται είναι η χρήση τμημάτων μιας εταιρείας ως επιχειρηματική διαδικασία. Τα δεδομένα (επιχειρηματική διαδικασία) πρέπει να ενσωματωθούν σε διάφορα τμήματα, σε αυτήν την περίπτωση, το μάρκετινγκ μπορεί να έχει πρόσβαση στα δεδομένα πωλήσεων. Ο εντοπισμός της σωστής επιχειρηματικής διαδικασίας είναι κρίσιμος—το λάθος αυτού του βήματος μπορεί να επηρεάσει ολόκληρη την αγορά δεδομένων (μπορεί να προκαλέσει διπλότυπο του κόκκου και εσφαλμένες μετρήσεις στις τελικές αναφορές).

Δηλώστε το σύνολο των δεδομένων σας

Η δήλωση του κόκκου είναι η πράξη της μοναδικής αναγνώρισης μιας εγγραφής στην πηγή δεδομένων σας. Ο κόκκος χρησιμοποιείται στον πίνακα γεγονότων για να μετρήσει με ακρίβεια τα δεδομένα και να σας επιτρέψει να κάνετε ρολό περαιτέρω. Στο παράδειγμά μας, αυτό θα μπορούσε να είναι ένα στοιχείο γραμμής στην επιχειρηματική διαδικασία πωλήσεων.

Στην περίπτωση χρήσης μας, μια πώληση μπορεί να προσδιοριστεί μοναδικά εξετάζοντας το χρόνο συναλλαγής που πραγματοποιήθηκε η πώληση. αυτό θα είναι το πιο ατομικό επίπεδο.

Προσδιορίστε και εφαρμόστε τις διαστάσεις

Ο πίνακας διαστάσεων σας περιγράφει τον πίνακα γεγονότων και τα χαρακτηριστικά του. Κατά τον προσδιορισμό του περιγραφικού πλαισίου της επιχειρηματικής σας διαδικασίας, αποθηκεύετε το κείμενο σε ξεχωριστό πίνακα, λαμβάνοντας υπόψη τα στοιχεία του πίνακα. Όταν συνδέετε τον πίνακα διαστάσεων στον πίνακα γεγονότων, θα πρέπει να υπάρχει μόνο μία γραμμή που σχετίζεται με τον πίνακα γεγονότων. Στο παράδειγμά μας, χρησιμοποιούμε τον παρακάτω πίνακα για διαχωρισμό σε πίνακα διαστάσεων. αυτά τα πεδία περιγράφουν τα γεγονότα που θα μετρήσουμε.

Όταν σχεδιάζετε τη δομή του μοντέλου διαστάσεων (το σχήμα), μπορείτε είτε να δημιουργήσετε ένα αστέρι or νιφάδα χιονιού σχήμα. Η δομή πρέπει να ευθυγραμμίζεται στενά με την επιχειρηματική διαδικασία. Επομένως, ένα σχήμα αστεριού ταιριάζει καλύτερα στο παράδειγμά μας. Το παρακάτω σχήμα δείχνει το διάγραμμα σχέσεων οντοτήτων (ERD).

Στις επόμενες ενότητες, περιγράφουμε λεπτομερώς τα βήματα για την υλοποίηση των διαστάσεων.

Σταδιοποιήστε τα δεδομένα πηγής

Για να μπορέσουμε να δημιουργήσουμε και να φορτώσουμε τον πίνακα διαστάσεων, χρειαζόμαστε δεδομένα προέλευσης. Επομένως, τοποθετούμε τα δεδομένα προέλευσης σε έναν πίνακα σταδιοποίησης ή προσωρινού πίνακα. Αυτό αναφέρεται συχνά ως το στρώμα σταδιοποίησης, που είναι το μη επεξεργασμένο αντίγραφο των δεδομένων πηγής. Για να το κάνουμε αυτό στο Amazon Redshift, χρησιμοποιούμε το Εντολή COPY για να φορτώσετε τα δεδομένα από τον δημόσιο κάδο S3 dimensional-modeling-in-amazon-redshift που βρίσκεται στο us-east-1 Περιοχή. Σημειώστε ότι η εντολή COPY χρησιμοποιεί ένα Διαχείριση ταυτότητας και πρόσβασης AWS (IAM) ρόλος με πρόσβαση στο Amazon S3. Ο ρόλος πρέπει να είναι που σχετίζονται με το σύμπλεγμα. Ολοκληρώστε τα παρακάτω βήματα για να αναβαθμίσετε τα δεδομένα προέλευσης:

  1. Δημιουργήστε το venue πίνακας πηγής:
CREATE TABLE public.venue ( venueid bigint, venuename character varying(100), venuecity character varying(30), venuestate character(2), venueseats bigint
) DISTSTYLE AUTO SORTKEY (venueid);

  1. Φορτώστε τα δεδομένα του χώρου:
COPY public.venue
FROM 's3://redshift-blogs/dimensional-modeling-in-amazon-redshift/venue.csv'
IAM_ROLE '<Your IAM role arn>'
DELIMITER ','
REGION 'us-east-1'
IGNOREHEADER 1

  1. Δημιουργήστε το sales πίνακας πηγής:
CREATE TABLE public.sales (
    salesid integer,
    venueid character varying(256),
    saletime timestamp without time zone,
    qtysold BIGINT,
    commission numeric(18,2),
    pricepaid numeric(18,2)
) DISTSTYLE AUTO;

  1. Φορτώστε τα δεδομένα πηγής πωλήσεων:
COPY public.sales
FROM 's3://redshift-blogs/dimensional-modeling-in-amazon-redshift/sales.csv'
IAM_ROLE '<Your IAM role arn>'
DELIMITER ','
REGION 'us-east-1'
IGNOREHEADER 1

  1. Δημιουργήστε το calendar τραπέζι:
CREATE TABLE public.DimCalendar(
    dateid smallint,
        caldate date,
        day varchar(20),
        week smallint,
        month varchar(20),
        qtr varchar(20),
        year smallint,
        holiday boolean
) DISTSTYLE AUTO
SORTKEY
    (dateid);

  1. Φόρτωση δεδομένων ημερολογίου:
COPY public.DimCalendar
FROM 's3://redshift-blogs/dimensional-modeling-in-amazon-redshift/date.csv'
IAM_ROLE '<Your IAM role arn>'
DELIMITER ',' 
REGION 'us-east-1'
IGNOREHEADER 1

Δημιουργήστε τον πίνακα διαστάσεων

Ο σχεδιασμός του πίνακα διαστάσεων μπορεί να εξαρτάται από τις απαιτήσεις της επιχείρησής σας—για παράδειγμα, χρειάζεται να παρακολουθείτε τις αλλαγές στα δεδομένα με την πάροδο του χρόνου; Υπάρχουν επτά διαφορετικοί τύποι διαστάσεων. Για το παράδειγμά μας χρησιμοποιούμε πληκτρολογήστε 1 γιατί δεν χρειάζεται να παρακολουθούμε τις ιστορικές αλλαγές. Για περισσότερα σχετικά με τον τύπο 2, ανατρέξτε στο Απλοποιήστε τη φόρτωση δεδομένων σε διαστάσεις τύπου 2 που αλλάζουν αργά στο Amazon Redshift. Ο πίνακας διαστάσεων θα αποκανονικοποιηθεί με ένα πρωτεύον κλειδί, ένα υποκατάστατο κλειδί και μερικά προστιθέμενα πεδία για να υποδείξουν τις αλλαγές στον πίνακα. Δείτε τον παρακάτω κώδικα:

create schema SalesMart;

CREATE TABLE SalesMart.DimVenue( 
    "VenueSkey" int IDENTITY(1,1) primary key
    ,"VenueId" VARCHAR NOT NULL
    ,"VenueName" VARCHAR NULL
    ,"VenueCity" VARCHAR NULL
    ,"VenueState" VARCHAR NULL
    ,"VenueSeats" INT NULL
    ,"InsertedDate" DATETIME NOT NULL
    ,"UpdatedDate" DATETIME NOT NULL
) 
diststyle AUTO;

Μερικές σημειώσεις σχετικά με τη δημιουργία του πίνακα διαστάσεων:

  • Τα ονόματα των πεδίων μετατρέπονται σε ονόματα φιλικά προς τις επιχειρήσεις
  • Το πρωταρχικό μας κλειδί είναι VenueID, το οποίο χρησιμοποιούμε για να προσδιορίσουμε μοναδικά έναν τόπο στον οποίο πραγματοποιήθηκε η πώληση
  • Θα προστεθούν δύο επιπλέον σειρές, που υποδεικνύουν πότε εισήχθη και ενημερώθηκε μια εγγραφή (για παρακολούθηση αλλαγών)
  • Χρησιμοποιούμε ένα ΑΥΤΟΜΑΤΟ στυλ διανομής να δώσει στο Amazon Redshift την ευθύνη να επιλέξει και να προσαρμόσει το στυλ διανομής

Ένας άλλος σημαντικός παράγοντας που πρέπει να ληφθεί υπόψη στη μοντελοποίηση διαστάσεων είναι η χρήση του υποκατάστατα κλειδιά. Τα υποκατάστατα κλειδιά είναι τεχνητά κλειδιά που χρησιμοποιούνται στη μοντελοποίηση διαστάσεων για να αναγνωρίζουν μοναδικά κάθε εγγραφή σε έναν πίνακα διαστάσεων. Συνήθως δημιουργούνται ως διαδοχικός ακέραιος και δεν έχουν καμία σημασία στον επιχειρηματικό τομέα. Προσφέρουν πολλά πλεονεκτήματα, όπως η εξασφάλιση μοναδικότητας και η βελτίωση της απόδοσης στις συνδέσεις, επειδή είναι συνήθως μικρότερα από τα φυσικά κλειδιά και ως υποκατάστατα κλειδιά δεν αλλάζουν με την πάροδο του χρόνου. Αυτό μας επιτρέπει να είμαστε συνεπείς και να ενώνουμε πιο εύκολα γεγονότα και διαστάσεις.

Στο Amazon Redshift, τα υποκατάστατα κλειδιά δημιουργούνται συνήθως χρησιμοποιώντας τη λέξη-κλειδί IDENTITY. Για παράδειγμα, η προηγούμενη πρόταση CREATE δημιουργεί έναν πίνακα διαστάσεων με a VenueSkey υποκατάστατο κλειδί. ο VenueSkey Η στήλη συμπληρώνεται αυτόματα με μοναδικές τιμές καθώς προστίθενται νέες σειρές στον πίνακα. Αυτή η στήλη μπορεί στη συνέχεια να χρησιμοποιηθεί για τη σύνδεση του πίνακα χώρων στο FactSaleTransactions πίνακα.

Μερικές συμβουλές για το σχεδιασμό υποκατάστατων κλειδιών:

  • Χρησιμοποιήστε έναν τύπο δεδομένων μικρού, σταθερού πλάτους για το υποκατάστατο κλειδί. Αυτό θα βελτιώσει την απόδοση και θα μειώσει τον αποθηκευτικό χώρο.
  • Χρησιμοποιήστε τη λέξη-κλειδί IDENTITY ή δημιουργήστε το υποκατάστατο κλειδί χρησιμοποιώντας μια διαδοχική τιμή ή τιμή GUID. Αυτό θα διασφαλίσει ότι το υποκατάστατο κλειδί είναι μοναδικό και δεν μπορεί να αλλάξει.

Φορτώστε τον πίνακα φωτεινότητας χρησιμοποιώντας το MERGE

Υπάρχουν πολλοί τρόποι για να φορτώσετε το αμυδρό τραπέζι σας. Πρέπει να ληφθούν υπόψη ορισμένοι παράγοντες—για παράδειγμα, η απόδοση, ο όγκος δεδομένων και ίσως οι χρόνοι φόρτωσης SLA. Με την ΣΥΓΧΩΝΕΥΣΗ δήλωση, εκτελούμε ένα upsert χωρίς να χρειάζεται να καθορίσουμε πολλαπλές εντολές εισαγωγής και ενημέρωσης. Μπορείτε να ρυθμίσετε το ΣΥΓΧΩΝΕΥΣΗ δήλωση σε α αποθηκευμένη διαδικασία για να συμπληρώσετε τα δεδομένα. Στη συνέχεια, προγραμματίζετε την αποθηκευμένη διαδικασία να εκτελεστεί μέσω προγραμματισμού μέσω του προγράμματος επεξεργασίας ερωτημάτων, το οποίο παρουσιάζουμε αργότερα στην ανάρτηση. Ο παρακάτω κώδικας δημιουργεί μια αποθηκευμένη διαδικασία που ονομάζεται SalesMart.DimVenueLoad:

CREATE OR REPLACE PROCEDURE SalesMart.DimVenueLoad()
AS $$
BEGIN
MERGE INTO SalesMart.DimVenue USING public.venue as MergeSource
ON SalesMart.DimVenue.VenueId = MergeSource.VenueId
WHEN MATCHED
THEN
UPDATE
SET VenueName = ISNULL(MergeSource.VenueName, 'Unknown')
, VenueCity = ISNULL(MergeSource.VenueCity, 'Unknown')
, VenueState = ISNULL(MergeSource.VenueState, 'Unknown')
, VenueSeats = ISNULL(MergeSource.VenueSeats, -1)
, UpdatedDate = GETDATE()
WHEN NOT MATCHED
THEN
INSERT (
VenueId
, VenueName
, VenueCity
, VenueState
, VenueSeats
, UpdatedDate
, InsertedDate
)
VALUES (
ISNULL(MergeSource.VenueId, -1)
, ISNULL(MergeSource.VenueName, 'Unknown')
, ISNULL(MergeSource.VenueCity, 'Unknown')
, ISNULL(MergeSource.VenueState, 'Unknown')
, ISNULL(MergeSource.VenueSeats, -1)
, ISNULL(GETDATE() , '1900-01-01')
, ISNULL(GETDATE() , '1900-01-01')
);
END;
$$
LANGUAGE plpgsql;

Μερικές σημειώσεις σχετικά με τη φόρτωση διαστάσεων:

  • Όταν μια εγγραφή εισάγεται για πρώτη φορά, θα συμπληρωθεί η ημερομηνία εισαγωγής και η ενημερωμένη ημερομηνία. Όταν αλλάζουν οποιεσδήποτε τιμές, τα δεδομένα ενημερώνονται και η ενημερωμένη ημερομηνία αντικατοπτρίζει την ημερομηνία κατά την οποία άλλαξε. Η ημερομηνία που εισήχθη παραμένει.
  • Επειδή τα δεδομένα θα χρησιμοποιηθούν από επαγγελματίες χρήστες, πρέπει να αντικαταστήσουμε τις NULL τιμές, εάν υπάρχουν, με περισσότερες τιμές κατάλληλες για τις επιχειρήσεις.

Προσδιορίστε και εφαρμόστε τα γεγονότα

Τώρα που έχουμε δηλώσει ότι το σιτάρι μας είναι το γεγονός μιας πώλησης που πραγματοποιήθηκε σε μια συγκεκριμένη χρονική στιγμή, ο πίνακας στοιχείων μας θα αποθηκεύει τα αριθμητικά στοιχεία για την επιχειρηματική μας διαδικασία.

Προσδιορίσαμε τα ακόλουθα αριθμητικά γεγονότα για μέτρηση:

  • Ποσότητα εισιτηρίων που πωλήθηκαν ανά πώληση
  • προμήθεια για την πώληση

Εφαρμογή του Γεγονός

Υπάρχουν τρεις τύποι πινάκων γεγονότων (πίνακας γεγονότων συναλλαγής, περιοδικός πίνακας γεγονότων στιγμιότυπων και πίνακας γεγονότων συγκεντρωτικών στιγμιοτύπων). Το καθένα εξυπηρετεί μια διαφορετική άποψη της επιχειρηματικής διαδικασίας. Για το παράδειγμά μας, χρησιμοποιούμε έναν πίνακα γεγονότων συναλλαγής. Ολοκληρώστε τα παρακάτω βήματα:

  1. Δημιουργήστε τον πίνακα γεγονότων
CREATE TABLE SalesMart.FactSaleTransactions( 
    CalendarDate date NOT NULL
    ,SaleTransactionTime DATETIME NOT NULL
    ,VenueSkey INT NOT NULL
    ,QuantitySold BIGINT NOT NULL
    ,SaleComission NUMERIC NOT NULL
    ,InsertedDate DATETIME DEFAULT GETDATE()
) diststyle AUTO;

Προστίθεται μια ημερομηνία που έχει εισαχθεί με μια προεπιλεγμένη τιμή, η οποία υποδεικνύει εάν και πότε φορτώθηκε μια εγγραφή. Μπορείτε να το χρησιμοποιήσετε κατά τη φόρτωση εκ νέου του πίνακα γεγονότων για να αφαιρέσετε τα ήδη φορτωμένα δεδομένα για να αποφύγετε τα διπλότυπα.

Η φόρτωση του πίνακα γεγονότων αποτελείται από μια απλή δήλωση εισαγωγής που ενώνει τις συσχετισμένες διαστάσεις σας. Συμμετέχουμε από το DimVenue πίνακα που δημιουργήθηκε, ο οποίος περιγράφει τα γεγονότα μας. Είναι η καλύτερη πρακτική, αλλά προαιρετική ημερολογιακή ημερομηνία διαστάσεις, οι οποίες επιτρέπουν στον τελικό χρήστη να περιηγηθεί στον πίνακα γεγονότων. Τα δεδομένα μπορούν είτε να φορτώνονται όταν υπάρχει νέα πώληση είτε καθημερινά. Εδώ είναι χρήσιμη η ημερομηνία που έχει εισαχθεί ή η ημερομηνία φόρτωσης.

Φορτώνουμε τον πίνακα δεδομένων χρησιμοποιώντας μια αποθηκευμένη διαδικασία και χρησιμοποιούμε μια παράμετρο ημερομηνίας.

  1. Δημιουργήστε την αποθηκευμένη διαδικασία με τον ακόλουθο κώδικα. Για να διατηρήσουμε την ίδια ακεραιότητα δεδομένων που εφαρμόσαμε στο φορτίο ιδιότητας, αντικαθιστούμε τις NULL τιμές, εάν υπάρχουν, με περισσότερες κατάλληλες για την επιχείρηση τιμές:
create or replace procedure SalesMart.FactSaleTransactionsLoad(loadate datetime)
language plpgsql
as
    $$
begin
--------------------------------------------------------------------
/*** Delete records loaded for the day, should there be any ***/
--------------------------------------------------------------------
Delete from SalesMart.FactSaleTransactions
where cast(InsertedDate as date) = CAST(loadate as date);
RAISE INFO 'Deleted rows for load date: %', loadate;
--------------------------------------------------------------------
/*** Insert records ***/
--------------------------------------------------------------------
INSERT INTO SalesMart.FactSaleTransactions (
CalendarDate    
,SaleTransactionTime    
,VenueSkey  
,QuantitySold  
,Salecomission
)
SELECT DISTINCT
    ISNULL(c.caldate, '1900-01-01') as CalendarDate
    ,ISNULL(a.saletime, '1900-01-01') as SaleTransactionTime
    ,ISNULL(b.VenueSkey, -1) as VenueSkey
    ,ISNULL(a.qtysold, 0) as QuantitySold
    ,ISNULL(a.commission, 0) as SaleComission
FROM
    public.sales as a
 
LEFT JOIN SalesMart.DimVenue as b
on a.venueid = b.venueid
 
LEFT JOIN public.DimCalendar as c
on to_char(a.saletime,'YYYYMMDD') = to_char(c.caldate,'YYYYMMDD');
--Optional filter, should you want to load only the latest data from source
--where cast(a.saletime as date) = cast(loadate as date);
  
end;
$$;

  1. Φορτώστε τα δεδομένα καλώντας τη διαδικασία με την ακόλουθη εντολή:
call SalesMart.FactSaleTransactionsLoad(getdate())

Προγραμματίστε τη φόρτωση δεδομένων

Μπορούμε τώρα να αυτοματοποιήσουμε τη διαδικασία μοντελοποίησης προγραμματίζοντας τις αποθηκευμένες διαδικασίες στο Amazon Redshift Query Editor V2. Ολοκληρώστε τα παρακάτω βήματα:

  1. Αρχικά καλούμε το φορτίο διάστασης και μετά την επιτυχή εκτέλεση του φορτίου διάστασης, ξεκινά το φόρτωση δεδομένων:
BEGIN;
----Insert Dim Loads
call SalesMart.DimVenueLoad(); ----Insert Fact Loads. They will only run if the DimLoad is successful
call SalesMart.FactSaleTransactionsLoad(getdate());
END;

Εάν το φορτίο διάστασης αποτύχει, το φορτίο δεδομένων δεν θα εκτελεστεί. Αυτό εξασφαλίζει συνέπεια στα δεδομένα, επειδή δεν θέλουμε να φορτώσουμε τον πίνακα γεγονότων με ξεπερασμένες διαστάσεις.

  1. Για να προγραμματίσετε τη φόρτωση, επιλέξτε Πρόγραμμα στο Query Editor V2.

  1. Προγραμματίζουμε το ερώτημα να εκτελείται καθημερινά στις 5:00 π.μ.
  2. Προαιρετικά, μπορείτε να προσθέσετε ειδοποιήσεις αποτυχίας ενεργοποιώντας Υπηρεσία απλών ειδοποιήσεων Amazon Ειδοποιήσεις (Amazon SNS).

Αναφέρετε και αναλύστε τα δεδομένα στο Amazon Quicksight

Το QuickSight είναι μια υπηρεσία επιχειρηματικής ευφυΐας που διευκολύνει την παροχή πληροφοριών. Ως πλήρως διαχειριζόμενη υπηρεσία, το QuickSight σάς επιτρέπει να δημιουργείτε και να δημοσιεύετε εύκολα διαδραστικούς πίνακες εργαλείων στους οποίους μπορείτε στη συνέχεια να έχετε πρόσβαση από οποιαδήποτε συσκευή και να ενσωματωθούν στις εφαρμογές, τις πύλες και τους ιστότοπούς σας.

Χρησιμοποιούμε το data mart για να παρουσιάσουμε οπτικά τα γεγονότα με τη μορφή πίνακα ελέγχου. Για να ξεκινήσετε και να ρυθμίσετε το QuickSight, ανατρέξτε στο Δημιουργία ενός συνόλου δεδομένων χρησιμοποιώντας μια βάση δεδομένων που δεν ανακαλύπτεται αυτόματα.

Αφού δημιουργήσετε την πηγή δεδομένων σας στο QuickSight, ενώνουμε τα μοντελοποιημένα δεδομένα (data mart) με βάση το υποκατάστατο κλειδί μας skey. Χρησιμοποιούμε αυτό το σύνολο δεδομένων για να οπτικοποιήσουμε το data mart.

Ο τελικός μας πίνακας εργαλείων θα περιέχει τις πληροφορίες σχετικά με την τεχνολογία δεδομένων και θα απαντά σε κρίσιμα επιχειρηματικά ερωτήματα, όπως η συνολική προμήθεια ανά χώρο και οι ημερομηνίες με τις υψηλότερες πωλήσεις. Το παρακάτω στιγμιότυπο οθόνης δείχνει το τελικό προϊόν του data mart.

εκκαθάριση

Για να αποφύγετε μελλοντικές χρεώσεις, διαγράψτε τυχόν πόρους που δημιουργήσατε ως μέρος αυτής της ανάρτησης.

Συμπέρασμα

Έχουμε πλέον εφαρμόσει με επιτυχία ένα data mart χρησιμοποιώντας το δικό μας DimVenue, DimCalendar, να FactSaleTransactions τραπέζια. Η αποθήκη μας δεν είναι πλήρης. καθώς μπορούμε να επεκτείνουμε την αγορά δεδομένων με περισσότερα στοιχεία και να εφαρμόσουμε περισσότερες μάρκες, και καθώς η επιχειρηματική διαδικασία και οι απαιτήσεις αυξάνονται με την πάροδο του χρόνου, το ίδιο θα αυξάνει και η αποθήκη δεδομένων. Σε αυτήν την ανάρτηση, δώσαμε μια ολοκληρωμένη άποψη για την κατανόηση και την εφαρμογή μοντελοποίησης διαστάσεων στο Amazon Redshift.

Ξεκινήστε με το δικό σας Amazon RedShift διαστάσεων μοντέλο σήμερα.


Σχετικά με τους Συγγραφείς

Μπέρναρντ Βέρστερ είναι ένας έμπειρος μηχανικός cloud με χρόνια έκθεσης στη δημιουργία επεκτάσιμων και αποτελεσματικών μοντέλων δεδομένων, στον καθορισμό στρατηγικών ενοποίησης δεδομένων και στη διασφάλιση διακυβέρνησης και ασφάλειας δεδομένων. Είναι παθιασμένος με τη χρήση δεδομένων για την ανάπτυξη γνώσεων, ενώ ευθυγραμμίζεται με τις επιχειρηματικές απαιτήσεις και στόχους.

Abhishek Pan είναι ειδικός της WWSO SA-Analytics που συνεργάζεται με πελάτες του δημόσιου τομέα της AWS India. Συνεργάζεται με πελάτες για να καθορίσει στρατηγική βάσει δεδομένων, να παρέχει συνεδρίες βαθιάς κατάδυσης σε περιπτώσεις χρήσης αναλυτικών στοιχείων και να σχεδιάζει επεκτάσιμες και αποδοτικές αναλυτικές εφαρμογές. Έχει 12 χρόνια εμπειρία και είναι παθιασμένος με τις βάσεις δεδομένων, τα αναλυτικά στοιχεία και την AI/ML. Είναι μανιώδης ταξιδιώτης και προσπαθεί να απαθανατίσει τον κόσμο μέσα από τον φωτογραφικό του φακό.

Σφραγίδα ώρας:

Περισσότερα από Μεγάλα δεδομένα AWS

Η Convoy χρησιμοποιεί το Amazon QuickSight για να βοηθήσει τους αποστολείς και τους μεταφορείς να βελτιώσουν την αποτελεσματικότητα και να εξοικονομήσουν χρήματα με αποφάσεις που βασίζονται σε δεδομένα

Κόμβος πηγής: 1895768
Σφραγίδα ώρας: 4 Ιανουαρίου 2023