DWH

Tipy & Triky – 12. díl

Tentokrát projdu moje tipy a triky, které by se mohly někomu hodit. Jde o spíš o maličkosti, které ulehčují práci.

Rychlá záloha tabulky

Prvním tipem je rychlá záloha tabulky.

/* Zazálohování tabulky do schématu bck*/
SELECT *
INTO bck.BACKUP_DIM_CALENDAR_20231124
FROM l2.DIM_CALENDAR;
 
SELECT *
FROM bck.BACKUP_DIM_CALENDAR_20231124

Kontrola že jsem nic nepokazil

Když dělám, nějakou změnu a ovlivní jen určitou část tabulky. Kontroluji si, že jsem nezměnil počet řádků a sedí na sebe hodnoty. Ukážu to na tabulce vytvořené v minulém kroku.

/* Kontrola na počet záznamů */
SELECT COUNT(1) AS CNT
FROM l2.DIM_CALENDAR;
 
SELECT COUNT(1) AS CNT
FROM bck.BACKUP_DIM_CALENDAR_20231124
 
 
/* Kontrola na hodnoty ve sloupcích - typicky je nutné udělat výčet sloupců a vyloučit upravované */
SELECT *
FROM l2.DIM_CALENDAR
 
EXCEPT
 
SELECT *
FROM bck.BACKUP_DIM_CALENDAR_20231124

Tipy s WHERE

Když píšu WHERE a často měním podmínky napíšu za WHERE 1 = 1 a s každou novou podmínkou pokračuji na novém řádku. Pak můžu jednoduše zakomentovat podmínku, kterou nechci použít.

Pokud chci z nějakého důvodu dotazu říct, aby nevracel žádná data – třeba z nějakého dočasného důvodu. Stačí jen do WHERE napsat 1 = 2.

SELECT *
FROM l2.DIM_CALENDAR cal
WHERE 1 = 1
	AND cal.FLAG_WORKING_DAY = 1 /* Pracovní dny*/
	AND cal.DIM_CALENDAR_DATE BETWEEN '2023-11-01' AND '2023-11-30' /* Listopad 2023 */
	AND WEEK_DAY = 5 /* Pátek */
 
SELECT *
FROM l2.DIM_CALENDAR cal
WHERE 1 = 2

VALUES

Jiště jste si všimli klauzule VALUES při INSERTování záznamů. Nicméně se dá použít třeba i ve FROM nebo JOIN.

SELECT src.IID, src.TNAME
FROM (VALUES ('KOKOS', 5), ('Palma', 3), ('Ostrov', 1)) AS src(TNAME, IID)

Generování číselné řady bez rekurze

Někdy se hodí možnost vygenerovat čísla od 1 do x po sobě jdoucí. Lze to udělat rekurzí, ale existuje i způsob pomocí VALUES.

SELECT ones.N + 10*tens.N + 100*hundreds.N + 1000*thousands.N + 10000*tenthousands.N + 100000*hundredthousands.N + 1000000*milions.N AS N
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) thousands(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tenthousands(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundredthousands(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) milions(n)
ORDER BY 1

Spuštění SQL vícekrát v MSSQL

V MSSQL lze použít příkaz GO <x> pro spuštění předchozího SQL x-krát.

Stack overflow DB

Se StackOverFlow jste se jistě všichni setkali. Víte, ale že existuje mají volně dostupnou databázi v MSSQL na StackExchange, kde se lze zkoušet SQL?

Psaní na více řádků najednou

Ve většině IDE lze psát stejné informace na více řádků najednou. Jak toho docílit bývá někdy specifické. Ovšem nejčastěji se dá psát na více řádků pomocí zmáčknutí klávesy ALT a označení řádků na které chci psát myší. Je to velmi užitečné například pro dopsání uvozovek, case, atd.

Také je dobré si osvojit funkci najít a nahradit, včetně regex výrazů, kterou IDE podporují. Zajímavá je také možnost nahrát si makro v notepad++ . Hodí se pokud stejnou úpravu dělám například ob řádek.

Batch co spouští programy

Toto už není SQL tip, ale přišlo mi dobré ho sem zařadit. Protože při startu počítače (když dojde na to, že ho vypnu) se mi nechce ručně klikat na programy, tak jsem si na to napsal batch (ano je to na windows, ale na linuxu to bude velmi obdobné) co to udělá za mě. Batch pak vložím do adresáře po spuštění a OS ho bude po startu spouštět automaticky.

timeout 5
start "" C:\Programs\Vivaldi\Application\vivaldi.exe
 
timeout 10
start "" "C:\Program Files (x86)\Microsoft SQL Server Management Studio 19\Common7\IDE\Ssms.exe"
 
timeout 10
start "" "C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE"
 
timeout 10
start "" "C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2.1\bin\idea64.exe"
 
timout 10
start "" c:\Programs\totalcmd\TOTALCMD64.EXE
 
timeout 10
exit

Programy by šly loadovat i z nějakého config souboru, ale tohle bohatě stačí. No a už víte v čem dělám. Než se zapne PC a spustí se programy mám akorát hotové kafe 😉

Doporučené články

Předchozí články

Co je to datový sklad (DWH)? – 1. díl

Základní tipy v datovém skladu (DWH) – 2. díl

Vrstvy datového skladu (DWH) – 3. díl

SELECT – 4.díl

SQL funkce a DML – 5. díl

Dimenze – 6. díl

Fakta – 7. díl

Pojmenovávání a dokumentace – 8. díl

Orchestrace – 9. díl

Pokročilé agregační funkce – 10. díl

Surrogate key – 11. díl

Příklady

k článku Tipy&Triky

SELECT dotazování – 2. příklady

User-defined funkce – 3. příklady

Dimenze – 4. příklady

Fakta – 5. příklady

Windowed functions – 6. příklady

DWH, SQL & BI tutorials Website dwhguru.eu Email info@dwhguru.eu

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *