Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto rychlém startu se dozvíte, jak business logic Explainer pomáhá vývojářům pochopit a pracovat s komplexní aplikační logikou implementovanou v architekturách SQL, ORM (Object-Relational Mapování) nebo přímo v databázi. Pomocník analyzuje kód SQL, modely ORM nebo existující schémata databáze, aby vysvětlil podkladová obchodní pravidla a poskytl dokumentaci s možností akce.
Začínáme
Ujistěte se, že jste připojení k databázi a máte otevřené okno aktivního editoru s rozšířením MSSQL. Toto připojení umožňuje účastníkovi @mssql
chatu porozumět kontextu vašeho databázového prostředí a umožnit přesné a kontextové návrhy. Bez připojení k databázi nebude účastník chatu mít schéma ani datový kontext, aby poskytoval smysluplné odpovědi.
Následující příklady používají AdventureWorksLT2022
ukázkovou databázi, kterou si můžete stáhnout z domovské stránky Ukázky microsoft SQL Serveru a projekty komunity .
Nejlepších výsledků dosáhnete, když upravíte názvy tabulek a schémat tak, aby odpovídaly vašemu vlastnímu prostředí.
Ujistěte se, že chat obsahuje předponu @mssql
. Například zadejte @mssql
svůj dotaz nebo výzvu. Tím zajistíte, že účastník chatu pochopí, že žádáte o pomoc související s SQL.
Principy obchodní logiky pomocí GitHub Copilotu
GitHub Copilot vám pomůže pochopit a vysvětlit obchodní pravidla vložená do databázového kódu, modelů ORM a aplikačních dotazů. Z uložených procedur až po dotazy LINQ a výrazy Sequelize poskytuje GitHub Copilot přehledy přirozeného jazyka, aby byla složitější logika přístupnější.
Tady jsou běžné případy použití a příklady toho, co se můžete zeptat prostřednictvím účastníka chatu:
Vysvětlení logiky T-SQL
Pomocí GitHub Copilotu můžete pochopit a vysvětlit logiku T-SQL, od uložených procedur po vložené podmíněné příkazy. Bez ohledu na to, jestli kontrolujete pravidla slev, procedurální logiku nebo podmínky optimalizace, může GitHub Copilot analyzovat a dokumentovat obchodní pravidla implementovaná v T-SQL.
- Vysvětlete, co uložená procedura
SalesLT.uspGetCustomerOrderHistory
dělá, a navrhněte způsoby, jak ji optimalizovat. - Ladění uložené procedury
SalesLT.uspGetTopSellingProducts
a navržení vylepšení. - Analyzujte následující
SQL
fragment kódu z aktuální databáze. Zdokumentujte obchodní pravidla implementovaná v tomto procesu uplatnění slev, včetně podmínek způsobilosti, úprav diskontní sazby a jakýchkoli omezení stanovených pro částku slevy. V případě potřeby také poskytněte užitečné přehledy nebo návrhy ke zlepšení přehlednosti nebo výkonu.
DECLARE @OrderTotal AS DECIMAL (10, 2) = 1500.00;
DECLARE @DiscountCode AS NVARCHAR (20) = 'DISCOUNT10';
DECLARE @DiscountPct AS DECIMAL (5, 2) = CASE WHEN @OrderTotal > 1000.00 THEN 5.0 ELSE 0.0 END;
IF @DiscountCode = 'DISCOUNT10'
BEGIN
SET @DiscountPct = CASE WHEN @DiscountPct < 10.0 THEN 10.0 ELSE @DiscountPct END;
END
DECLARE @DiscountAmount AS DECIMAL (10, 2) = (@OrderTotal * @DiscountPct / 100.0);
IF @DiscountAmount > 200.00
BEGIN
SET @DiscountAmount = 200.00;
END
SELECT @OrderTotal AS OrderTotal,
@DiscountPct AS DiscountPercentage,
@DiscountAmount AS DiscountAmount;
Vysvětlení logiky ORM
- Vysvětlete, co dělá následující dotaz SQLAlchemy:
from sqlalchemy import func
top_customers = (
session.query(SalesOrderHeader.CustomerID, func.count().label("OrderCount"))
.group_by(SalesOrderHeader.CustomerID)
.order_by(func.count().desc())
.limit(10)
)
- Co tento dotaz LINQ entity Framework dělá? Popište, jak seskupuje zákazníky podle úrovně na základě jejich celkových nákupů.
var customerTiers = context.SalesOrderHeaders
.GroupBy(o => o.CustomerID)
.Select(g => new {
CustomerID = g.Key,
TotalSpent = g.Sum(o => o.TotalDue),
Tier = g.Sum(o => o.TotalDue) >= 10000 ? "Gold" :
g.Sum(o => o.TotalDue) >= 5000 ? "Silver" : "Bronze"
});
- Analyzujte logiku tohoto dotazu Prisma a vysvětlete, jak určuje, které produkty se považují za "nízké skladové zásoby".
const lowInventoryProducts = await prisma.product.findMany({
where: {
SafetyStockLevel: {
lt: 50
}
},
select: {
ProductID: true,
Name: true,
SafetyStockLevel: true
}
});
- Zkontrolujte a vysvětlete, co tento dotaz Sequelize dělá. Přidejte vložené komentáře, abyste objasnili, jak vypočítá celkové výnosy za zákazníka a filtruje zákazníky s významnými výdaji:
const results = await SalesOrderHeader.findAll({
attributes: ['CustomerID', [sequelize.fn('SUM', sequelize.col('TotalDue')), 'TotalSpent']],
group: ['CustomerID'],
having: sequelize.literal('SUM(TotalDue) > 5000')
});
Pomocí SQLAlchemy vygenerujte dotaz pro výpis produktů, které nebyly nikdy seřazeny, a požádejte GitHub Copilot, aby vysvětlil logiku spojení a chování filtrování.
V prisma napište dotaz, který načte zákazníky, kteří zadali objednávku za posledních 30 dnů. Vysvětlete, co dělá následující dotaz Prisma. Přidejte vložené komentáře, abyste si vysvětlili, jak funguje filtrování kalendářních dat a jak se určují poslední objednávky:
Vysvětlení obchodního záměru prostřednictvím dotazů
GitHub Copilot pomáhá vývojářům pochopit, jak funguje dotaz, ale proč existuje. To zahrnuje skutečný účel filtrů dat, seskupení a agregací. Tato vysvětlení jsou obzvláště užitečná během procesu zaškolení, protože umožňují vývojářům pochopit cíle sestav, logických operací nebo systémových metrik vložených do kódu SQL a ORM.
- Popište obchodní cíl následujícího dotazu SQL. Jaký poznatek se snaží odhalit?
SELECT TOP 10 CustomerID,
COUNT(*) AS OrderCount
FROM SalesLT.SalesOrderHeader
GROUP BY CustomerID
ORDER BY OrderCount DESC;
- Shrňte, čeho má tento dotaz dosáhnout z obchodní perspektivy.
SELECT ProductID,
SUM(LineTotal) AS TotalSales
FROM SalesLT.SalesOrderDetail
GROUP BY ProductID
HAVING SUM(LineTotal) > 10000;
Analyzujte uloženou proceduru
SalesLT.uspGetCustomerOrderHistory
a popište obchodní logiku, která implementuje.Vysvětlete tento dotaz LINQ entity Framework a popište, jakou obchodní logiku implementuje:
var highValueCustomers = context.SalesOrderHeaders
.Where(o => o.TotalDue > 1000)
.GroupBy(o => o.CustomerID)
.Select(g => new { CustomerID = g.Key, OrderCount = g.Count() })
.OrderByDescending(x => x.OrderCount)
.Take(10)
.ToList();
- Použijte
Sequelize
, vysvětlete, co tento dotaz provádí, a popište obchodní předpoklady, které zahrnuje.
const customerRevenue = await SalesOrderHeader.findAll({
attributes: ['CustomerID', [sequelize.fn('SUM', sequelize.col('TotalDue')), 'TotalSpent']],
group: ['CustomerID'],
having: sequelize.literal('SUM(TotalDue) > 5000')
});
Zpětná vazba: Vysvětlení obchodní logiky
Pokud nám chcete pomoct upřesnit a vylepšit GitHub Copilot pro rozšíření MSSQL, odešlete zpětnou vazbu pomocí následující šablony problému Na GitHubu: Váš názor na GitHub Copilot
Při odesílání zpětné vazby zvažte následující:
Otestované scénáře – Dejte nám vědět, na které oblasti jste se zaměřili, například na vytváření schématu, generování dotazů, zabezpečení, lokalizaci.
Co dobře fungovalo – popište všechny zážitky, které se cítily hladce, užitečné nebo překročily vaše očekávání.
Problémy nebo chyby – Zahrňte všechny problémy, nekonzistence nebo matoucí chování. Snímky obrazovky nebo nahrávky obrazovky jsou užitečné hlavně.
Návrhy ke zlepšení – Sdílejte nápady na zlepšení použitelnosti, rozšíření pokrytí nebo vylepšení odpovědí GitHub Copilotu.
Související obsah
- Rozšíření GitHub Copilot for MSSQL pro Visual Studio Code
- Rychlý start: Použití chatu a vložených návrhů od GitHub Copilot (Náhled)
- Rychlý start: Generování kódu (Preview)
- Rychlý start: Použití Průzkumníka schémat a návrháře (Preview)
- Rychlý start: Použití Tvůrce inteligentních dotazů (Preview)
- Rychlý start: Pomocník pro optimalizaci dotazů (Preview)
- Rychlý průvodce: Analýza zabezpečení (Preview)
- Rychlý start: Pomocník pro lokalizaci a formátování (Preview)
- Průvodce rychlým startem: Generování dat pro testování a simulaci (Preview)
- Omezení a známé problémy