この記事では、Microsoft Fabric REST API を使用してプログラムで Lakehouse を管理するための一般的なシナリオについて説明します。 各セクションには、特定のタスクの HTTP 要求と応答が表示されるため、自動化スクリプトまたはアプリケーションにパターンを適応させることができます。
すべてのパラメーター、必要なアクセス許可、要求スキーマ、およびエラー コードを含む完全な仕様については、 Lakehouse REST API リファレンスを参照してください。
前提条件
-
Fabric サービスの Microsoft Entra トークンを取得 し、すべての要求の
Authorizationヘッダーに含めます。 - 次の例の
{workspaceId}と{lakehouseId}を独自の値に置き換えます。
レイクハウスを作成、更新、削除する
次の例は、新しい Lakehouse をプロビジョニングし、名前を変更し、そのプロパティ (自動プロビジョニングされた SQL 分析エンドポイントを含む) を取得して削除する方法を示しています。 完全なパラメーター リストと追加の例 (スキーマ対応の lakehouse の作成や定義を使用した作成など) については、 Lakehouse Items API リファレンスを参照してください。
レイクハウスを作成する
ワークスペースに Lakehouse を作成するには、表示名を使用して POST 要求を送信します。 Fabric は、lakehouse と共に SQL 分析エンドポイントを自動的にプロビジョニングします。
依頼
POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses
{
"displayName": "demo"
}
応答
{
"id": "56c6dedf-2640-43cb-a412-84faad8ad648",
"type": "Lakehouse",
"displayName": "demo",
"description": "",
"workspaceId": "fc67689a-442e-4d14-b3f8-085076f2f92f"
}
レイクハウスを更新する
Lakehouse の名前を変更したり、説明を更新したりするには、新しい値を使用して PATCH 要求を送信します。
依頼
PATCH https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}
{
"displayName": "newname",
"description": "Item's New description"
}
応答
{
"id": "56c6dedf-2640-43cb-a412-84faad8ad648",
"type": "Lakehouse",
"displayName": "newname",
"description": "Item's New description",
"workspaceId": "fc67689a-442e-4d14-b3f8-085076f2f92f"
}
レイクハウスのプロパティを取得する
OneLake パスや SQL 分析エンドポイント接続文字列など、lakehouse メタデータを取得します。
依頼
GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}
応答
{
"id": "daaa77c7-9ef4-41fc-ad3c-f192604424f5",
"type": "Lakehouse",
"displayName": "demo",
"description": "",
"workspaceId": "bee6c118-c2aa-4900-9311-51546433bbb8",
"properties": {
"oneLakeTablesPath": "https://onelake.dfs.fabric.microsoft.com/{workspaceId}/{lakehouseId}/Tables",
"oneLakeFilesPath": "https://onelake.dfs.fabric.microsoft.com/{workspaceId}/{lakehouseId}/Files",
"sqlEndpointProperties": {
"connectionString": "A1bC2dE3fH4iJ5kL6mN7oP8qR9-C2dE3fH4iJ5kL6mN7oP8qR9sT0uV-datawarehouse.pbidedicated.windows.net",
"id": "0dfbd45a-2c4b-4f91-920a-0bb367826479",
"provisioningStatus": "Success"
}
}
}
レイクハウスを削除する
Lakehouse を削除すると、そのメタデータとデータが削除されます。 ショートカットは削除されますが、ショートカット ターゲットのデータは保持されます。
依頼
DELETE https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}
応答
応答本文は空です。
レイクハウス内のテーブルを一覧表示する
データ カタログの作成やデプロイの検証など、レイクハウス内のすべての Delta テーブルを取得するには、テーブルの一覧表示エンドポイントを使用します。 完全なパラメーター の一覧については、 Tables API リファレンスを参照してください。
依頼
GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/tables
応答
{
"continuationToken": null,
"continuationUri": null,
"data": [
{
"type": "Managed",
"name": "demo1",
"location": "abfss://c522396d-7ac8-435d-8d77-442c3ff21295@onelake.dfs.fabric.microsoft.com/{workspaceId}/Tables/demo1",
"format": "delta"
}
]
}
List Tables API はページネーションをサポートしています。
maxResultsをクエリ パラメーターとして渡して、ページ サイズを制御します。 応答には、次のページを取得するために呼び出すことができる continuationUri が含まれています。
大きなテーブル リストをページングする
依頼
GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/tables?maxResults=1
応答
{
"continuationToken": "+RID:~HTsuAOseYicH-GcAAAAAAA==#RT:1#TRC:1#ISV:2#IEO:65567#QCF:8#FPC:AgKfAZ8BnwEEAAe8eoA=",
"continuationUri": "https://api.fabric.microsoft.com:443/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/tables?continuationToken=%2BRID%3A~HTsuAOseYicH-GcAAAAAAA%3D%3D%23RT%3A1%23TRC%3A1%23ISV%3A2%23IEO%3A65567%23QCF%3A8%23FPC%3AAgKfAZ8BnwEEAAe8eoA%3D",
"data": [
{
"type": "Managed",
"name": "nyctaxismall",
"location": "abfss://bee6c118-c2aa-4900-9311-51546433bbb8@onelake.dfs.fabric.microsoft.com/daaa77c7-9ef4-41fc-ad3c-f192604424f5/Tables/nyctaxismall",
"format": "delta"
}
]
}
Delta テーブルにファイルを読み込む
Spark コードを記述せずに CSV または Parquet ファイルをデルタ テーブルに変換するには、Load Table API を使用します。 これは、Lakehouse ホーム ページの [テーブルへの読み込み ] 機能に相当するプログラムです。 完全なパラメーター の一覧については、 テーブルの読み込み API リファレンスを参照してください。
操作は非同期です。 次の手順に従います。
- OneLake API を使用して、lakehouse Files セクションにファイルをアップロードします。
- 読み込み要求を送信します。
- 操作状況が完了するまで状態を確認し続けます。
次の例では、ファイルが既にアップロードされていることを前提としています。
読み込み要求を送信する
次の使用例は、 demo.csv という名前の CSV ファイルを demo という名前のテーブルに読み込み、既存のデータを上書きします。
modeを Append に設定して、代わりに行を追加します。 フォルダー内のすべてのファイルを読み込むには、 pathType を Folder に設定します。
依頼
POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/tables/demo/load
{
"relativePath": "Files/demo.csv",
"pathType": "File",
"mode": "Overwrite",
"formatOptions":
{
"header": true,
"delimiter": ",",
"format": "Csv"
}
}
応答に本文が含まれていません。 代わりに、 Location ヘッダーには、操作の状態をポーリングするために使用する URI が含まれています。 URI は次のパターンに従います。
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/operations/{operationId}
読み込み操作の状態をポーリングする
operationId ヘッダーのLocationを使用して、進行状況を確認します。
依頼
GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/operations/{operationId}
応答
{
"Status": 3,
"CreatedTimeUtc": "",
"LastUpdatedTimeUtc": "",
"PercentComplete": 100,
"Error": null
}
テーブルへのロードで可能な操作の状態は次の通りです。
- 1 - 操作が開始されていません
- 2 - 実行中
- 3 - 成功
- 4 - 失敗
Delta テーブルでテーブルメンテナンスを実行する
Lakehouse Explorer を使用せずに差分テーブル (ビン圧縮、V オーダー、Z オーダー、または VACUUM を適用) を最適化するには、Table Maintenance API を使用します。 これは、 プログラムによるテーブル メンテナンス機能に相当します。 完全なパラメーター の一覧については、 Table Maintenance API リファレンスを参照してください。
操作は非同期です。 次の手順に従います。
- テーブルのメンテナンス要求を送信します。
- 操作状況が完了するまで状態を確認し続けます。
テーブルのメンテナンス要求を送信する
次の使用例は、 tipAmount 列に V オーダー最適化と Z オーダーを適用し、7 日間から 1 時間のリテンション期間で VACUUM を実行します。
依頼
POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/jobs/TableMaintenance/instances
{
"executionData": {
"tableName": "{table_name}",
"schemaName": "{schema_name}",
"optimizeSettings": {
"vOrder": true,
"zOrderBy": [
"tipAmount"
]
},
"vacuumSettings": {
"retentionPeriod": "7:01:00:00"
}
}
}
応答に本文が含まれていません。
Location ヘッダーには、操作の状態をポーリングするために使用する URI が含まれています。
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{lakehouseId}/jobs/instances/{operationId}
実行エンドポイントは lakehouse スコープですが、ジョブ インスタンスポーリングでは、汎用項目ジョブ エンドポイント (/items/{itemId}/jobs/instances/{jobInstanceId}) が仕様で使用されます。
Von Bedeutung
保持期間を 7 日より短く設定すると、Delta Time Travel に影響し、スナップショットまたはコミットされていないファイルがまだ使用されている場合は、リーダーのエラーやテーブルの破損が発生する可能性があります。 そのため、Fabric UI API と REST API の両方のテーブル メンテナンスでは、既定で 7 日以内の保持期間が拒否されます。 間隔を短くするには、ワークスペース設定でspark.databricks.delta.retentionDurationCheck.enabledにfalseを設定し、テーブル メンテナンス ジョブは実行中にその構成を使用します。
テーブルのメンテナンス状態をポーリングする
ジョブの状態を確認するには、ヘッダーのoperationIdからLocationを使用します。
依頼
GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{lakehouseId}/jobs/instances/{operationId}
このポーリング ルートでは、itemsではなく、意図的にlakehousesが使用されます。
応答
{
"id": "{operationId}",
"itemId": "431e8d7b-4a95-4c02-8ccd-6faef5ba1bd7",
"jobType": "TableMaintenance",
"invokeType": "Manual",
"status": "Completed",
"rootActivityId": "8c2ee553-53a4-7edb-1042-0d8189a9e0ca",
"startTimeUtc": "2023-04-22T06:35:00.7812154",
"endTimeUtc": "2023-04-22T06:35:00.8033333",
"failureReason": null
}
テーブルメンテナンスにおける操作状態の可能性は次の通りです。
- NotStarted - ジョブが開始されていません
- 進行中 - 作業が進行中です
- 完了 - ジョブが完了しました
- Failed - ジョブは失敗しました
- Canceled - ジョブが取り消されました
- Deduped - 同じジョブの種類のインスタンスが既に実行されており、このジョブ インスタンスはスキップされます