> ## 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.

# 開始使用 Data Explorer 進階模式

> 了解如何在進階模式中使用 Kusto 查詢語言對 events.all 資料表撰寫自訂的 PlayFab Data Explorer 查詢，以進行更深入的分析。

<Info>
  Data Explorer 功能目前為公開預覽版。隨著我們持續收集意見反應
</Info>

並針對客戶使用進行最佳化，預期此功能會持續變更。

Data Explorer 進階模式是針對更複雜的查詢和更深入的解析而設計，使用 [Azure Data Explorer 查詢語言](https://learn.microsoft.com/en-us/azure/data-explorer/write-queries)，這是一種針對臨機操作資料探索最佳化的類 SQL 語言。若要了解如何撰寫非技術性查詢，請參閱 [開始使用 Data Explorer 基本模式](/zh-TW/services/playfab/data-analytics/learn-data/data-explorer/getting-started-with-data-explorer-basic) 教學課程。

## 撰寫自訂查詢

若要開始在進階模式中撰寫您自己的查詢，請務必先了解您所存取之資料的結構。

### events.all 資料表

`events.all` 資料表是所有傳入事件的預設目的地。它是單一的半結構化資料表，包含常見值的資料行，例如時間和事件名稱。您很快就會熟悉 EventData 資料行，其中包含完整的原始 JSON 承載，幾乎在所有查詢中都很有用。您可以閱讀以下關於 [events.all 資料表](/zh-TW/services/playfab/data-analytics/acting-data/schemas-events-all) 的文件。

### 查詢的結構

查詢運算式最常以資料表名稱開頭，後面接著管道分隔符號 (|)。
接下來是一或多個運算子。每個運算子都以管道分隔符號分隔。

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/learn-data/data-explorer/Explorer4-02.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=d5e7d0ee878b379a5394c91503848ae5" alt="運算式" width="1893" height="530" data-path="images/playfab/data-analytics/learn-data/data-explorer/Explorer4-02.png" />

依個人偏好，查詢可以寫在單一行，也可以在每個管道分隔符號前換行。這對查詢本身沒有任何影響。

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/learn-data/data-explorer/Explorer5-02.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=35e6290c6672fcc5d4213851e8bb77a0" alt="查詢窗格" width="1893" height="530" data-path="images/playfab/data-analytics/learn-data/data-explorer/Explorer5-02.png" />

查詢窗格可以包含多個查詢。這讓您可以輕鬆地從簡單的運算式開始，驗證其可以執行，再以此為基礎繼續建構。

空白行會將一個查詢與另一個查詢分隔開來。當您按下「Run」按鈕時，游標位置會決定要執行哪一個查詢。您也可以醒目提示查詢的一部分，只執行該運算式。

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/learn-data/data-explorer/Explorer6-02.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=8dc281806663ec24ce18194a630a6f6a" alt="執行" width="1893" height="530" data-path="images/playfab/data-analytics/learn-data/data-explorer/Explorer6-02.png" />

### 建立您的第一個查詢

現在讓我們從頭開始撰寫您的第一個查詢。您可以在查詢窗格中輸入資料表名稱，但我們將使用一個小捷徑。在資源窗格中找到 `events.all` 資料表。您可能需要按一下箭頭來展開您的遊戲 ID 資料庫。

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/learn-data/data-explorer/Explorer7-01.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=402ea5610105562cc10521a401070380" alt="Events.all 資料表" width="3000" height="1673" data-path="images/playfab/data-analytics/learn-data/data-explorer/Explorer7-01.png" />

找到 `events.all` 資料表後，按兩下資料表名稱。您會發現此運算式已新增至查詢窗格。

<Note>
  在預覽版中，您需要手動在資料表名稱周圍加上方括號和單引號。我們正在修正此不便之處。
</Note>

```json theme={null}
['events.all']
| 
```

請注意名稱周圍的方括號和單引號。每當資料表或資料行名稱包含「.」時，都必須加上這些符號。您的游標現在位於撰寫第一個運算子的正確位置。讓我們開始使用 take 運算子。

```json theme={null}
['events.all']
| take 100
```

執行此查詢。請注意，結果窗格現在會顯示 100 列原始資料。

在結果窗格中，選取最上面一列。使用向右鍵瀏覽至 FullName\_Name 資料行。這是事件的名稱。按向下鍵，直到找到 `player_logged_in` 事件。找到之後，按向右鍵移至 EventData 資料行並按兩下。您現在應該會看到：

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/learn-data/data-explorer/Explorer8-01.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=c8ace0436fb553607c012902fdeb7a79" alt="Event Data 資料行" width="3000" height="1673" data-path="images/playfab/data-analytics/learn-data/data-explorer/Explorer8-01.png" />

您的查詢可以使用點標記法 (.) 參考 EventData JSON 中的任何屬性。您現在可以試試看，修改查詢以只傳回單一玩家的 player\_logged\_in 事件。按兩下 EntityID GUID 並將其複製到剪貼簿。

現在依照下列方式更新您的查詢，並插入您複製的 GUID：

```json theme={null}
['events.all']
| where FullName_Name == 'player_logged_in'
| where Entity_Id == 'paste from clipboard here'
```

<Tip>
  雙等號用來評估字串是否相等。開頭和結尾的單引號用來標示字串。
</Tip>

執行查詢，您會看到結果窗格只顯示所選玩家的 player\_logged\_in 事件。您可以使用點標記法參考多個巢狀層級的 JSON 階層，只要在每個層級之間加上一個點即可。

現在讓我們建立第二個查詢，依地區將玩家登入分組。在不刪除已撰寫內容的情況下，按兩次 Enter 鍵。讓我們使用「//」為下一個查詢加上註解。註解不會被執行，有助於追蹤每個查詢背後的意圖。

```json theme={null}
//Player logins by platform
```

再次從資源窗格按兩下 events.all 資料表。這次，讓我們在運算式中加入時間分隔，將查詢範圍限定為過去三天。

```json theme={null}
//Player logins by platform
['events.all']
| where Timestamp > ago(30d)
| where FullName_Name == 'player_logged_in'
```

執行此查詢，即可取得過去三天所有登入事件的完整清單。不過，我們想知道的是有多少不同的玩家登入，而不是事件的數量。為此，我們將依 Entity ID 使用 distinct 運算子。

```json theme={null}
['events.all']
| where Timestamp > ago(3d)
| where FullName_Name == 'player_logged_in'
| distinct Entity_Id
```

此查詢會傳回過去三天內曾登入的 Entity ID 清單。結果窗格會顯示記錄數目，因此我們可以看到總數。

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/learn-data/data-explorer/Explorer9-03.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=4b92787156e8ca61006503aa4edeb049" alt="記錄" width="1888" height="509" data-path="images/playfab/data-analytics/learn-data/data-explorer/Explorer9-03.png" />

現在讓我們取得從每個平台登入的玩家人數。為此，我們需要依 EventData JSON 中的 platform 屬性分組的 Entity ID 相異計數。這需要使用 `summarize` 運算子。由於 `summarize` 不支援動態類型，我們也需要將 platform 轉換為字串。

```json theme={null}
['events.all']
| where Timestamp > ago(3d)
| where FullName_Name == 'player_logged_in'
| summarize dcount(Entity_Id) by tostring(EventData.Platform)
```

讓我們以精彩的方式收尾。只要再加入一個運算式，我們就可以將結果轉譯為直條圖。

```json theme={null}
['events.all']
| where Timestamp > ago(3d)
| where FullName_Name == 'player_logged_in'
| summarize dcount(Entity_Id) by tostring(EventData.Platform)
| render columnchart
```

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/learn-data/data-explorer/Explorer10-01.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=3d0e560318ada4b6f18f158aeff7d5f6" alt="查詢" width="3000" height="1673" data-path="images/playfab/data-analytics/learn-data/data-explorer/Explorer10-01.png" />

## 範例查詢

我們只觸及了在 Explorer 中可撰寫之查詢類型的皮毛。您可以在 Explorer 頁面按下「What’s This」來載入更多範例查詢。每個範例查詢都經過挑選，用以示範各種可用的運算子，以及如何將其應用於真實世界的問題。

<Note>
  由於您的資料結構可能與我們的示範資料集不同，您可能需要修改範例查詢，才能在您的案例中執行。
</Note>

## 限制

有兩項限制規範 Explorer 查詢的使用方式：

1. 最長查詢執行時間：個別查詢的執行時間不得超過 30 秒。如果超過此限制，查詢將會終止，而且您會收到錯誤訊息。

2. 間隔使用量：每個遊戲在任何 10 分鐘的間隔內，累計總執行時間上限為三分鐘。如果超過此限制，您會收到錯誤訊息，而且必須等待一段時間才能執行其他查詢。

## 資料保留

根據預設，Data Explorer 查詢會在熱儲存體上執行，您可以在管理工具中設定熱儲存體。搜尋超出熱儲存體中所儲存資料的查詢，執行時間會明顯較長，而且可能會逾時。


## Related topics

- [Data Explorer 快速入門](/zh-TW/services/playfab/data-analytics/learn-data/data-explorer/quickstart.md)
- [開始使用 Data Explorer 基本模式](/zh-TW/services/playfab/data-analytics/learn-data/data-explorer/getting-started-with-data-explorer-basic.md)
- [Data Explorer](/zh-TW/services/playfab/data-analytics/learn-data/data-explorer/index.md)
- [開始使用 PlayFab Explorer](/zh-TW/services/playfab/data-analytics/acting-data/schemas-events-all.md)
- [開始使用觸控](/zh-TW/build/core-features/common/game-streaming/game-streaming-getting-started-with-touch.md)
