Microsoft Fabric 데이터 파이프라인 공용 REST API(프리뷰)
Important
Data Factory용 Microsoft Fabric API는 현재 공개 미리 보기로 제공됩니다. 이 정보는 릴리스되기 전에 상당히 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보와 관련하여 명시적이거나 묵시적인 어떠한 보증도 하지 않습니다.
Microsoft Fabric에서 Data Factory API는 파이프라인 및 데이터 흐름에 대한 CRUD 작업으로만 구성됩니다. 현재는 데이터 파이프라인만 지원됩니다. 데이터 흐름 API는 나중에 릴리스될 예정입니다. 데이터 통합 프로젝트에 대한 다른 공통 영역은 별도의 API에 있습니다. 일정, 모니터링, 연결은 패브릭에 자체 API가 있습니다. Microsoft Fabric REST API에 대한 기본 온라인 참조 설명서는 Microsoft Fabric REST API 참조에서 찾을 수 있습니다. 또한 핵심 항목 API와 Job Scheduler를 참조하세요.
권한 부여 토큰 가져오기
옵션 1: MSAL.Net 사용
Fabric API 빠른 시작 - Microsoft Fabric REST API
MSAL.Net을 사용하여 Workspace.ReadWrite.All, Item.ReadWrite.All의 범위로 Fabric 서비스에 대한 Microsoft Entra ID 토큰을 획득합니다. MSAL.Net을 사용하여 토큰을 획득하는 방법에 대한 자세한 내용은 토큰 획득 - .NET용 Microsoft 인증 라이브러리를 참조하세요.
이전에 복사한 애플리케이션(클라이언트) ID를 붙여넣고 ClientId 변수에 붙여넣습니다.
옵션 2: Fabric 포털 사용
테스트할 테넌트의 Fabric 포털에 로그인하고 F12 키를 눌러 브라우저의 개발자 모드로 전환합니다. 콘솔에서 다음을 실행합니다.
powerBIAccessToken
토큰을 복사하여 ClientId 변수에 붙여넣습니다.
payload base64가 인코딩된 항목 정의
- Base64 인코딩 및 디코딩을 사용하여 JSON을 인코딩합니다.
- URL 안전 인코딩 수행 상자가 선택되어 있지 않은지 확인합니다.
- 패브릭 사용자 인터페이스에서 보기 -->JSON 코드 보기 탭을 통해 파이프라인 정의를 가져올 수 있습니다.
{
"name": "Pipeline_1_updated",
"objectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"properties": {
"description": "this is the description",
"activities": [
{
"name": "Wait1",
"type": "Wait",
"dependsOn": [],
"typeProperties": {
"waitTimeInSeconds": 240
}
}
],
"annotations": [],
"lastModifiedByObjectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"lastPublishTime": "2024-02-01T17:28:02Z"
}
}
속성 개체를 가져와서 중괄호 - { }로 묶습니다. REST 항목 정의 페이로드는 다음과 같습니다.
{
"properties": {
"description": "this is the description",
"activities": [
{
"name": "Wait1",
"type": "Wait",
"dependsOn": [],
"typeProperties": {
"waitTimeInSeconds": 240
}
}
],
"annotations": [],
"lastModifiedByObjectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"lastPublishTime": "2024-02-01T17:28:02Z"
}
}
항목 만들기
예시:
POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items
본문:
{
"displayName": "pipeline_1",
"type": "DataPipeline"
}
참고 항목
설명서에 따르면 필수 속성은 displayName 및 type 2개뿐입니다. 현재 Workload-DI는 정의 없이 만들기도 지원하지 않습니다. 이 잘못된 요구 사항에 대한 수정 사항은 현재 배포 중입니다. 지금은 Fabric 사용자 인터페이스에서 사용하는 것과 동일한 기본 정의를 보낼 수 있습니다. ‘{"properties":{"activities":[]}}’
정의를 포함하여 수정된 JSON:
{
"displayName": "pipeline_1",
"type": "DataPipeline",
"definition": {
"parts": [
{
"path": "pipeline-content.json",
"payload": "eyJwcm9wZXJ0aWVzIjp7ImFjdGl2aXRpZXMiOltdfX0=",
"payloadType": "InlineBase64"
}
]
}
}
응답 201:
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "DataPipeline",
"displayName": "Pipeline_1",
"description": "",
"workspaceId": "<Your WS Id>"
}
항목 삭제
예시:
DELETE https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>
응답 200: (본문 없음)
항목 가져오기
예시:
GET https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>
응답 200:
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "DataPipeline",
"displayName": "Pipeline_1",
"workspaceId": "<your WS Id>"
}
항목 정의 가져오기
예시:
POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>/getDefinition
응답 200:
{
"definition": {
"parts":[
{
"path": "pipeline-content.json",
"payload": "ewogICJwcm9wZXJ0aWVzIjogewogICAgImFjdGl2aXRpZXMiOiBbXQogIH0KfQ==",
"payloadType": "InlineBase64"
}
]
}
}
항목 나열
예시:
GET https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items
응답 200:
{
"value": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SemanticModel",
"displayName": "deata_lh",
"description": "",
"workspaceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SQLEndpoint",
"displayName": "deata_lh",
"description": "",
"workspaceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "Lakehouse",
"displayName": "deata_lh",
"description": "",
"workspaceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "DataPipeline",
"displayName": "Pipeline_1",
"description": "",
"workspaceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
]
}
항목 업데이트
예시:
PATCH https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>
본문:
{
"displayName": "Pipeline_1_updated",
"description": "This is the description."
}
응답 200:
{
"id": "<pipeline id>",
"type": "DataPipeline",
"displayName": "Pipeline_1_updated",
"description": "This is the description.",
"workspaceId": "<Your WS id>"
}
항목 정의 업데이트
예시:
POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>/updateDefinition
본문:
{
"definition": {
"parts": [
{
"path": "pipeline-content.json",
"payload": "eyJwcm9wZXJ0aWVzIjp7ImFjdGl2aXRpZXMiOltdfX0=",
"payloadType": "InlineBase64"
}
]
}
}
응답 200: (본문 없음)
주문형 항목 작업 실행
예시:
POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>/jobs/instances?jobType=Pipeline
응답 202: (본문 없음)
매개 변수 값이 두 개인 예제:
여기에는 대기할 시간(초)을 지정하는 param_waitsec 매개 변수가 있는 Wait 활동이 있습니다.
POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>/jobs/instances?jobType=Pipeline
본문:
{
"executionData": {
"parameters": {
"param_waitsec": "10"
}
}
}
응답 202: (본문 없음)
참고 항목
현재 반환된 본문은 없지만 작업 ID를 반환해야 합니다. 미리 보기 중에는 반환된 헤더의 'Location' 속성에서 찾을 수 있습니다.
항목 작업 인스턴스 가져오기
REST API - 항목 - 항목 작업 인스턴스 가져오기
예시:
GET https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>/jobs/instances/<job ID>
응답 200:
{
"id": "4511ffcd-a9f6-4f75-91a9-9ceab08d7539",
"itemId": "2bb9fe4a-0a84-4725-a01f-7ac4e6850259",
"jobType": "Pipeline",
"invokeType": "Manual",
"status": "Completed",
"failureReason": null,
"rootActivityId": "f14bdd95-2cff-4451-b839-bea81509126d",
"startTimeUtc": "2024-02-01T03:03:19.8361605",
"endTimeUtc": "2024-02-01T03:05:00.3433333"
}
항목 작업 인스턴스 취소
예시:
POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>/jobs/instances/<job ID>/cancel
응답 202: (본문 없음)
참고 항목
작업을 취소한 후 항목 작업 인스턴스 가져오기를 호출하거나 Fabric 사용자 인터페이스에서 실행 기록 보기를 확인하여 상태를 확인할 수 있습니다.
활동 실행 쿼리
예시:
POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/datapipelines/pipelineruns/<job id>/queryactivityruns
본문:
{
"filters":[],
"orderBy":[{"orderBy":"ActivityRunStart","order":"DESC"}],
"lastUpdatedAfter":"2024-05-22T14:02:04.1423888Z",
"lastUpdatedBefore":"2024-05-24T13:21:27.738Z"
}
참고 항목
"작업 ID"는 Job Scheduler 공용 API에서 만들어지고 사용되는 것과 동일한 ID입니다.
응답 200:
[
{
"pipelineName": "ca91f97e-5bdd-4fe1-b39a-1f134f26a701",
"pipelineRunId": "f2fa7a0e-586d-4d73-a2b4-7ddc785243ae",
"activityName": "Wait1",
"activityType": "Wait",
"activityRunId": "ef579d3d-d23e-477a-8150-d6e15d66a532",
"linkedServiceName": "",
"status": "Succeeded",
"activityRunStart": "2024-05-23T13:43:03.6397566Z",
"activityRunEnd": "2024-05-23T13:43:31.3906179Z",
"durationInMs": 27750,
"input": {
"waitTimeInSeconds": 27
},
"output": {},
"error": {
"errorCode": "",
"message": "",
"failureType": "",
"target": "Wait1",
"details": ""
},
"retryAttempt": null,
"iterationHash": "",
"userProperties": {},
"recoveryStatus": "None",
"integrationRuntimeNames": null,
"executionDetails": null,
"id": "/SUBSCRIPTIONS/4DA86268-68B8-4B08-AD58-A7AEE54138CD/RESOURCEGROUPS/4DA86268-68B8-4B08-AD58-A7AEE54138CD/PROVIDERS/MICROSOFT.TRIDENT/WORKSPACES/4DA86268-68B8-4B08-AD58-A7AEE54138CD/pipelineruns/f2fa7a0e-586d-4d73-a2b4-7ddc785243ae/activityruns/ef579d3d-d23e-477a-8150-d6e15d66a532"
}
]
알려진 제한 사항
- SPN(서비스 주체 인증)은 현재 지원되지 않습니다.