• 29.04.2020
  • 4 minute de citit

In acest articol

Acest ghid va explica cum sa luati o schema de baza de date normalizata existenta in baza de date SQL Azure si sa o convertiti intr-o schema denormalizata Azure CosmosDB pentru incarcare in Azure CosmosDB.

Schemele SQL sunt de obicei modelate folosind a treia forma normala, rezultand scheme normalizate care ofera niveluri ridicate de integritate a datelor si mai putine valori de date duplicate. Interogarile pot alatura entitatilor impreuna in tabele pentru citire. CosmosDB este optimizat pentru tranzactii si interogari super-rapide intr-o colectie sau container prin intermediul schemelor denormalizate cu date independente intr-un document.

Folosind Azure Data Factory, vom construi o conducta care utilizeaza un singur flux de date de mapare pentru a citi din doua tabele normalizate Azure SQL Database care contin chei primare si externe ca relatie de entitate. ADF va alatura aceste tabele intr-un singur flux folosind motorul Spark al fluxului de date, va colecta randurile unite in matrici si va produce documente individuale curatate pentru a fi introduse intr-un nou container Azure CosmosDB.

Acest ghid va construi un container nou din mers numit „comenzi” care va utiliza tabelele SalesOrderHeader si SalesOrderDetail din baza de date esantion standard SQL Server AdventureWorks. Aceste tabele reprezinta tranzactii de vanzare alaturate de SalesOrderID. Fiecare inregistrare de detaliu unica are propria sa cheie principala SalesOrderDetailID. Relatia dintre antet si detaliu este 1: M. Ne vom alatura pe SalesOrderID in ADF si apoi vom rula fiecare inregistrare de detaliu aferenta intr-o matrice numita „detaliu”.

Interogarea SQL reprezentativa pentru acest ghid este:

Selectati o.SalesOrderID, o.OrderDate, o.Status, o.ShipDate, o.SalesOrderNumber, o.ShipMethod, o.SubTotal, (selectati SalesOrderDetailID, UnitPrice, OrderQty din SalesLT.SalesOrderDetail od unde od.SalesOrderID = o.SalesOrderID json auto) ca OrderDetails FROM SalesLT.SalesOrderHeader o;

Containerul CosmosDB rezultat va incorpora interogarea interioara intr-un singur document si va arata astfel:

Creati o conducta

  1. Selectati + conducta noua pentru a crea o conducta noua.

  2. Adaugati o activitate de flux de date

  3. In activitatea fluxului de date, selectati Flux de date de cartografiere nou .

  4. Vom construi acest grafic al fluxului de date mai jos

  1. Definiti sursa pentru „SourceOrderDetails”. Pentru setul de date, creati un nou set de date Azure SQL Database care indica tabelul SalesOrderDetail.

  2. Definiti sursa pentru „SourceOrderHeader”. Pentru setul de date, creati un nou set de date Azure SQL Database care indica tabelul SalesOrderHeader.

  3. In sursa de sus, adaugati o transformare Coloana derivata dupa „SourceOrderDetails”. Apelati noua transformare „TypeCast”. Trebuie sa rotunjim coloana UnitPrice si sa o aruncam la un tip de date dublu pentru CosmosDB. Setati formula la: toDouble (rotund (UnitPrice, 2)).

  4. Adaugati o alta coloana derivata si numiti-o „MakeStruct”. Aici vom crea o structura ierarhica pentru a pastra valorile din tabelul de detalii. Amintiti-va, detaliile sunt o relatie M: 1 cu antetul. Denumiti noua structura orderdetailsstruct si creati ierarhia in acest fel, setand fiecare subcolon pe numele coloanei primite:

  1. Acum, sa mergem la sursa antetului de vanzari. Adaugati o transformare Join. Pentru partea dreapta, selectati „MakeStruct”. Lasati-l setat la imbinare interioara si alegeti SalesOrderID pentru ambele parti ale conditiei de imbinare.

  2. Faceti clic pe fila Previzualizare date in noua alaturare pe care ati adaugat-o, astfel incat sa puteti vedea rezultatele dvs. pana in acest moment. Ar trebui sa vedeti toate randurile de antet unite cu randurile de detalii. Acesta este rezultatul formarii unirii din SalesOrderID. Apoi, vom combina detaliile din randurile comune in structura de detalii si vom agrega randurile comune.

  1. Inainte de a putea crea matricile pentru denormalizarea acestor randuri, trebuie mai intai sa eliminam coloanele nedorite si sa ne asiguram ca valorile datelor se vor potrivi cu tipurile de date CosmosDB.

  2. Adaugati o transformare Selectati in continuare si setati maparea campului sa arate astfel:

  1. Acum, sa aruncam din nou o coloana valutara, de data aceasta TotalDue. Asa cum am facut mai sus la pasul 7, setati formula la: toDouble (round (TotalDue, 2)).

  2. Aici vom denormaliza randurile prin gruparea dupa cheia comuna SalesOrderID. Adaugati o transformare agregata si setati grupul la SalesOrderID.

  3. In formula agregata, adaugati o noua coloana numita „detalii” si utilizati aceasta formula pentru a colecta valorile din structura pe care am creat-o anterior numita orderdetailsstruct: collect (orderdetailsstruct).

  4. Transformarea agregatului va genera numai coloane care fac parte din agregat sau grupeaza dupa formule. Deci, trebuie sa includem si coloanele din antetul de vanzari. Pentru aceasta, adaugati un model de coloana in aceeasi transformare agregata. Acest model va include toate celelalte coloane din iesire:

instr (nume, ‘OrderQty’) == 0 && instr (nume, ‘UnitPrice’) == 0 && instr (nume, ‘SalesOrderID’) == 0

  1. Utilizati sintaxa „aceasta” in celelalte proprietati, astfel incat sa mentinem aceleasi nume de coloane si sa folosim functia first () ca agregat:
  1. Suntem gata sa finalizam fluxul de migratie adaugand o transformare la chiuveta. Faceti clic pe „nou” langa setul de date si adaugati un set de date CosmosDB care indica baza de date CosmosDB. Pentru colectie, o vom numi „comenzi” si nu va avea nici o schema si nici documente, deoarece va fi creata din mers.

  2. In Setari chiuveta, cheie de partitie pentru \ SalesOrderID si actiune de colectare pentru a „recrea”. Asigurati-va ca fila de mapare arata astfel:

  1. Faceti clic pe previzualizarea datelor pentru a va asigura ca vedeti aceste 32 de randuri setate pentru a insera ca documente noi in noul dvs. container:

Daca totul arata bine, acum sunteti gata sa creati o noua conducta, adaugati aceasta activitate de flux de date la acea conducta si executati-o. Puteti executa de la depanare sau de la o rulare declansata. Dupa cateva minute, ar trebui sa aveti un nou container denormalizat de comenzi numite „comenzi” in baza de date CosmosDB.

Pasii urmatori

  • Construiti restul logicii fluxului de date prin maparea transformarilor fluxurilor de date.
  • Descarcati sablonul de conducte completat pentru acest tutorial si importati sablonul in fabrica.

cento x cento orgia hannah vivienne
italiana con negro porno hard academy
luna ramondini porno hard academy 3
infermiera trans hard academy porn
centox cento hard academy rocco
christian clay porn hard academy rocco siffredi
porno noire hard academy siffredi
siffredi accademy hard academy streaming
centxcento hard academy video
siffredi hard hard accademy
alex magni videos hard malena
gemma roberta porno hard tube italian
xxx porn italian hd italia porno
fragile7883 video porno hd italian porn
video streaming xxx hd porn italian
100×100 xxx hd porn streaming
porno accademy hd streaming porn
porno movie italian hdporn69
porno valentina nappi e rocco siffredi ho sempre voglia
porno emanuelle ho sempre voglia di cazzo