Jako business intelligence vývojář, který si hraje s ChatGPT se dívám na různé scénáře, které mi mohou pomoci při práci. Zcela jistě mezi tyto scénáře patří například pomoc při psaní kódu (třeba v pythonu), reverzní engineering kódu, zevrubný návrh rozpadu nějaké epicu/storky/projektu do JIRY nebo třeba finanční analýza společnosti? Jasně. Pro tyhle scénáře používám chatGPT často. Dnes bych chtěl otestovat jak si chatGPT poradí s návrhem datového skladu. U aplikace bych postupoval obdobně.

ChatGPT datový model skladu nebo databáze

Mým očekáváním nebude dostat hotový model, ale pokud bych ChatGPT pro tento scénář někdy použil, snažil bych se spíše si ušetřit čas. To znamená očekávám nějakou použitelnou kostru modelu, kterou pak mohu rozvíjet. V případě např. datumové dimenze si můžu nechat vytvořit skript pro napočítání atributů.

Dobře, takže zadání bude vytvořit jednoduchý datový model ve star schématu s 1 faktovou tabulkou a několika dimenzními tabulkami (fakta a dimenze).

  • Faktovou tabulkou pro nás bude tabulka s objednávkami
  • Dimenzemi pro nás bude
    • Datum objednávky
    • Produkt
    • Status objednávky
    • Zákazník

Zároveň chceme, aby byl model navržen tak, abychom u dimenzí používali slowly changing dimension 2 přístup (SCD2) – tedy historizace atributů.

Prompt teda vypadá takto:

chat-gpt-datovy-model

Odpovědělo to něco v tomto smyslu:

  • Pro návrh modelu datového skladu s uvedenými specifikacemi budeme postupovat podle přístupu hvězdicového schématu. Hvězdicové schéma je populární přístup k modelování dat používaný v datových skladech, kde je centrální faktová tabulka propojena s různými dimenzními tabulkami. Vzhledem k tomu, že jste specifikovali přístup pomalu se měnící dimenze typu 2 (SCD2) pro dimenzní tabulky, zahrneme sloupce pro sledování historických změn.

Zde jsou SQL skripty pro vytvoření tabulek:

CREATE TABLE F_Orders (
OrderID INT IDENTITY(1,1) PRIMARY KEY,
DateKey INT NOT NULL,
CustomerKey INT NOT NULL,
ProductKey INT NOT NULL,
OrderStatusKey INT NOT NULL,
Quantity INT,
TotalAmount DECIMAL(12, 2),
— Additional order-related columns
— Foreign keys will be defined after the creation of dimension tables
);

CREATE TABLE D_Date (
DateKey INT IDENTITY(1,1) PRIMARY KEY,
Date DATE NOT NULL,
Year SMALLINT,
Quarter SMALLINT,
Month SMALLINT,
Day SMALLINT,
WeekOfYear SMALLINT,
— Additional date-related columns
);

CREATE TABLE D_Customer (
CustomerKey INT IDENTITY(1,1) PRIMARY KEY,
CustomerID INT,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
Email NVARCHAR(100),
Phone NVARCHAR(20),
ValidFrom DATETIME,
ValidTo DATETIME,
IsCurrent BIT,
— Additional customer-related columns
);

CREATE TABLE D_Product (
ProductKey INT IDENTITY(1,1) PRIMARY KEY,
ProductID INT,
ProductName NVARCHAR(100),
Category NVARCHAR(50),
Price DECIMAL(10,2),
ValidFrom DATETIME,
ValidTo DATETIME,
IsCurrent BIT,
— Additional product-related columns
);

CREATE TABLE D_OrderStatus (
OrderStatusKey INT IDENTITY(1,1) PRIMARY KEY,
StatusDescription NVARCHAR(100)
— Additional status-related columns
);

OK, to nevypadá úplně marně. Tabulky obsahují primární klíč, který je umělý. Dále obsahují jak se sluší a patří business key (z primárního systému) – to jsme ani nenadefinovali v promptu. Faktovka obsahuje cizí klíče. Dimenze obsahují v návrhu sloupce, přes které můžeme pracovat se slowly changing dimensions.

Ještě si necháme vypsat proceduru pro nápočet datumové dimenze:

chatgpt-napocet-datumove-dimenze

Podle tohoto testu si myslím, že chatgpt může mít značný potenciál pro úlohy tohoto typu.

Rate this post

Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako freelancer. Pracoval jsem dříve také jako BI developer, finanční controller a analytik. Vše pro společnosti z oblasti IT, bankovnictví, consultingu a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a občas neúspěšně odpálím pár balónků v golfu 🏌️

Již cca 10 let zapisuji na tento web různé návody určené zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Business intelligence, korporátních financí a reportingu.

🔥 Přihlašte se do naší Excel facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published. Required fields are marked *