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:
Odpovědělo to něco v tomto smyslu:
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:
Podle tohoto testu si myslím, že chatgpt může mít značný potenciál pro úlohy tohoto typu.