Mittamallinnus Amazon Redshiftissä | Amazon Web Services

Mittamallinnus Amazon Redshiftissä | Amazon Web Services

Lähdesolmu: 2778508

Amazonin punainen siirto on täysin hallittu ja petatavun mittakaavainen pilvitietovarasto, jota kymmenet tuhannet asiakkaat käyttävät päivittäin eksatavujen datan käsittelyyn analytiikkatyönsä tehostamiseksi. Voit jäsentää tietosi, mitata liiketoimintaprosesseja ja saada nopeasti arvokkaita näkemyksiä voidaan tehdä dimensiomallin avulla. Amazon Redshift tarjoaa sisäänrakennettuja ominaisuuksia, jotka nopeuttavat mallintamista, organisointia ja raportointia ulottuvuusmallista.

Tässä viestissä keskustelemme dimensiomallin toteuttamisesta, erityisesti Kimballin metodologia. Keskustelemme ulottuvuuksien ja tosiasioiden toteuttamisesta Amazon Redshiftissä. Näytämme, kuinka suorittaa erotus, muunnos ja lataus (ELT), integrointiprosessi, joka keskittyy raakadatan saamiseen datajärvestä vaiheittaiseen kerrokseen mallinnuksen suorittamista varten. Kaiken kaikkiaan viesti antaa sinulle selkeän käsityksen siitä, kuinka mitata mallinnusta käytetään Amazon Redshiftissä.

Ratkaisun yleiskatsaus

Seuraava kaavio kuvaa ratkaisuarkkitehtuuria.

Seuraavissa osioissa käsittelemme ja esittelemme ensin ulottuvuusmallin avainnäkökohtia. Sen jälkeen luomme Amazon Redshiftillä datakaupan, jossa on ulottuvuus- ja faktataulukot sisältävä tietomalli. Tiedot ladataan ja vaiheistetaan käyttämällä COPY -komentoa, mittojen tiedot ladataan käyttämällä YHDISTÄÄ lausunto, ja tosiasiat liitetään ulottuvuuksiin, joista oivallukset ovat peräisin. Suunnittelemme mittojen ja faktojen latauksen käyttämällä Amazon Redshift Query Editor V2. Lopuksi käytämme Amazon QuickSight saadaksesi näkemyksiä mallinnetuista tiedoista QuickSight-hallintapaneelin muodossa.

Tässä ratkaisussa käytämme Amazon Redshiftin toimittamaa (normalisoitua) näytetietoa tapahtumalippujen myyntiin. Tätä viestiä varten olemme kaventaneet tietojoukkoa yksinkertaisuuden ja esittelyn vuoksi. Seuraavissa taulukoissa on esimerkkejä lipunmyyntiä ja tapahtumapaikkoja koskevista tiedoista.

Mukaan Kimballin ulottuvuusmallinnuksen metodologia, mittamallin suunnittelussa on neljä avainvaihetta:

  1. Tunnista liiketoimintaprosessi.
  2. Ilmoita tietojesi tarkkuus.
  3. Tunnista ja toteuta mitat.
  4. Tunnista ja toteuta tosiasiat.

Lisäksi lisäämme demonstraatiotarkoituksiin viidennen vaiheen, joka on raportoida ja analysoida liiketapahtumia.

Edellytykset

Tätä kävelyä varten sinulla tulisi olla seuraavat edellytykset:

Tunnista liiketoimintaprosessi

Yksinkertaisesti sanottuna liiketoimintaprosessin tunnistaminen on mitattavissa olevan tapahtuman tunnistamista, joka tuottaa tietoa organisaatiossa. Yleensä yrityksillä on jonkinlainen toimiva lähdejärjestelmä, joka tuottaa tiedot raakamuodossaan. Tämä on hyvä lähtökohta erilaisten liiketoimintaprosessien lähteiden tunnistamiseen.

Liiketoimintaprosessia jatketaan sitten a data mart ulottuvuuksien ja tosiasioiden muodossa. Katsomalla aiemmin mainittua näytetietoaineistoamme voimme selvästi nähdä, että liiketoimintaprosessi on tietyn tapahtuman myynti.

Yleinen virhe on yrityksen osastojen käyttäminen liiketoimintaprosessina. Data (liiketoimintaprosessi) on integroitava eri osastojen kesken, jolloin markkinointi pääsee käsiksi myyntitietoihin. Oikean liiketoimintaprosessin tunnistaminen on ratkaisevan tärkeää – tämän vaiheen virheellinen tekeminen voi vaikuttaa koko tietokauppaan (se voi aiheuttaa viljan monistumista ja vääriä mittareita loppuraporteissa).

Ilmoita tietojesi tarkkuus

Viljan ilmoittaminen tarkoittaa tietueen yksilöllistä tunnistamista tietolähteessäsi. Jyviä käytetään tietotaulukossa mittaamaan tiedot tarkasti ja mahdollistamaan niiden rullaaminen eteenpäin. Esimerkissämme tämä voi olla myyntiliiketoimintaprosessin rivikohta.

Meidän käyttötapauksessamme myynti voidaan tunnistaa yksiselitteisesti tarkastelemalla kaupantekoajankohtaa, jolloin myynti tapahtui; tämä on atomisin taso.

Tunnista ja toteuta mitat

Dimensiotaulukkosi kuvaa tietotaulukkoasi ja sen attribuutteja. Kun tunnistat liiketoimintaprosessisi kuvaavaa kontekstia, tallennat tekstin erilliseen taulukkoon pitäen mielessä faktataulukon rakeisuuden. Kun liität mittataulukon tietotaulukkoon, tietotaulukkoon tulee liittää vain yksi rivi. Esimerkissämme käytämme seuraavaa taulukkoa erottaaksemme mittataulukon; nämä kentät kuvaavat tosiasiat, joita mittaamme.

Suunnitellessasi ulottuvuusmallin (skeeman) rakennetta voit luoda joko a tähti or lumihiutale kaava. Rakenteen tulee olla tiiviisti linjassa liiketoimintaprosessin kanssa; siksi tähtiskeema sopii parhaiten esimerkkiimme. Seuraava kuva esittää entiteettisuhdekaaviomme (ERD).

Seuraavissa osioissa kerromme yksityiskohtaisesti mittojen toteuttamisen vaiheet.

Lavasta lähdetiedot

Ennen kuin voimme luoda ja ladata mittataulukon, tarvitsemme lähdetiedot. Siksi lavastamme lähdetiedot väli- tai väliaikaistaulukkoon. Tätä kutsutaan usein nimellä lavastuskerros, joka on raakakopio lähdetiedoista. Käytämme tätä Amazon Redshiftissä COPY-komento ladataksesi tiedot dimensio-mallinnus-in-amazon-redshift julkisesta S3-säilöstä, joka sijaitsee us-east-1 Alue. Huomaa, että COPY-komento käyttää an AWS-henkilöllisyyden ja käyttöoikeuksien hallinta (IAM) rooli pääsy Amazon S3:een. Roolin pitää olla liittyy klusteriin. Suorita seuraavat vaiheet asettaaksesi lähdetiedot:

  1. Luo venue lähdetaulukko:
CREATE TABLE public.venue ( venueid bigint, venuename character varying(100), venuecity character varying(30), venuestate character(2), venueseats bigint
) DISTSTYLE AUTO SORTKEY (venueid);

  1. Lataa tapahtumapaikan tiedot:
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. Luo sales lähdetaulukko:
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. Lataa myynnin lähdetiedot:
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. Luo calendar taulukossa:
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. Lataa kalenteritiedot:
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

Luo mittataulukko

Mittataulukon suunnittelu voi riippua yrityksesi tarpeista – onko esimerkiksi tarpeen seurata tietojen muutoksia ajan mittaan? On seitsemän eri mittatyyppiä. Esimerkiksi käytämme tyyppi 1 koska meidän ei tarvitse seurata historiallisia muutoksia. Lisätietoja tyypistä 2 on kohdassa Yksinkertaista tietojen lataaminen tyypin 2 hitaasti muuttuviin mittoihin Amazon Redshiftissä. Mittataulukon normalisointi poistetaan ensisijaisella avaimella, korvikeavaimella ja muutamalla lisätyllä kentällä, joka ilmaisee taulukkoon tehdyt muutokset. Katso seuraava koodi:

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;

Muutama huomautus mittataulukon luomisesta:

  • Kenttien nimet muunnetaan yritysystävällisiksi nimiksi
  • Ensisijainen avaimemme on VenueID, jonka avulla tunnistamme yksilöllisesti tapahtumapaikan, jossa myynti tapahtui
  • Kaksi ylimääräistä riviä lisätään, jotka osoittavat, milloin tietue lisättiin ja päivitettiin (muutosten seuraamiseksi)
  • Käytämme an AUTO jakelutyyli antaa Amazon Redshiftille vastuun valita ja säätää jakelutyyliä

Toinen tärkeä tekijä, joka on otettava huomioon mittamallintamisessa, on sen käyttö sijaisavaimet. Korvaavat avaimet ovat keinotekoisia avaimia, joita käytetään dimensiomallintamisessa yksilöimään jokainen dimensiotaulukon tietue. Ne luodaan yleensä peräkkäisinä kokonaislukuina, eikä niillä ole liiketoiminta-alueella mitään merkitystä. Ne tarjoavat useita etuja, kuten ainutlaatuisuuden varmistamisen ja liitosten suorituskyvyn parantamisen, koska ne ovat tyypillisesti pienempiä kuin luonnolliset avaimet, eivätkä korvikeavaimet muutu ajan myötä. Näin voimme olla johdonmukaisia ​​ja yhdistää tosiasiat ja ulottuvuudet helpommin.

Amazon Redshiftissä korvaavat avaimet luodaan tyypillisesti IDENTITY-avainsanalla. Esimerkiksi edellinen CREATE-käsky luo dimensiotaulukon, jossa on a VenueSkey sijaisavain. The VenueSkey sarake täytetään automaattisesti yksilöllisillä arvoilla, kun uusia rivejä lisätään taulukkoon. Tätä saraketta voidaan sitten käyttää tapahtumapaikan taulukon liittämiseen FactSaleTransactions pöytä.

Muutamia vinkkejä korvaavainten suunnitteluun:

  • Käytä korvikeavaimena pientä, kiinteän levyistä tietotyyppiä. Tämä parantaa suorituskykyä ja vähentää tallennustilaa.
  • Käytä avainsanaa IDENTITY tai luo korvaava avain käyttämällä peräkkäistä tai GUID-arvoa. Tämä varmistaa, että korvikeavain on ainutlaatuinen eikä sitä voi muuttaa.

Lataa himmennystaulukko Yhdistämistoiminnolla

On olemassa lukuisia tapoja ladata himmeä taulukko. Tietyt tekijät on otettava huomioon, esimerkiksi suorituskyky, datamäärä ja ehkä SLA-latausajat. Kanssa YHDISTÄÄ -lauseessa suoritamme upsertin ilman, että tarvitsee määrittää useita insert- ja päivityskomentoja. Voit määrittää YHDISTÄÄ lausunto kohdassa a tallennettu menettely täyttääksesi tiedot. Ajoitat sitten tallennetun toimenpiteen suoritettavaksi ohjelmallisesti kyselyeditorin kautta, jonka esittelemme myöhemmin viestissä. Seuraava koodi luo tallennetun proseduurin nimeltä 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;

Muutama huomautus mittalatauksesta:

  • Kun tietue lisätään ensimmäistä kertaa, lisätty päivämäärä ja päivitetty päivämäärä täytetään. Kun arvot muuttuvat, tiedot päivitetään ja päivitetty päivämäärä vastaa päivämäärää, jolloin niitä muutettiin. Lisätty päivämäärä säilyy.
  • Koska dataa käyttävät yrityskäyttäjät, meidän on korvattava NULL-arvot, jos niitä on, liiketoimintaan soveltuvammilla arvoilla.

Tunnista ja toteuta tosiasiat

Nyt kun olemme ilmoittaneet viljamme myyntitapahtumaksi, joka tapahtui tiettynä ajankohtana, tietotaulukkomme tallentaa liiketoimintaprosessimme numeeriset tosiasiat.

Olemme tunnistaneet seuraavat numeeriset tosiasiat mitattaviksi:

  • Myytyjen lippujen määrä myyntiä kohden
  • Provisio myynnistä

Faktan toteuttaminen

On kolmen tyyppisiä faktataulukoita (tapahtumatietotaulukko, jaksollinen tilannekuvatietotaulukko ja kertyvä tilannekuvatietotaulukko). Jokainen tarjoaa erilaisen näkemyksen liiketoimintaprosessista. Esimerkkissämme käytämme tapahtumatietotaulukkoa. Suorita seuraavat vaiheet:

  1. Luo faktataulukko
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;

Lisätään oletusarvolla varustettu päivämäärä, joka osoittaa, ladattiinko tietue ja milloin se on ladattu. Voit käyttää tätä, kun lataat tietotaulukkoa uudelleen poistaaksesi jo ladatut tiedot päällekkäisyyksien välttämiseksi.

Faktataulukon lataaminen koostuu yksinkertaisesta lisäyslauseesta, joka yhdistää siihen liittyvät mitat. Liitymme alkaen DimVenue luotu taulukko, joka kuvaa tosiasioitamme. Se on paras käytäntö, mutta valinnainen kalenterin päivämäärä mitat, joiden avulla loppukäyttäjä voi navigoida tietotaulukossa. Tiedot voidaan ladata joko uuden myynnin yhteydessä tai päivittäin; tässä on lisätty päivämäärä tai latauspäivämäärä hyödyllinen.

Lataamme faktataulukon käyttämällä tallennettua proseduuria ja käytämme päivämääräparametria.

  1. Luo tallennettu toimintosarja seuraavalla koodilla. Säilyttääksemme saman datan eheyden, jota käytimme mittakuormituksessa, korvaamme mahdolliset NULL-arvot liiketoimintaan soveltuvammilla arvoilla:
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. Lataa tiedot kutsumalla proseduuri seuraavalla komennolla:
call SalesMart.FactSaleTransactionsLoad(getdate())

Ajoita tietojen lataus

Voimme nyt automatisoida mallinnusprosessin ajoittamalla tallennetut menettelyt Amazon Redshift Query Editor V2:ssa. Suorita seuraavat vaiheet:

  1. Kutsumme ensin mittakuorman ja kun mittakuorma on suoritettu onnistuneesti, tosiasialataus alkaa:
BEGIN;
----Insert Dim Loads
call SalesMart.DimVenueLoad(); ----Insert Fact Loads. They will only run if the DimLoad is successful
call SalesMart.FactSaleTransactionsLoad(getdate());
END;

Jos mittakuorma epäonnistuu, faktakuormitusta ei suoriteta. Tämä varmistaa tietojen johdonmukaisuuden, koska emme halua ladata tietotaulukkoon vanhentuneita ulottuvuuksia.

  1. Ajoita lataus valitsemalla Aikataulu Kyselyeditorissa V2.

  1. Ajoitamme kyselyn suoritettavaksi joka päivä klo 5.
  2. Valinnaisesti voit lisätä virheilmoituksia ottamalla käyttöön Amazonin yksinkertainen ilmoituspalvelu (Amazon SNS) ilmoitukset.

Raportoi ja analysoi tiedot Amazon Quicksightissa

QuickSight on business intelligence -palvelu, jonka avulla on helppo toimittaa oivalluksia. Täysin hallittavana palveluna QuickSightin avulla voit helposti luoda ja julkaista interaktiivisia hallintapaneeleja, joita voi sitten käyttää miltä tahansa laitteelta ja upottaa sovelluksiisi, portaaleihin ja verkkosivustoihin.

Käytämme datakauppaamme esitelläksemme tosiasiat visuaalisesti kojelaudan muodossa. Aloita ja ota QuickSight käyttöön kohdasta Tietojoukon luominen tietokannan avulla, jota ei löydy automaattisesti.

Kun olet luonut tietolähteesi QuickSightissa, yhdistämme mallinnetut tiedot (data mart) yhteen korvikeavaimemme perusteella. skey. Käytämme tätä tietojoukkoa datamarkkinoiden visualisointiin.

Lopun hallintapaneelimme sisältää näkemyksiä datamarkkinoista ja vastaa kriittisiin liiketoimintakysymyksiin, kuten kokonaispalkkioon tapahtumapaikkaa kohden ja suurimman myynnin päivämäärät. Seuraavassa kuvakaappauksessa näkyy datamarketin lopputuote.

Puhdistaa

Vältä tulevia maksuja poistamalla kaikki resurssit, jotka olet luonut osana tätä viestiä.

Yhteenveto

Olemme nyt onnistuneesti ottaneet käyttöön datakaupan käyttämällä meidän DimVenue, DimCalendarja FactSaleTransactions taulukoita. Varastomme ei ole täydellinen; Kun voimme laajentaa datamarkkinoita lisäämällä faktoja ja toteuttaa enemmän martteja, ja kun liiketoimintaprosessit ja vaatimukset kasvavat ajan myötä, myös tietovarasto kasvaa. Tässä viestissä annoimme päästä päähän -näkemyksen ulottuvuusmallinnuksen ymmärtämisestä ja toteuttamisesta Amazon Redshiftissä.

Aloita kanssasi Amazonin punainen siirto mittainen malli tänään.


Tietoja Tekijät

Bernard Verster on kokenut pilvi-insinööri, jolla on vuosien kokemus skaalautuvien ja tehokkaiden tietomallien luomisesta, tietojen integrointistrategioiden määrittelystä sekä tiedonhallinnan ja -turvallisuuden varmistamisesta. Hän on intohimoinen käyttämään dataa oivallusten saamiseksi samalla kun se vastaa liiketoiminnan vaatimuksia ja tavoitteita.

Abhishek Pan on WWSO-asiantuntija SA-Analytics, joka työskentelee AWS Intian julkisen sektorin asiakkaiden kanssa. Hän tekee yhteistyötä asiakkaiden kanssa määrittääkseen dataan perustuvan strategian, tarjotakseen syvällisiä sukellusistuntoja analytiikan käyttötapauksista ja suunnitellakseen skaalautuvia ja tehokkaita analyyttisiä sovelluksia. Hänellä on 12 vuoden kokemus ja hän on intohimoinen tietokantoihin, analytiikkaan ja tekoälyyn/ML:ään. Hän on innokas matkustaja ja yrittää vangita maailmaa kameransa läpi.

Aikaleima:

Lisää aiheesta AWS Big Data