🎮 世界中のゲーム分析をしてきたPlayFabが大進化!
一緒に裏側の最新データ探索の仕組みを覗いてみよう
本日最初のdb tech showcaseセッションは16時20分から、話します。
こちらはその抜粋Preview資料です。もしよければお手元にDLください
#dbts2020 #DB
★ db tech showcaseへご登録お済みの方: https://bit.ly/2IoQKps
★ 未登録の方 https://bit.ly/3ljdXYt
db tech showcase ONLINE 2020 イベントページ
https://db-tech-showcase.com/dbts/2020/online
#dbts2020 #gamestackjp
以下の内容をおはなしいたします。
 第一部: PlayFab Insights
 ゲームの BaaS 「 PlayFab 」の分析機能 についてお話します
 従来の分析機能が大幅にバージョンアップしました(新機能=PlayFab Insights)
 内部には、Azure Data Explorer が使われています。機構をご紹介します
 第二部: Azure Data Explorer
 Azure Data Explore についてさらにお話します
 この製品の生い立ち、過去の経緯、Microsoft社内での利用シナリオについてご紹介し
ます
マイクロソフト
グローバルブラックベルトアジア地域
ゲームサーバーアーキテクト
増渕大輔
@dmasubuchi
slideshare
Kusto と Azure Data Explorer の言葉の定義
Kusto は、テレメトリ データをすばやく検索および視覚化するためのビッグデータ ログ検索および分析の社内向け
に開発されたサービスであり、開発コードです
当初はApplication Insightsや、OMS(現 Azure Monitor)のエンジンとして使われました
この社内サービス(Kusto)を一般企業向けに提供したものが、Azure Data Explorer です
ただし今でも Kusto の愛称で呼ばれることがあります。またツールやクエリーには Kusto の名前が残っています
例: Kusto Explorer、 KQL(Kusto Query Language)
今年リリースされた、PlayFabの新しい分析機能の、PlayFab Insights の基盤は、Azure Data Explorer です
ゲームデータ管理やマルチプレイ通信をサポート
します
ゲーム内ストア運営や、仮想通貨管理、アイテム
管理などの機能があります
様々なプラットフォームやデバイスに対応
開発者はサーバーのスキルを必用としません
プレイヤー行動ログ(イベント)を即座に可視化
ゲーム運営をスムーズにします
ゲーム向けBaaS 「PlayFab」とは?
https://playfab.com/
PlayStream
すべてのイベントのリアルタイムストリーム(と履歴)をモニター
Real-Time Segmentation
プロパティを利用して、プレーヤーをセグメント化
プレーヤーがセグメントに出入りするときにアクションをトリガー
Reports
ゲームの日次・月次の状況を、電子メール等でレポーティング
Real-Time Rules Engine
PlayStreamイベントに応答する強力なアクションとトリガーを設定
Event Filter and Search
タイムスライスを利用し、プレーヤー、イベント、エラー状態を分析
Microsoft Azure によって
強化された新しいログ分
析機能
アドホックなデータ探索
と分析用に最適化された
クエリ言語KQLで可視化
時系列のデータに対する
機械学習を利用した異常
検知を実装可能に
PlayStream Event Model reference
https://docs.microsoft.com/en-us/gaming/playfab/api-
references/events/
PlayFab内のイベントのプロパティ説明
Player、Title、など、PlayFabのデータの概念を理解していると読みとく
のはとても簡単です
Kusto の概要
https://docs.microsoft.com/ja-jp/azure/data-explorer/kusto/concepts/
Kusto のクエリ言語の説明や、よく使われ
るテーブル演算子の説明があります
チュートリアルやサンプル配下の天気データを用いることで、
実際に手を動かしながらKQLを学ぶことができます
['events.all']
| take 10
// Event list
['events.all']
| distinct FullName_Name
// project(“select” in SQL): https://docs.microsoft.com/en-us/azure/data-
explorer/kusto/query/projectoperator
['events.all']
| take 10
| project EventData
// “dynamic” data type: https://docs.microsoft.com/ja-jp/azure/data-
explorer/kusto/query/scalar-data-types/dynamic
['events.all']
| take 10
| project EventData
| getschema
['events.all']
| where FullName_Name == 'player_logged_in'
| take 10
| project EventData, EventData.Source
['events.all']
| where FullName_Name == 'player_logged_in'
| take 10
| project EventData, EventData.Location.CountryCode
// extend(define new column): https://docs.microsoft.com/en-us/azure/data-
explorer/kusto/query/extendoperator
['events.all']
| where FullName_Name == 'player_logged_in'
| take 10
| project EventData
| extend ipv4adress = tostring(EventData.IPV4Address)
| extend CountryCode = tostring(EventData.Location.CountryCode)
| extend Timestamp = todatetime(EventData.Timestamp)
// DAU, NRU, Retention rate, Churn rate
let startdate = datetime(2020-03-01);
let enddate = datetime(2020-06-30);
['events.all']
| where FullName_Name == 'player_logged_in'
| evaluate activity_metrics(Entity_Id, Timestamp, startdate, endofday(enddate), 1d)
//| render timechart
// DAU, NRU, Retention rate, Churn rate by Country
let startdate = datetime(2020-03-01);
let enddate = datetime(2020-06-30);
['events.all']
| where FullName_Name == 'player_logged_in'
| extend CountryCode = tostring(EventData.Location.CountryCode)
| evaluate activity_metrics(Entity_Id, Timestamp, startdate, endofday(enddate), 1d,
CountryCode)
//| render timechart
// DAU by country
let startdate = datetime(2020-03-01);
let enddate = datetime(2020-06-30);
['events.all']
| where FullName_Name == 'player_logged_in' and Timestamp between (startdate ..
endofday(enddate))
| extend CountryCode = tostring(EventData.Location.CountryCode)
| summarize dcount(Entity_Id) by CountryCode, bin(Timestamp, 1d)
| project Timestamp, CountryCode, dcount_Entity_Id
// Power BI
['events.all’]
| where Timestamp > ago(7d)
PlayFabイベントに関する情報
詳しくは・・・ https://docs.microsoft.com/en-us/gaming/playfab/api-references/events/
以前のPlayFab
• モバイル/カジュアル中心
• 小規模組織
• PlayFab 自身の情報が把握しにくかった
• 高度な分析ニーズはなかった
Microsoft への合流後
• AAAのタイトルのニーズ急増
• マルチプレイやチャットなど、PlayFab の
ワークロードが多様化
• データサイエンティストがいる
スタジオの高度な分析機会
• PlayFab 運営チーム自身が顧客の状況をリア
ルタイムで把握できるように
データの量・質が増えたら、分析手法も変わるべき
• PlayFab はもともと分析に強いと好評でした
• さらに、Azure に移行したことで、PlayFab Insights (Preview) の提供を開始
• プレーヤーの全体像をより把握しやすくなる
• インポート、エクスポートの柔軟性
• 様々なBIツールとの連携
• 機械学習の対応
PlayFab Analytics – direct access
Powering analytics with Azure Data Explorer
• クエリの埋め込みエクスペリエンス
• 保存されたクエリ/レンダリングされたグラフ
• データのインポートとエクスポート
• スケーラブルなパフォーマンス (IPU メーター)
Connectors through Proxy
Azure Data Explorer
(Kusto)
PlayFab Data Governance – GDPR
PlayFab.com
Game Manager
PlayFab
APIPurge or
Export
PlayFab SDK
Service Fabric Cluster
PCF Command
Feed Ingestion
Command Actor
Orchestrator
Actor
Table Delete Service
CRM
Management
API
PlayFab
Webhook
Stateful Service
(Partitioned by
Cluster]
Stateless Service
Stateful Actor
(Partitioned by PlayerId)
Stateful Actor
Determines Query Execution
GDPR compliance for all customers
• Data Portability: 顧客データのエクスポートを提供
• Forgottenの権利: すべてのPlayFabテレメトリの顧客データ消去
NGP Compliance (for Xbox Game Studios)
• Integrated into Microsoft Privacy Portal
DeleteMasterPlayer
ExportMasterPlayer
PlayFab 以外もいろいろと使われている ADX
Azure Monitor Security Products IoT
Office 365 Telemetry
Gaming
Kusto Basics – What & Why
• ビッグ データ ログ検索とテキスト分析
• ログ データへの格納とクエリに最適化
• クラウドベースのサービス
• 時系列データへの機械学習が優れている
• RDBMSではない
• クエリの最適化を可能にするレコードの更新
はサポートしていません
• インポート速度が速い(Ingestion の容量が大
きい)
• キホンはインメモリーデータベース(階層型
でディスクを組み合わせることも可能)
• Azure では、テレメトリ データをモダンな
データサービスに格納し、Kusto を使用して
新しいダッシュボードを構築するという大き
な流れがあった
• KQL(Kusto Query Language)はシンプルで
簡単
• 数十億行を数秒で検索
• Azureのデータセンター内部、ネットワークに
関する深い洞察を得ることができるようにな
る
• 視覚的なグラフですばやく要約する
• 迅速にCSV、Excel、プレーンテキストまたは
Power BIにエクスポートすることもできる
• 機械学習を応用して、異常検出などの追加の
シナリオの実装が簡単
• トラブルシューティングシナリオでかなり役
に立つ
Kusto Basics – Terminology
 すべてのデータは、固有のクラスターを介してアクセス可能
 クラスタにデータベースが含まれる
 データベースにテーブルが含まれる
 テーブルは、列と行にデータを格納 "表形式のデータ"
(Cluster)
(Database)
(Tables)
Kusto Basics – Exploring data
 Kusto Explorer でデータの探索を開始する最も簡単な方法
 リスト内のテーブルをダブルクリックすることです。
注意!!
この方法では実行しないでください
Kusto Basics – Exploring data
右のスクショの環境には24億行以上の
データが含まれていました!
制限のないクエリを実行すると、GB 相
当のデータが返され、
クラスターリソースが無駄になる可能性
があります
(2.4 Billion Rows)
ただし、Azure Data Explorer はクラスターのCore
数課金なのでクエリー課金バーストはありません
(ご安心ください)
Kusto Basics – Pipes & Operators
 Kusto のパイプは他のシステムの
パイピング データと同じ (UNIX、
BSD、JUNOS)
 パイプは、クエリを非常に読みやす
くします
 演算子の順序も重要
 タイムスタンプwhere句で最初に
フィルタリングするのが◎
 時間でフィルタリングするように最
適化されています
Kusto Basics – Limit Operator
 クエリ結果を小さなサイズに制限す
る。
 テーブル内の生データをすばやく確
認でき、データに含まれる内容、構
造を理解できます。
 右の場合は、結果をスキミングして、
デバイス名、インターフェイス、説
明、各種カウンタなどの詳細がテー
ブルに含まれているかをチェック
Kusto Basics – Where Operator
右のスクショでは以下の条件に合致
するルータのみを表示
 時間が過去 1 日
 tunnel を含まない
 ibr と lax を含む
Kusto Basics – Summarize Operator
Summarize(集計)演算の例
 TIMESTAMP列が最も近い時間にラ
ウンドされている
 T-SQL で DISTINCT を使用する場
合と似ています
Kusto Basics – Render Operator
Renderでデータをグラフィカルに
 右の例は(現在の時間を除く) 7 時間 の
データを取得
 TIMESTAMP で集計し、棒グラフに表
示
タイムチャートの例
//performance index % of requests meeting SLA (5 second)
request
|where context_data_eventTime >= now(-7d)
| summarize reqCount = count(), reqCountovr5 =
count(request_durationMetric_value > 50000000) by
context_data_eventTime bin = time(1h)
| extend pctover5s = reqCountovr5 *100.0 / reqCount
| extend pctIndex = 100.00 - pctover5s
| project context_data_eventTime , pctIndex
| render timechart
//reliability index - % of failed requests
request
| where context_data_eventTime >= now() -time(7d)
| summarize reqCount = count(), reqError =
count(request_responseCode >= 500) by
context_data_eventTime bin = time(1h)
| extend relIndex = reqError *100.00 / reqCount
| extend reliabilityIndex = 100.00 - relIndex
| project context_data_eventTime , reliabilityIndex
|render timechart
Kusto 続き.
Log files
Spatial & GPS
coordinates
Data market feeds
eGov feeds
Weather
Text/image
Web 2.0Advertising
Mobile
Collaboration
eCommerce
Web logs
Digital Marketing
Search Marketing
Recommendations
24
More decision makers
BigData
Megabytes
Gigabytes
Terabytes
Petabytes
Data Complexity: Velocity, Variety
ERP/CRM
Payables
Payroll
Inventory
Contacts
Deal Tracking
Sales Pipeline
Click streams
Wikis, Blogs
Sensors/RFID/
Devices
Social Sentiment
Audio/Video
Any append-
only stream
of records
Relational query
model:
Filter, aggregate, join,
calculated columns, …
Fully-
managed
Rapid iterations to
explore the data
High volume
High velocity
High variance
(structured, semi-
structured, free-text)
PaaS,
Vanilla,
Database
Purposely built
1センテンスで理解するADX
• メトリックと時系列データ
• テキスト検索とテキスト分析
• 多次元/リレーショナル分析
Comprehensive Strength
• シンプルで強力なデータ探索
• リッチ リレーショナル クエリ言語
• 全文検索
• ML Extentionの拡張性
• SQL/TDS エンドポイント
Analytics Query language
• 低遅延インジェズレーション
• 圧縮とインデックス作成
• 自動保持(リテンション設定)
• Hot/cold resource アロケーション
Data Ingestion and Management
• ハードウェアでスケールアウト
• ジオ全体でスケールアウト
• 細かいリソース使用率制御
• クロスジオでのクエリ
High performance over large data sets
Azure Data Explorer
A big data interactive platformAzure Data Explorer の内部の構造
Ingestion
Dev/BI Tools
Telemetry Analytics for internal Analytics Data Platform for products
AI OMS ASC Defender IOT
Interactive Analytics Big Data Platform
2015 - 2016
Israelの研究所で行われた社内のインキュ
ベーションプログラム
マイクロソフト社内のデータ分析プラッ
トフォームを作るビジョンで開始された
2019
サードパーティのオファーを試験運営
Operational Management Suite/Application
Insightsにまたがる統合プラットフォーム
クライアント/サーバー・セキュリティー
を介してブリッジされるシナリオに拡張
(IoT、テレメトリーシナリオ)
2017
パブリックプレビューは2018年後半
GAは、2019年
Kusto (現ADX)の生い立ち
Azure Data Explorer を使う主な目的
素晴らしいクラウドサービスを開発・運用するチームづくりには絶対に必要
1. Monitorするため
品質、製品健全性、ユーザーインサイト、ビジネス指標における監視とアクション
2. Correlate による作業効率化
クラウド、モバイル、Web アプリ間のデータの意味付け
3. Security を確保するため
準拠した方法でのコンシューマ・企業データのセキュリティ
4. Interop で好きなツールやデータにつなぐため
他のデータ セットおよびテクノロジとの相互運用
なぜこれらの
訪問者は買い
物カゴを放棄
するのです
か?
最も不満な
ユーザーは誰
ですか?
お客様がこの
コンテンツを
クリックしな
いのはなぜで
すか?
生産品質に影
響を与えるも
のは何です
か?
何の背後にあ
る理由を理解
する
サービスのパ
ターンを深く
理解する
創発的な行動
と傾向を発見
する
新しいアイデ
アを刺激でき
る予期しない
パターンを発
見する
2019 GA 以降、徐々に 顧客事例登場
 クラウド化
 巨大化するサービス
 デジタルデータ肥大化
 データ活用の重要性
大規模なIoTアプリケーション
> 数十億のセンサー、製造設備、車両からのテレメトリー監視
ビッグ データ ログの分析が必要な企業
> アドネットワーク、オンラインゲーム、ニュースサイト等
推奨コンテンツ、異常検知、データサイエンティスト負荷軽減
成長したSaaSアプリケーション
> トレンドの発見、パーソナライズされた体感の提供
Azureの利用の気を付けるべき点やチューニングのヒント、設計パターンを提案する
公式ドキュメント (URL: https://docs.microsoft.com/ja-jp/azure/architecture/ )
ワークロード「Analytics」の配下に、Azure Data Explorer を利用したパターンが
4つほどあります
注意: ADXはデータウェアハウス処理が苦手です
Modern data warehousing Real-time analytics
リアルタイムで様々な
サービス、デバイスから
洞察を得る
Machine Learning
高度な異常検知のための
分析プラットフォーム
複数のソースから、さまざま
な形式でデータを分析
ここが得意
Product
 Product Page: http://aka.ms/AzureDataExplorer
 Docs: https://aka.ms/adx.docs
 Pricing Page: https://azure.microsoft.com/en-us/pricing/details/data-explorer/
 Cost Estimator: http://aka.ms/adx.cost
Demos
 Scott Guthrie’s Keynote (ADX Announcement/Demo)
 Rohan Kumar’s Keynote (ADX Announcement/Demo)
 Scott Guthrie’s in Techorama (Scott’s demo)
Blogs
 Announcement: https://azure.microsoft.com/en-in/blog/introducing-azure-data-explorer/
 Whitepaper: https://azure.microsoft.com/en-us/resources/azure-data-explorer/en-us/
 101 blog: https://azure.microsoft.com/en-us/blog/azure-data-explorer-technology-101/
Social and Community
 Twitter: @AzDataExplorer
 Stack overflow: https://stackoverflow.com/search?q=Azure+Data+Explorer
 Tech Community: https://techcommunity.microsoft.com/t5/Azure-Data-Explorer/bd-p/Kusto
リンク集

Preview: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう

  • 1.
    🎮 世界中のゲーム分析をしてきたPlayFabが大進化! 一緒に裏側の最新データ探索の仕組みを覗いてみよう 本日最初のdb techshowcaseセッションは16時20分から、話します。 こちらはその抜粋Preview資料です。もしよければお手元にDLください #dbts2020 #DB ★ db tech showcaseへご登録お済みの方: https://bit.ly/2IoQKps ★ 未登録の方 https://bit.ly/3ljdXYt db tech showcase ONLINE 2020 イベントページ https://db-tech-showcase.com/dbts/2020/online #dbts2020 #gamestackjp 以下の内容をおはなしいたします。  第一部: PlayFab Insights  ゲームの BaaS 「 PlayFab 」の分析機能 についてお話します  従来の分析機能が大幅にバージョンアップしました(新機能=PlayFab Insights)  内部には、Azure Data Explorer が使われています。機構をご紹介します  第二部: Azure Data Explorer  Azure Data Explore についてさらにお話します  この製品の生い立ち、過去の経緯、Microsoft社内での利用シナリオについてご紹介し ます マイクロソフト グローバルブラックベルトアジア地域 ゲームサーバーアーキテクト 増渕大輔 @dmasubuchi slideshare
  • 2.
    Kusto と AzureData Explorer の言葉の定義 Kusto は、テレメトリ データをすばやく検索および視覚化するためのビッグデータ ログ検索および分析の社内向け に開発されたサービスであり、開発コードです 当初はApplication Insightsや、OMS(現 Azure Monitor)のエンジンとして使われました この社内サービス(Kusto)を一般企業向けに提供したものが、Azure Data Explorer です ただし今でも Kusto の愛称で呼ばれることがあります。またツールやクエリーには Kusto の名前が残っています 例: Kusto Explorer、 KQL(Kusto Query Language) 今年リリースされた、PlayFabの新しい分析機能の、PlayFab Insights の基盤は、Azure Data Explorer です
  • 3.
  • 4.
  • 5.
  • 6.
    PlayStream Event Modelreference https://docs.microsoft.com/en-us/gaming/playfab/api- references/events/ PlayFab内のイベントのプロパティ説明 Player、Title、など、PlayFabのデータの概念を理解していると読みとく のはとても簡単です Kusto の概要 https://docs.microsoft.com/ja-jp/azure/data-explorer/kusto/concepts/ Kusto のクエリ言語の説明や、よく使われ るテーブル演算子の説明があります チュートリアルやサンプル配下の天気データを用いることで、 実際に手を動かしながらKQLを学ぶことができます
  • 7.
    ['events.all'] | take 10 //Event list ['events.all'] | distinct FullName_Name // project(“select” in SQL): https://docs.microsoft.com/en-us/azure/data- explorer/kusto/query/projectoperator ['events.all'] | take 10 | project EventData // “dynamic” data type: https://docs.microsoft.com/ja-jp/azure/data- explorer/kusto/query/scalar-data-types/dynamic ['events.all'] | take 10 | project EventData | getschema ['events.all'] | where FullName_Name == 'player_logged_in' | take 10 | project EventData, EventData.Source ['events.all'] | where FullName_Name == 'player_logged_in' | take 10 | project EventData, EventData.Location.CountryCode // extend(define new column): https://docs.microsoft.com/en-us/azure/data- explorer/kusto/query/extendoperator ['events.all'] | where FullName_Name == 'player_logged_in' | take 10 | project EventData | extend ipv4adress = tostring(EventData.IPV4Address) | extend CountryCode = tostring(EventData.Location.CountryCode) | extend Timestamp = todatetime(EventData.Timestamp) // DAU, NRU, Retention rate, Churn rate let startdate = datetime(2020-03-01); let enddate = datetime(2020-06-30); ['events.all'] | where FullName_Name == 'player_logged_in' | evaluate activity_metrics(Entity_Id, Timestamp, startdate, endofday(enddate), 1d) //| render timechart // DAU, NRU, Retention rate, Churn rate by Country let startdate = datetime(2020-03-01); let enddate = datetime(2020-06-30); ['events.all'] | where FullName_Name == 'player_logged_in' | extend CountryCode = tostring(EventData.Location.CountryCode) | evaluate activity_metrics(Entity_Id, Timestamp, startdate, endofday(enddate), 1d, CountryCode) //| render timechart // DAU by country let startdate = datetime(2020-03-01); let enddate = datetime(2020-06-30); ['events.all'] | where FullName_Name == 'player_logged_in' and Timestamp between (startdate .. endofday(enddate)) | extend CountryCode = tostring(EventData.Location.CountryCode) | summarize dcount(Entity_Id) by CountryCode, bin(Timestamp, 1d) | project Timestamp, CountryCode, dcount_Entity_Id // Power BI ['events.all’] | where Timestamp > ago(7d) PlayFabイベントに関する情報 詳しくは・・・ https://docs.microsoft.com/en-us/gaming/playfab/api-references/events/
  • 8.
    以前のPlayFab • モバイル/カジュアル中心 • 小規模組織 •PlayFab 自身の情報が把握しにくかった • 高度な分析ニーズはなかった Microsoft への合流後 • AAAのタイトルのニーズ急増 • マルチプレイやチャットなど、PlayFab の ワークロードが多様化 • データサイエンティストがいる スタジオの高度な分析機会 • PlayFab 運営チーム自身が顧客の状況をリア ルタイムで把握できるように
  • 9.
    データの量・質が増えたら、分析手法も変わるべき • PlayFab はもともと分析に強いと好評でした •さらに、Azure に移行したことで、PlayFab Insights (Preview) の提供を開始 • プレーヤーの全体像をより把握しやすくなる • インポート、エクスポートの柔軟性 • 様々なBIツールとの連携 • 機械学習の対応
  • 10.
    PlayFab Analytics –direct access Powering analytics with Azure Data Explorer • クエリの埋め込みエクスペリエンス • 保存されたクエリ/レンダリングされたグラフ • データのインポートとエクスポート • スケーラブルなパフォーマンス (IPU メーター) Connectors through Proxy
  • 11.
    Azure Data Explorer (Kusto) PlayFabData Governance – GDPR PlayFab.com Game Manager PlayFab APIPurge or Export PlayFab SDK Service Fabric Cluster PCF Command Feed Ingestion Command Actor Orchestrator Actor Table Delete Service CRM Management API PlayFab Webhook Stateful Service (Partitioned by Cluster] Stateless Service Stateful Actor (Partitioned by PlayerId) Stateful Actor Determines Query Execution GDPR compliance for all customers • Data Portability: 顧客データのエクスポートを提供 • Forgottenの権利: すべてのPlayFabテレメトリの顧客データ消去 NGP Compliance (for Xbox Game Studios) • Integrated into Microsoft Privacy Portal DeleteMasterPlayer ExportMasterPlayer
  • 12.
    PlayFab 以外もいろいろと使われている ADX AzureMonitor Security Products IoT Office 365 Telemetry Gaming
  • 13.
    Kusto Basics –What & Why • ビッグ データ ログ検索とテキスト分析 • ログ データへの格納とクエリに最適化 • クラウドベースのサービス • 時系列データへの機械学習が優れている • RDBMSではない • クエリの最適化を可能にするレコードの更新 はサポートしていません • インポート速度が速い(Ingestion の容量が大 きい) • キホンはインメモリーデータベース(階層型 でディスクを組み合わせることも可能) • Azure では、テレメトリ データをモダンな データサービスに格納し、Kusto を使用して 新しいダッシュボードを構築するという大き な流れがあった • KQL(Kusto Query Language)はシンプルで 簡単 • 数十億行を数秒で検索 • Azureのデータセンター内部、ネットワークに 関する深い洞察を得ることができるようにな る • 視覚的なグラフですばやく要約する • 迅速にCSV、Excel、プレーンテキストまたは Power BIにエクスポートすることもできる • 機械学習を応用して、異常検出などの追加の シナリオの実装が簡単 • トラブルシューティングシナリオでかなり役 に立つ
  • 14.
    Kusto Basics –Terminology  すべてのデータは、固有のクラスターを介してアクセス可能  クラスタにデータベースが含まれる  データベースにテーブルが含まれる  テーブルは、列と行にデータを格納 "表形式のデータ" (Cluster) (Database) (Tables)
  • 15.
    Kusto Basics –Exploring data  Kusto Explorer でデータの探索を開始する最も簡単な方法  リスト内のテーブルをダブルクリックすることです。 注意!! この方法では実行しないでください
  • 16.
    Kusto Basics –Exploring data 右のスクショの環境には24億行以上の データが含まれていました! 制限のないクエリを実行すると、GB 相 当のデータが返され、 クラスターリソースが無駄になる可能性 があります (2.4 Billion Rows) ただし、Azure Data Explorer はクラスターのCore 数課金なのでクエリー課金バーストはありません (ご安心ください)
  • 17.
    Kusto Basics –Pipes & Operators  Kusto のパイプは他のシステムの パイピング データと同じ (UNIX、 BSD、JUNOS)  パイプは、クエリを非常に読みやす くします  演算子の順序も重要  タイムスタンプwhere句で最初に フィルタリングするのが◎  時間でフィルタリングするように最 適化されています
  • 18.
    Kusto Basics –Limit Operator  クエリ結果を小さなサイズに制限す る。  テーブル内の生データをすばやく確 認でき、データに含まれる内容、構 造を理解できます。  右の場合は、結果をスキミングして、 デバイス名、インターフェイス、説 明、各種カウンタなどの詳細がテー ブルに含まれているかをチェック
  • 19.
    Kusto Basics –Where Operator 右のスクショでは以下の条件に合致 するルータのみを表示  時間が過去 1 日  tunnel を含まない  ibr と lax を含む
  • 20.
    Kusto Basics –Summarize Operator Summarize(集計)演算の例  TIMESTAMP列が最も近い時間にラ ウンドされている  T-SQL で DISTINCT を使用する場 合と似ています
  • 21.
    Kusto Basics –Render Operator Renderでデータをグラフィカルに  右の例は(現在の時間を除く) 7 時間 の データを取得  TIMESTAMP で集計し、棒グラフに表 示
  • 22.
    タイムチャートの例 //performance index %of requests meeting SLA (5 second) request |where context_data_eventTime >= now(-7d) | summarize reqCount = count(), reqCountovr5 = count(request_durationMetric_value > 50000000) by context_data_eventTime bin = time(1h) | extend pctover5s = reqCountovr5 *100.0 / reqCount | extend pctIndex = 100.00 - pctover5s | project context_data_eventTime , pctIndex | render timechart //reliability index - % of failed requests request | where context_data_eventTime >= now() -time(7d) | summarize reqCount = count(), reqError = count(request_responseCode >= 500) by context_data_eventTime bin = time(1h) | extend relIndex = reqError *100.00 / reqCount | extend reliabilityIndex = 100.00 - relIndex | project context_data_eventTime , reliabilityIndex |render timechart
  • 23.
  • 24.
    Log files Spatial &GPS coordinates Data market feeds eGov feeds Weather Text/image Web 2.0Advertising Mobile Collaboration eCommerce Web logs Digital Marketing Search Marketing Recommendations 24 More decision makers BigData Megabytes Gigabytes Terabytes Petabytes Data Complexity: Velocity, Variety ERP/CRM Payables Payroll Inventory Contacts Deal Tracking Sales Pipeline Click streams Wikis, Blogs Sensors/RFID/ Devices Social Sentiment Audio/Video
  • 25.
    Any append- only stream ofrecords Relational query model: Filter, aggregate, join, calculated columns, … Fully- managed Rapid iterations to explore the data High volume High velocity High variance (structured, semi- structured, free-text) PaaS, Vanilla, Database Purposely built 1センテンスで理解するADX
  • 26.
    • メトリックと時系列データ • テキスト検索とテキスト分析 •多次元/リレーショナル分析 Comprehensive Strength • シンプルで強力なデータ探索 • リッチ リレーショナル クエリ言語 • 全文検索 • ML Extentionの拡張性 • SQL/TDS エンドポイント Analytics Query language • 低遅延インジェズレーション • 圧縮とインデックス作成 • 自動保持(リテンション設定) • Hot/cold resource アロケーション Data Ingestion and Management • ハードウェアでスケールアウト • ジオ全体でスケールアウト • 細かいリソース使用率制御 • クロスジオでのクエリ High performance over large data sets Azure Data Explorer A big data interactive platformAzure Data Explorer の内部の構造 Ingestion Dev/BI Tools
  • 27.
    Telemetry Analytics forinternal Analytics Data Platform for products AI OMS ASC Defender IOT Interactive Analytics Big Data Platform 2015 - 2016 Israelの研究所で行われた社内のインキュ ベーションプログラム マイクロソフト社内のデータ分析プラッ トフォームを作るビジョンで開始された 2019 サードパーティのオファーを試験運営 Operational Management Suite/Application Insightsにまたがる統合プラットフォーム クライアント/サーバー・セキュリティー を介してブリッジされるシナリオに拡張 (IoT、テレメトリーシナリオ) 2017 パブリックプレビューは2018年後半 GAは、2019年 Kusto (現ADX)の生い立ち
  • 28.
    Azure Data Explorerを使う主な目的 素晴らしいクラウドサービスを開発・運用するチームづくりには絶対に必要 1. Monitorするため 品質、製品健全性、ユーザーインサイト、ビジネス指標における監視とアクション 2. Correlate による作業効率化 クラウド、モバイル、Web アプリ間のデータの意味付け 3. Security を確保するため 準拠した方法でのコンシューマ・企業データのセキュリティ 4. Interop で好きなツールやデータにつなぐため 他のデータ セットおよびテクノロジとの相互運用
  • 29.
  • 30.
    2019 GA 以降、徐々に顧客事例登場  クラウド化  巨大化するサービス  デジタルデータ肥大化  データ活用の重要性 大規模なIoTアプリケーション > 数十億のセンサー、製造設備、車両からのテレメトリー監視 ビッグ データ ログの分析が必要な企業 > アドネットワーク、オンラインゲーム、ニュースサイト等 推奨コンテンツ、異常検知、データサイエンティスト負荷軽減 成長したSaaSアプリケーション > トレンドの発見、パーソナライズされた体感の提供
  • 31.
  • 32.
    注意: ADXはデータウェアハウス処理が苦手です Modern datawarehousing Real-time analytics リアルタイムで様々な サービス、デバイスから 洞察を得る Machine Learning 高度な異常検知のための 分析プラットフォーム 複数のソースから、さまざま な形式でデータを分析 ここが得意
  • 33.
    Product  Product Page:http://aka.ms/AzureDataExplorer  Docs: https://aka.ms/adx.docs  Pricing Page: https://azure.microsoft.com/en-us/pricing/details/data-explorer/  Cost Estimator: http://aka.ms/adx.cost Demos  Scott Guthrie’s Keynote (ADX Announcement/Demo)  Rohan Kumar’s Keynote (ADX Announcement/Demo)  Scott Guthrie’s in Techorama (Scott’s demo) Blogs  Announcement: https://azure.microsoft.com/en-in/blog/introducing-azure-data-explorer/  Whitepaper: https://azure.microsoft.com/en-us/resources/azure-data-explorer/en-us/  101 blog: https://azure.microsoft.com/en-us/blog/azure-data-explorer-technology-101/ Social and Community  Twitter: @AzDataExplorer  Stack overflow: https://stackoverflow.com/search?q=Azure+Data+Explorer  Tech Community: https://techcommunity.microsoft.com/t5/Azure-Data-Explorer/bd-p/Kusto リンク集