次の方法で共有


GraphQL エディター用のファブリック API

GraphQL 用の Fabric API は、グラフィカルなブラウザー内 GraphQL 開発環境を提供します。これにより、対話型のプレイグラウンドで GraphQL クエリと変更のライブ結果を作成、テスト、および表示できます。

GraphQL エディターを使用するユーザー

GraphQL エディターは、次の場合に不可欠です。

  • アプリケーションに 実装する前に、Fabric データに対するクエリのプロトタイプ作成とテストを行うアプリケーション開発者
  • データエンジニアは、Lakehouse と Warehouse のデータ構造を探索し、GraphQL スキーマ設計を検証します。
  • データ アクセス許可のテストとクエリの問題のトラブルシューティングを行うファブリック ワークスペース共同作成者
  • BI 開発者 が API 構造を学習し、カスタム アプリケーションのデータ アクセス パターンを作成する
  • Fabric ワークスペース内のクエリ開発とデータ アクセスの問題のトラブルシューティングに関する共同作業を行う開発チーム

Fabric データ ソースに対して GraphQL クエリを対話的に開発、テスト、またはデバッグする必要がある場合は常に、エディターを使用します。

GraphQL エディターの使い始め

GraphQL エディターの使用を開始するには、次の手順に従います。

  1. GraphQL API 項目を開く - Fabric でワークスペースに移動し、GraphQL の API 項目を開きます。

  2. エディターにアクセスする - ポータル画面の左下隅にある [クエリ ] を選択します。

    Fabric 画面の左下隅に [クエリ] オプションが表示されている場所を示すスクリーンショット。

  3. クエリを記述する - [クエリ ] タブ で GraphQL クエリを直接入力します。キーボード ショートカットで Intellisense を使用します。

    • Windows: Ctrl + Space
    • macOS: Command + Space

    [実行]、[クエリ変数]、[結果] ペインに分割された [クエリ] タブを示す API エディター画面のスクリーンショット。

  4. クエリの実行 - [ 実行 ] を選択してクエリを実行し、データ ソースからデータを取得します。

コードを生成する

API エディターは、エディターで現在テストしている GraphQL クエリまたは変更を反映する定型的な Python または Node.js コードを自動的に生成します。 クエリのプロトタイプ作成と絞り込み時に、生成されたコードはそれに応じて更新されます。 結果に問題がなければ、生成されたコードを表示してコピーし、テスト目的でローカルで実行したり、アプリケーション開発プロセスで再利用したりできます。

重要

生成されたコードは、対話型のブラウザー資格情報を使用するため、テスト目的での使用に限定する必要があります。 運用環境では、常に Microsoft Entra にアプリケーションを登録し、適切な client_id とスコープを使用します。 サンプル コードを含むエンドツーエンドの例は、「アプリケーションの接続」にあります。

作業を開始するには:

  1. クエリを記述する - クエリ エディターで、次のサンプル クエリ (または独自のクエリ) を入力します。

    query {
      addresses(first: 5) {
         items {
            AddressID
            City
            StateProvince
            CountryRegion
         }  
      }
    }
    
  2. クエリの実行 - [実行 ] を選択してクエリを実行し、先に進む前にエディターで正しく動作することを確認します。

  3. コードの生成 - [ コードの生成 ] ボタンを選択し、任意のプログラミング言語 (Python または JavaScript/Node.JS) を選択します。

    生成されたコードのプログラミング言語を選択するドロップダウンを示す API エディター画面のスクリーンショット。

  4. 生成されたコードは、コピーし、ローカル フォルダーにファイルとして保存できます。 選択した言語に応じて、次の簡単な手順に従ってローカルでテストします。

Python

  1. editor.pyという名前のファイルを作成し、上記のクエリ例から生成されたコードを貼り付けます。

  2. コマンド python -m venv .venvを実行して仮想環境を作成します。

  3. venvまたは.venv\Scripts\activateを実行して、source .venv/bin/activateをアクティブにします。

  4. pip install azure-identityを実行して、必要な依存関係をインストールします。

  5. python editor.pyを使用してコードを実行します。

  6. 要求を認証するために、ブラウザー ウィンドウ経由でサインインするように求められます。

  7. API からの応答がコンソールに出力されます。

    {
    	"data": {
    		"addresses": {
    			"items": [
    				{
    					"AddressID": 9,
    					"City": "Bothell",
    					"StateProvince": "Washington",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 11,
    					"City": "Bothell",
    					"StateProvince": "Washington",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 25,
    					"City": "Dallas",
    					"StateProvince": "Texas",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 28,
    					"City": "Phoenix",
    					"StateProvince": "Arizona",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 32,
    					"City": "Montreal",
    					"StateProvince": "Quebec",
    					"CountryRegion": "Canada"
    				}
    			]
    		}
    	}
    }
    

Node.JS

  1. editor.jsという名前のファイルを作成し、上記のクエリ例から生成されたコードを貼り付けます。

  2. editor.jsと同じフォルダーに、次の内容のpackage.json ファイルを作成します。

    {
      "type": "module",
      "dependencies": {}
    }
    
  3. 開発用コンピューターに Node.js をインストールする (npm を含む)

  4. 選択したパッケージ マネージャーで npm install @azure/identity または同様のコマンドを実行して、ID ライブラリの最新バージョンをインストールします。

  5. node editor.jsを実行してコードを実行します。

  6. 要求を認証するために、ブラウザー ウィンドウ経由でサインインするように求められます。

  7. API からの応答がコンソールに出力されます。

    {
    	"data": {
    		"addresses": {
    			"items": [
    				{
    					"AddressID": 9,
    					"City": "Bothell",
    					"StateProvince": "Washington",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 11,
    					"City": "Bothell",
    					"StateProvince": "Washington",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 25,
    					"City": "Dallas",
    					"StateProvince": "Texas",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 28,
    					"City": "Phoenix",
    					"StateProvince": "Arizona",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 32,
    					"City": "Montreal",
    					"StateProvince": "Quebec",
    					"CountryRegion": "Canada"
    				}
    			]
    		}
    	}
    }
    

クエリと変更の開発

次の例では、AdventureWorks サンプル データを使用した GraphQL クエリと変更構文を示します。 これらの例では、書き込み操作 (変更) をサポートする Fabric Data Warehouse を使用していることを前提としています。 SQL Analytics エンドポイント (Lakehouses やミラー化されたデータベースなど) 経由でアクセスされるデータ ソースは読み取り専用であり、変更ではなくクエリのみをサポートします。

AdventureWorks からのこの短い GraphQL スキーマの抜粋を確認します。 1 つの製品を読み取るクエリまたはすべての製品を一覧表示するクエリ、およびすべての CRUDL (作成、読み取り、更新、削除、一覧表示) ユース ケースをサポートする、製品を作成、更新、または削除するための変更を含む Product 型を定義します。

{
  type Product {
    ProductID: Int!
    Name: String!
    ProductNumber: String!
    Color: String
    ListPrice: Float!
    SellStartDate: DateTime!
  }

  type Query {
    products(first: Int, filter: ProductFilterInput): ProductConnection
    products_by_pk(ProductID: Int!): Product
  }

  type Mutation {
    createProduct(Name: String!, ProductNumber: String!, ListPrice: Float!, SellStartDate: DateTime!): Product
    updateProduct(ProductID: Int!, Name: String, Color: String, ListPrice: Float): Product
    deleteProduct(ProductID: Int!): Boolean
  }
}

スキーマで定義されているクエリを使用して、GraphQL で公開されているデータを読み取る。 products_by_pk クエリは、主キーによって 1 つの製品を取得します。

query MyQuery {
  products_by_pk(ProductID: 680) {
    ProductID
    Name
    ProductNumber
    Color
    ListPrice
  }
}

応答:

{
  "data": {
    "products_by_pk": {
      "ProductID": 680,
      "Name": "HL Road Frame - Black, 58",
      "ProductNumber": "FR-R92B-58",
      "Color": "Black",
      "ListPrice": 1431.50
    }
  }
}

createProductなどの変更を使用してデータを書き込み、必要なパラメーターを使用して新しい製品を作成します。

mutation MyMutation {
  createProduct(
    Name: "Mountain Bike Helmet - Blue", 
    ProductNumber: "HE-M897-B", 
    ListPrice: 89.99,
    SellStartDate: "2025-01-01T00:00:00Z"
  ) {
    ProductID
    Name
    ProductNumber
    ListPrice
  }
}

応答:

{
  "data": {
    "createProduct": {
      "ProductID": 1001,
      "Name": "Mountain Bike Helmet - Blue",
      "ProductNumber": "HE-M897-B",
      "ListPrice": 89.99
    }
  }
}

クエリ変数

クエリまたは変更に パラメーターを変数 として渡すには、[ クエリ ] タブの右側にある [クエリ変数] ペインを使用します。 変数は、他のプログラミング言語の変数と同様に機能します。 各変数は、その変数に格納されている値にアクセスするために使用される名前で宣言されます。 前の変更例を使用して、クエリ変数を使用するように少し変更します。

mutation MyMutation ($name: String!, $productNumber: String!, $listPrice: Float!, $sellStartDate: DateTime!){
  createProduct(
    Name: $name, 
    ProductNumber: $productNumber, 
    ListPrice: $listPrice,
    SellStartDate: $sellStartDate
  ) {
    ProductID
    Name
    ProductNumber
    ListPrice
  }
}

次の例を使用して、[ クエリ変数 ] ペインで変数を定義します。

{
  "name": "Mountain Bike Helmet - Blue",
  "productNumber": "HE-M897-B",
  "listPrice": 89.99,
  "sellStartDate": "2025-01-01T00:00:00Z"
}

変数を使用すると、変更コードがよりクリーンになり、読みやすく、テストし、変更できます。 また、変数を変更するだけで、同じ変更を異なる値で簡単に再利用できます。