このクイック スタートでは、クエリ構築アシスタントを使用して、生の SQL または任意の ORM を使用して、効率的で正確で安全なクエリを作成する方法について説明します。 コード優先の開発者とデータ優先の開発者の両方向けに設計されており、接続されたデータベース スキーマに合わせて運用対応のロジックをより迅速に生成できます。
始めましょう
データベースに接続されていて、MSSQL 拡張機能でアクティブなエディター ウィンドウが開かれていることを確認します。 この接続により、 @mssql
チャット参加者はデータベース環境のコンテキストを理解できるため、正確でコンテキストに対応した提案が可能になります。 データベース接続がないと、チャット参加者は意味のある応答を提供するスキーマまたはデータ コンテキストを持ちません。
次の例では、 AdventureWorksLT2022
サンプル データベースを使用します。このデータベースは、 Microsoft SQL Server サンプルとコミュニティ プロジェクト のホーム ページからダウンロードできます。
最適な結果を得るには、独自の環境に合わせてテーブル名とスキーマ名を調整します。
チャットに @mssql
プレフィックスが含まれていることを確認します。 たとえば、「 @mssql
」と入力し、その後に質問またはプロンプトを入力します。 これにより、チャット参加者は、SQL 関連のサポートを求めていることを理解できます。
クエリの作成
GitHub Copilot は、Visual Studio Code 内で直接インテリジェントなクエリ構築をサポートします。 基本的な SELECT から複雑な結合、フィルター、集計まで、ベスト プラクティスに従って現在のスキーマを反映する SQL または ORM クエリが生成されるため、アプリケーション ロジックに集中できます。
チャット参加者から質問できる一般的なユース ケースと例を次に示します。
時間ベースの分析
これらのプロンプトは、最近の販売活動、期間別のトップ パフォーマー、過去の平均との比較など、時間の経過に伴う傾向を分析するのに役立ちます。 GitHub Copilot では、現在のシステム日付に基づく想定を回避して、データの最新の日付に対して値を計算するクエリを作成できます。
- 入れ子になったクエリを生成して、データベース内の最新の注文日 (現在の日付ではなく) を基準にして、過去 6 か月間の平均注文金額を合計が上回る
SalesLT.SalesOrderHeader
から注文をフェッチします。 -
SalesLT.SalesOrderHeader
テーブルの売上合計で上位 3 人の顧客を年別にグループ化して検索するクエリを作成します。 - 過去 30 日間に注文を行った
SalesLT.Customer
の各顧客の合計収益を、現在の日付ではなく、SalesLT.SalesOrderHeader
の最新の注文日に対して検索します。 -
Sequelize
クエリを作成して、Customers
(SalesLT.Customers
) とその注文 (SalesLT.SalesOrderDetail
) と合計収益を取得します。このクエリは、データベース内の昨年の降順の収益で並べ替えられます (現在の日付を基準としていません)。
複雑なリレーションシップ
これらのプロンプトを使用して、複数の関連テーブルにまたがるクエリを生成します。 注文の詳細を使用して顧客データを結合する場合でも、収益集計を構築する場合でも、GitHub Copilot はスキーマ コンテキストを使用して複雑なリレーションシップをナビゲートし、正確な結合と条件を生成するのに役立ちます。
SalesLT.SalesOrderHeader
テーブルの実際のスキーマを使用して、入れ子になった SQL クエリを生成し、注文の合計が過去 6 か月間の平均注文合計を上回る注文を取得します。 6 か月の期間は、(現在の日付ではなく) テーブル内の最新の注文日を基準にして計算する必要があります。現在のデータベースを使用して、
SQLAlchemy
クエリを作成して、顧客の注文と合計収益を降順の収益で並べ替えて取得します。Prisma
を使用して、SalesLT.Customer
、SalesLT.SalesOrderHeader
、SalesLT.SalesOrderDetail
を結合し、顧客ごとの総収益を計算するクエリを生成します。Entity Framework
で、LINQ
スキーマを使用して、過去 1 年間の売上別の上位 10 人の顧客を返すSalesLT
クエリを記述します。過去 6 か月間に販売されていない製品を検索する
TypeORM
クエリを作成します。 6 か月の期間は、(現在の日付ではなく) テーブル内の最新の注文日を基準にして計算する必要があります。過去 1 年間に購入したすべての顧客を合計支出別に並べ替えた、取得する
Django ORM
クエリを作成します。 "昨年" 期間は、(現在の日付ではなく) テーブル内の最新の注文日を基準にして計算する必要があります。
ビジネスの分析情報
これらのプロンプトは、データから実用的な分析情報を表示するように設計されています。 チャーンリスクの顧客の特定から売れ残りの製品の検出まで、GitHub Copilot は、接続されたデータベースに合わせて調整された戦略的な決定とレポートをサポートするロジックの構築に役立ちます。
現在のデータベースを使用して、データベース内の最新の注文日を参照ポイントとして使用して、過去 6 か月間に最初の注文を行った顧客を示すリストを生成します。
現在のデータベースを使用して、過去 12 か月間に販売されていない製品を識別するリストを生成し、データベース内の最新の注文日を参照として使用します。
過去に5回以上の注文をしたが、直近90日間は1件も注文していない顧客を、データベース内の最新の注文日を参照に特定します。
注文返品またはキャンセルに基づいて、最も高い返品率を持つ上位 5 つの製品を、最新の注文日に対して計算して一覧表示します。
最新の注文日をアンカーとして使用して、
OrderDate
のSalesLT.SalesOrderHeader
に基づいて、過去 12 か月間の月次収益の傾向を生成します。SQLAlchemy と Pandas を使用して、最新の注文日に基づいて、過去 3 四半期の注文頻度が低下している顧客を識別するレポートを作成します。
フィードバック: スマート クエリ ビルダー
MSSQL 拡張機能の GitHub Copilot を改良および改善するために、次の GitHub 問題テンプレートを使用してフィードバックを送信します。 GitHub Copilot フィードバック
フィードバックを送信する場合は、次の内容を検討してください。
テスト済みのシナリオ – スキーマの作成、クエリの生成、セキュリティ、ローカライズなど、どの領域に重点を置いたかをお知らせください。
うまくいったこと - スムーズで役に立ち、期待を超えた経験について説明します。
問題またはバグ – 問題、不整合、または混乱を招く動作を含めます。 スクリーンショットや画面の記録は特に役立ちます。
改善の提案 – 使いやすさの向上、カバレッジの拡大、GitHub Copilot の応答の強化に関するアイデアを共有します。
関連コンテンツ
- Visual Studio Code 用 MSSQL 拡張機能のための GitHub Copilot
- クイック スタート: チャットとインライン GitHub Copilot の提案を使用する (プレビュー)
- クイック スタート: コードの生成 (プレビュー)
- クイック スタート: スキーマ エクスプローラーとデザイナーを使用する (プレビュー)
- クイック スタート: クエリ オプティマイザー アシスタント (プレビュー)
- クイックスタート: ビジネス ロジック説明ツールを使用する (プレビュー)
- クイック スタート: Security Analyzer (プレビュー)
- クイック スタート: ローカライズと書式設定ヘルパー (プレビュー)
- クイック スタート: テストとモック作成のためにデータを生成する (プレビュー)
- 制限事項と既知の問題