Jak spustit proceduru SQL v Excelu

Rovnou na začátku říkám jde to, ale příliš tento postup moc nedoporučuji (ale stejně ho sem dám) :). Obecně spouštění dotazů SQL v Excelu není optimální, ale někdy není zbytí. Tento návod je určen pokročilým uživatelům Excelu se znalostmi SQL, není určen pro začátečníky ani mírně pokročilé.

Pokud jste power user a v Excelu máte analytiku, může se vám to hodit pro automatizaci Excel reportů ;). Nota bene pokud se vám nechce dělat report v Power BI nebo PowerPivot, což je mimochodem dobrá volba pro import dat z databáze.

1 Vytvoření jednoduché procedury v SQL Server

Po demonstraci si vytvořme primitivní proceduru, která bude vracet tržby po měsících. Vstupními parametry do této procedury bude:

  • @DATE_FROM – Datum od kterého chceme tržby počítat
  • @DATE_TO – Datum do kterého chceme tržby počítat

Cílem je proceduru volat s parametry tak, aby nám vracela výsledky pouze za období, které chceme sledovat. Pokud to nedáte, poproste někoho z IT 🙂

SQL procedura může vypadat nějak takto:

CREATE PROCEDURE Get_Sales (@DATE_FROM DATE, @DATE_TO DATE)
AS
BEGIN
  SELECT
    b.CalendarYear,
    b.MonthNumberOfYear,
    SUM(SalesAmount) AS SalesAmount
  FROM AdventureWorksDW2014.dbo.FactInternetSales a join AdventureWorksDW2014.dbo.DimDate b
        on a.OrderDateKey=b.DateKey
  WHERE b.FullDateAlternateKey BETWEEN @DATE_FROM AND @DATE_TO
  GROUP BY
    b.CalendarYear,
    b.MonthNumberOfYear
END;

…a otestujeme, že procedura funguje OK:

EXEC dbo.Get_Sales '2013-01-01','2013-02-28'

SQL v Excelu

2 Napojení SQL Procedury do Excelu

Nejdříve si Excel nachystáme. Otevřeme si ho a připravíme si vstupní parametry pro proceduru, které budou 2 (Datum_Od a Datum_Do). Tyto parametry budeme moci později měnit a procedura nám na základě toho bude vracet výsledky z databáze.

Dále klikneme na Data – Z jiných zdrojů – Z Microsoft Query

Vybereme Nový zdroj dat

Nový zdroj si pojmenujeme a jako ovladač zvolíme „ODBC Driver 11 for SQL Server“, potom klikneme na „3 Pripojit“

Do pole Server napíšeme název SQL instance a použijeme Trusted connection

Následně vše potvrdíme, a až se dostaneme na okno „Průvodce dotazem – volba sloupců“ dáme Cancel

Následující okno „Pridat tabulky“ zavřeme také, chceme se dostat do rozhraní kam si můžeme napsat vlastní SQL dotaz

Na následující obrazovce klikneme na tlařítko SQL (označeno červeně) a do SQL Dotazu napíšeme:

{CALL Temp.dbo.Get_Sales (?,?)}

Následně potvrdíme OK a potvrdíme OK i následující 3 okna: a) Opravdu chcete potvrdit… b) Parametr 1 necháme prázdný c) Parametr 2 necháme prázdný. Poté bychom se měli dostat do tohoto stavu:

Dáme Ok a následně po nás Excel chce odkázad na buňky s parametry. Parametr 1 nastavíme na Datum Od (buňka B1) a Parametr 2 na Datum Do (buňka B2)

Poté potvrdíme a je HOTOVO, Excel Načítá data a máme nastavenou proceduru SQL v Excelu

a následně vrací výsledek. Teď máme nachystaný Excel, který komunikuje se SQL Server databází a vrací nám tržby na základě datumů v Excel buňkách B1 a B2

Reagovat na příspěvek