2IV60 Computer Graphics set 10: Texture mapping Jack van Wijk TU/e.
1 SQL Model Clausule 28 november 2006 Rob van Wijk.
-
Upload
godelieve-pauwels -
Category
Documents
-
view
212 -
download
0
Transcript of 1 SQL Model Clausule 28 november 2006 Rob van Wijk.
1
SQL Model Clausule
28 november 2006
Rob van Wijk
2
Onderwerpen
• Introductie
• Syntax
Pauze
• Voorbeelden op internet
• Prestaties
• Alternatieven
• Conclusie
3
Introductie
• Uitbreiding op SQL’s SELECT-commando
• Behandel data als multidimensionale arrays
• Complexe berekeningen over rijen heen
• Syntax die lijkt op logisch programmeren (Prolog)
• Voorkom exporteren naar externe applicaties zoals Excel
• Geen meerdere uit de pas lopende kopieën op verschillende PC’s meer
4
Syntax: het basisconcept
• verdeel de kolommen in drie groepen: PARTITION, DIMENSION en MEASURES
• Iedere partitie is een apart array (vergelijk partitie bij analytische functie), partitie is optioneel
• De dimensies identificeren iedere cel in iedere partitie, bijvoorbeeld: sal[7839] = 3000; 7839 is de dimensie
• De meetwaarden zijn analoog aan de feitentabellen in een gegevenspakhuis: typisch numerieke kolommen, bijvoorbeeld: sal[7839] = 3000; sal is meetwaarde
• De regels (RULES) vertellen hoe de data gemanipuleerd moet worden
5
Syntax: eenvoudige voorbeelden
• Een model clausule die niets doet
• Toevoegen van een extra rij aan het resultaat
• RETURN UPDATED ROWS
• Verschil tussen MEASURES en PARTITION
mc1.sql
mc2.sql
mc3.sql
mc4.sql
6
Concept in een plaatje
7
Syntax: meer voorbeelden
• ANY
• CV()
• FOR
• Itereren
• Referentiemodellen
• Verschil NULL en NAV
• IS PRESENT, PRESENTV en PRESENTNNV
mc5.sql
mc6.sql
mc7.sql
mc8.sql
mc9.sql
mc10.sql
mc11.sql
8
Syntax: het complete plaatje
MODEL[<global reference options>][<reference models>][MAIN <main-name>] [PARTITION BY (<cols>)] DIMENSION BY (<cols>) MEASURES (<cols>) [<reference options>] [RULES] <rule options> (<rule>, <rule>,.., <rule>)
<global reference options> ::= <reference options> <ret-opt> <ret-opt> ::= RETURN {ALL|UPDATED} ROWS <reference options> ::= [IGNORE NAV | [KEEP NAV] [UNIQUE DIMENSION | UNIQUE SINGLE REFERENCE] <rule options> ::= [UPDATE | UPSERT | UPSERT ALL] [AUTOMATIC ORDER | SEQUENTIAL ORDER] [ITERATE (<number>) [UNTIL <condition>]] <reference models> ::= REFERENCE ON <ref-name> ON (<query>) DIMENSION BY (<cols>) MEASURES (<cols>) <reference options>
9
Voorbeelden op internet
• Draaitabel (Lucas Jellema)
• Financieel plaatje (Mark Rittman)
• Fibonacci (Anthony Molinaro)
• Nummergenerator (Ant/AskTom)
• OTN-vraag
mc12.sql
mc13.sql
mc14.sql
mc15.sql
mc16.sql
10
Prestaties
• Interne hash-tabellen
• Explain plan
• MODEL {ORDERED [FAST] | ACYCLIC [FAST] | CYCLIC}
• WINDOW (IN MODEL) SORT
mc17.sql
11
Alternatieven
• Vorige voorbeelden mc2a.sql t/m mc16a.sql
12
Conclusies
• Hoge leercurve
• Belasting van CPU en geheugen, niet van de schijven
• Er is ontzettend veel meer mogelijk in SQL, dankzij de modelclausule
• Geschikt voor vooruitberekeningen / budgetteringen
• SQL is zonder de modelclausule vaak al goed genoeg voor de dagelijkse praktijk