> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PlayFab GDPR - 플레이어 데이터 내보내기

> ExportMasterPlayerData를 사용하여 GDPR 준수를 위해 PlayFab 플레이어의 데이터를 내보내는 방법으로, 통계, 인벤토리, 구매 및 이벤트 이력을 다룹니다.

# 데이터 내보내기

이 문서에서는 PlayFab에서 플레이어 및 이벤트 데이터를 내보내는 방법을 설명합니다.

## 플레이어 계정 데이터 내보내기

플레이어의 데이터를 내보내는 요청을 하면 요청이 **Queue Processing Agent**로 전송됩니다(플레이어를 삭제하는 것과 유사).

[ExportMasterPlayerData](https://learn.microsoft.com/en-us/rest/api/playfab/admin/account-management/export-master-player-data) API는 다음을 포함하여 지정된 `PlayFabId`와 관련된 모든 데이터를 모든 타이틀에 걸쳐 내보냅니다.

* **Statistics**
* **Custom Data**
* **Inventory**
* **Purchases**
* **Player-Created Items/UGC**
* **Transaction History**
* **Virtual Currency Balances**
* **Characters**
* **Group Memberships**
* **Publisher Data**
* **Credential Data**
* **Account Linkages**
* **Friends List**
* **PlayStream Event History**.

플레이어의 모든 PlayFabId를 갖추는 방법을 자세히 설명하는 [모든 데이터를 찾아야 합니다](/services/playfab/data-analytics/privacy-compliance/playfab-gdpr-deleting-and-exporting-player-data)를 읽어보세요.

이 API는 즉시 `JobReceiptId`를 반환하며, 이는 나중에 참조할 수 있도록 기록에 저장해야 합니다. 내보내기를 다운로드할 수 있게 되기까지 시간이 걸릴 수 있습니다.

내보내기가 완료되면 내보내기 다운로드 링크가 포함된 이메일이 타이틀에 구성된 알림 이메일 주소로 전송됩니다.

작업 완료는 [`player_data_exported` PlayStream 이벤트](/services/playfab/api-references/events/PlayerIdentity/player-data-exported)도 트리거합니다. 이 이벤트에는 `JobReceiptId`가 속성으로 포함되며, 내보낸 데이터에 대한 액세스를 제공하는 `ExportDownloadUrl` 속성도 포함됩니다. [Azure Functions와 함께 사용하는 자동화 규칙](/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/quickstart#azure-functions-in-automation-rules) 또는 [Webhooks](/services/playfab/data-analytics/acting-data/webhooks-overview)를 사용하여 원하는 엔드포인트에서 이러한 이벤트를 수신하도록 등록하고 필요에 따라 처리할 수 있습니다.

다음 예에서는 [C# SDK](/services/playfab/sdks/c-sharp)로 Admin API를 사용하는 방법을 보여줍니다. 다른 SDK를 사용하려면 [PlayFab SDK](/services/playfab/sdks/playfab-sdk-intro) 목록에서 선택하세요.

```csharp theme={null}
public static async void ExportMasterPlayerExample(Action<PlayFabError> callback)
{
    var task = await PlayFabAdminAPI.ExportMasterPlayerDataAsync(new ExportMasterPlayerDataRequest()
    {
        PlayFabId = PlayFabId
    });

    if(task.Error != null)
    {
        callback(task.Error);
    }

    var jobReceiptId = task.Result.JobReceiptId;

    Console.WriteLine(string.Format("Export Player Request Received - Receipt: {0}", jobReceiptId));

    callback(null);
}
```

<Note>
  URL은 내보내기가 완료된 후 최대 30일 동안 사용할 수 있습니다. 이 시간 이후에는 파일이 삭제되며 *새* 내보내기 요청을 시작해야 합니다.
</Note>

## 내보낸 데이터의 형식

내보낸 데이터는 이름에 `JobReceiptId`와 내보내기 시간이 포함된 ZIP 아카이브로 패키징됩니다. 아카이브에는 디렉터리 구조로 구성된 여러 파일이 포함됩니다.

| 파일 경로                                                                                                                        | 설명                                                                                                                                                                                                                                                                             |
| ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| /master\_player\_export.json                                                                                                 | <p>PlayFab에 기록된 플레이어의 데이터를 포함하는 JSON 파일입니다. 여기에는 플레이어가 참여하는 각 타이틀의 데이터가 포함됩니다.</p><p>JSON 문서의 스키마는 OpenAPI 사양으로 제공됩니다. `https://<your_title_id>.playfabapi.com/Swagger/MasterPlayerDataExport.swagger.json`의 `MasterPlayerDataExport` 개체를 참조하세요.</p>                           |
| /CustomFiles/MasterPlayerFiles/\*                                                                                            | 플레이어의 `master_player_account` 엔터티와 관련된 사용자 지정 [Entity Files](/services/playfab/live-service-management/game-configuration/entities/entity-files)을 포함합니다.                                                                                                                       |
| /CustomFiles/TitlePlayerFiles/\<TitlePlayerAccountId>/\*                                                                     | <p>플레이어의 `title_player_account` 엔터티와 관련된 사용자 지정 [Entity Files](/services/playfab/live-service-management/game-configuration/entities/entity-files)을 포함합니다.</p><p>파일은 플레이어가 참여하는 각 타이틀당 하나의 하위 디렉터리로 구성됩니다. 각 하위 디렉터리의 이름은 해당 타이틀에서 플레이어의 `title_player_account` 엔터티 ID입니다.</p> |
| /TitlePlayerEvents/\<TitleId>/event-history\_1.jsonl <br />...<br /> /TitlePlayerEvents/\<TitleId>/event-history\_\<N>.jsonl | <p>플레이어에 대해 기록된 PlayStream 및 Telemetry 이벤트입니다.</p><p>파일은 플레이어가 참여하는 각 타이틀당 하나의 하위 디렉터리로 구성됩니다. 각 하위 디렉터리의 이름은 타이틀 ID입니다.</p><p>각 하위 디렉터리에는 해당 타이틀에서 플레이어가 얼마나 많은 데이터를 가지고 있는지에 따라 하나 이상의 `event-history` 파일이 포함되어 있습니다. 파일에는 이벤트가 한 줄에 하나씩 JSON 개체로 직렬화되어 포함됩니다.</p>           |

## 이벤트 데이터 내보내기

PlayFab은 여러 유형의 이벤트 데이터를 제공합니다—Custom Data, Entity Objects, Entity Files.

### Custom Data 내보내기

Custom Data는 플레이어와 임의의 데이터를 연결할 수 있는 광범위한 기능 범주를 의미합니다. PlayFab은 게임 로직에서 데이터와 상호 작용할 수 있는 메서드를 제공하지만 그 외에는 데이터를 해석하거나 이해하지 않습니다.

#### 레거시 Player Data

[ExportMasterPlayerData](https://learn.microsoft.com/en-us/rest/api/playfab/admin/account-management/export-master-player-data) API를 사용하는 경우(Exporting PlayFab Data 섹션에서 참조된 대로) 모든 Player Data 속성은 ZIP 아카이브 루트의 master\_player\_export.json 파일에서 찾을 수 있습니다.

* "Publisher" 데이터는 JSONPath에서 찾을 수 있습니다: \$.PublisherData
* 타이틀별 데이터는 JSONPath에서 찾을 수 있습니다: \$.Titles\[\*].CustomData

이러한 값은 이러한 값만 내보내야 하는 경우 전용 "get" API를 통해서도 검색할 수 있습니다. 전용 API의 장점은 즉시 반환된다는 것입니다. 그러나 이 기능의 설계에 따라 필요한 특정 데이터 유형에 따라 올바른 API를 호출해야 합니다.

GetUserData, GetUserInternalData, GetUserReadOnlyData, GetUserPublisherData, GetUserPublisherInternalData, GetUserPublisherReadOnlyData

### Entity Objects 내보내기

[ExportMasterPlayerData](https://learn.microsoft.com/en-us/rest/api/playfab/admin/account-management/export-master-player-data) API를 사용하는 경우 모든 Entity Objects는 ZIP 아카이브 루트의 **master\_player\_export.json** 파일에서 찾을 수 있습니다.

**master\_player\_account** 엔터티 개체는 JSONPath에서: **\$.CustomObjects**

**title\_player\_account** 엔터티 개체는 JSONPath에서: **\$.Titles\[\*].CustomObjects**

character 엔터티 개체는 JSONPath에서: **\$.Titles\[*].Characters\[*].CustomObjects**

Entity Objects는 [GetObjects](https://learn.microsoft.com/en-us/rest/api/playfab/data/object/get-objects) API를 통해서도 검색할 수 있습니다. 어떤 엔터티의 개체를 찾고 있는지 이미 알고 있는 경우 전용 API를 사용하는 것이 개체를 즉시 반환하기 때문에 더 쉬울 수 있습니다. 그러나 단점은 플레이어의 **master\_player\_account** 엔터티, 각 **title\_player\_account** 엔터티, 각 character 엔터티에 대해 API를 별도로 호출해야 한다는 것입니다.

### Entity Files 내보내기

[ExportMasterPlayerData](https://learn.microsoft.com/en-us/rest/api/playfab/admin/account-management/export-master-player-data) API를 사용하는 경우 플레이어와 관련된 모든 Entity Files는 있는 그대로 ZIP 아카이브의 /CustomFiles/ 디렉터리에 추가됩니다. 구체적으로:

플레이어의 **master\_player\_account** 엔터티의 경우 파일은 /CustomFiles/MasterPlayerFiles/\* 아래에 있습니다.

**title\_player\_account**의 경우 파일은 /CustomFiles/TitlePlayerFiles/\<TitlePlayerAccountId>/\* 아래에 있습니다.

<Note>
  각 엔터티에 대해 하나의 하위 디렉터리가 존재하며, title\_player\_account 엔터티 ID가 디렉터리 이름입니다.
</Note>

Entity Files는 직접 다운로드할 수도 있습니다. 먼저 [GetFiles](https://learn.microsoft.com/en-us/rest/api/playfab/data/file/get-files) API를 호출하여 엔터티 파일에 대한 메타데이터를 가져옵니다. 각 파일 메타데이터 문서에는 DownloadUrl 속성이 포함되어 있으며, 이 속성을 사용하여 파일을 직접 다운로드할 수 있습니다.


## Related topics

- [PlayFab GDPR - 플레이어 데이터 삭제 및 내보내기](/ko/services/playfab/data-analytics/privacy-compliance/playfab-gdpr-deleting-and-exporting-player-data.md)
- [PlayFab GDPR - 플레이어 데이터 삭제](/ko/services/playfab/data-analytics/privacy-compliance/gdpr-deleting-player-data.md)
- [PlayFab 플레이어 진행도 문서](/ko/services/playfab/player-progression/index.md)
- [PlayFab 데이터 및 분석 문서](/ko/services/playfab/data-analytics/index.md)
- [세그먼트의 플레이어 내보내기 자습서](/ko/services/playfab/live-service-management/game-configuration/segmentation/segmentation-export-players-in-a-segment.md)
