DP-900受験日記

# 1.はじめに
Microsoft認定資格のDP-900に合格しました！
今後受験を検討している方向けに出題範囲や勉強法などをまとめましたので、参考にしてください！

https://learn.microsoft.com/ja-jp/credentials/certifications/azure-data-fundamentals/?practice-assessment-type=certification

# 2.出題範囲
## データサービスの種類
### AzureSQL
Microsoft SQL Server データベース エンジンに基づくリレーショナル データベース ソリューション ファミリの総称
※Azure SQL Database、Aazure SQL Managed Instanceのどちらか迷う問題も多いので、この２つの違いはしっかりと理解した方が良い
- Azure SQL Database
    - Azure でホストされるフル マネージドのサービスとしてのプラットフォーム (PaaS) データベース
    - スケーラビリティ機能がある
- Aazure SQL Managed Instance
    - 自動メンテナンス機能を備えた SQL Server のホストされたインスタンス。これにより、Azure SQL DB よりも柔軟な構成が可能になるが、所有者の管理責任が増える。
- Azure SQL VM 
    - SQL Server がインストールされている仮想マシン。所有者の管理責任のもと、もっとも柔軟性のある構成が構築できる。
    - SQL Server とほぼ１００％の互換性があるサービス

### オープンソースRDBのAzureDatabase
一般的なオープンソースのリレーショナル データベース システム用のマネージド サービス
- Azure Database for MySQL
- Azure Database for MariaDB
    - テンポラルデータのサポートが組み込まれている
    - １つのテーブルにデータの複数バージョンを保持できる。
- Azure Database for PostgreSQL
    - ハイブリットのリレーショナルオブジェクトデータベース
    - 非リレーショナルプロパティを持つカスタムデータ型を格納することが出来る

### Azure Cosmos DB
非リレーショナル (NoSQL) データベース システム
データアナリストによるモデリングとレポート作成をサポートするエンタープライズ分析ソリューションに Cosmos DB のデータソースを統合する事が多い。
**ドキュメント、グラフ、および列ファミリ データベースを格納できる。**
**NoSQL APIはJSON形式に最適化されている。**
**リソースへのアクセス許可をユーザーに対して付与する方法としてリソース トークンが用いられる。**

### Azure Storage
データ格納のAzureサービス
- BLOBをサポート
    - ブロックBLOB
        - 最も低コスト
        - 最小単位
    - ページBLOB
        - ランダムな読み書きに最適化
    - 追加BLOB
        - 追加に最適化
- ファイル共有
- テーブル

### Azure Data Factory
データを転送および変換するデータパイプラインを定義してスケジュールを設定できるようにするAzure サービス。
他のデータストアサービスと連動させ、データの抽出・変換・転送が行える。

### Azure Synapse Analytics
データ分析用の統合サービス。
以下のような分析機能を提供
- パイプライン 
    - Azure Data Factoryと同じ技術
- SQL
    - SQLデータベースエンジン
- Apache Spark
    - Java、Scala、Python、SQL を含む複数のプログラミング言語と API をサポートするオープンソースの分散データ処理システム
- Azure Synapse Data Explorer
    - Kusto クエリ言語 (KQL) を使用して、ログおよびテレメトリ データにリアルタイムでクエリを実行するために最適化された高パフォーマンスのデータ分析ソリューション
- 大量データ格納用にマウント出来るストレージ
    - Azure Blob Storage
    - Azure Data Lake Storage

### Azure Databricks
一般的な Databricks プラットフォームの Azure 統合バージョン

### Azure HDInsight
一般的な Apache オープンソースのビッグ データ処理テクノロジに対して、Azure でホストされるクラスターを提供する Azure サービス
- Apache Spark
    - Azure Synapse Analyticsと同じ
- Apache Hadoop
    - MapReduce ジョブを使用して、複数のクラスター ノード間で大量のデータを効率的に処理する分散システ
- Apache HBase
    - 大規模な NoSQL データ ストレージとクエリのためのオープンソース システム
- Apache Kafka
    - データ ストリーム処理用のメッセージ ブローカー

### Azure Stream Analytics
リアルタイムのストリーム処理エンジンであり、入力からデータのストリームを取り込み、入力ストリームからデータを抽出して操作するクエリを適用し、分析またはさらに処理のために結果を出力に書き込む。

### Azure Data Explorer
Azure Synapse Analytics の Azure Synapse Data Explorer ランタイムと同じ高パフォーマンスのログおよびテレメトリ データのクエリを提供するスタンドアロン サービス

### Microsoft Purview
企業規模のデータ ガバナンスと検出可能性を実現するソリューション。
オープンで管理されたレイクハウスに基づく統合されたサービスとしてのソフトウェア (SaaS) 分析プラットフォーム。

### Microsoft Fabric
オープンで管理されたレイクハウスに基づく統合されたサービスとしてのソフトウェア (SaaS) 分析プラットフォーム。

### Azure Data Lake
大量の構造化および非構造化データを処理するためのクラウドベースのストレージサービス
Parquet形式でデータを格納する
ファイルやフォルダレベルでアクセス制御リスト（ACL）をサポートしている
ファイルやフォルダレベルでロールベースのアクセス制御（RBAC）をサポートしている

## データ構造
- 構造化データ
    - 行列で構成された表形式のデータ
    - 一般的なRDBのテーブルデータ
 - 半構造化データ
     - 代表的な例はJSON
     - データごとにフィールドの有無などが異なる
 - 非構造化データ
     - バイナリデータ

## 特殊なファイル形式
 - Avro
     - Apacheによって作成
     - 各レコードにはデータ構造を説明するヘッダーが含まれている
 - ORC
     - データは行ではなく列として編成される
     - HortonWorksによって作成
     - データにはストライプが含まれており、ストライプには列または列のセットデータが保持されている
 - Parquet
     - ClouderaとTwitterによって作成
     - 行グループが存在しており、各列のデータは同じ行グループにまとめて格納されている

## データストアモデル
 - リレーショナルデータベース
     - ２次元テーブルでデータを編成する
     - SQLを用いて管理する
     - ACID（原子性、一貫性、独立性、永続性）に準拠
 - キー/値ストア
     - 複雑なデータベース管理システムを必要とせずに 2 列形式でデータを格納できる
 - ドキュメント データベース
     - 名前付きフィールドとデータで構成された "ドキュメント" のコレクション
 - グラフ データベース
     - ノードとエッジの 2 種類の情報を格納
     - ノード間のリレーションシップが指定
 - データ分析
     - データの取り込み、保存、および分析のための大規模な並列ソリューション
     - スケーラビリティを最大限に高めるため複数のサーバーに分散
     - 読み取り操作に最適化されている
 - 列ファミリのデータベース
     - データを行と列に編成
     - 列は列ファミリと呼ばれるグループに分類される
 - 検索エンジンのデータベース
     - アプリケーションによって、外部データ ストアで保持されている情報を検索できる。
 - タイム シリーズ データベース
     - 時間別に整理された時系列データのセット
 - オブジェクト ストレージ
     - 大規模なバイナリ オブジェクト の格納に最適
 - 共有ファイル
     - ネットワーク経由でファイルにアクセス

 | データストアモデル | Azureサービス |
|:-:|:-:|
| RDB | Azure SQL Database、<br>Azure Database for MySQL/for PostgreSQL/for MariaDB  |
| キー/値  | Azure Cosmos DB for Table/ for NoSQL 、Azure Cache for Redis、Azure Table Storage |
| ドキュメントDB  | Azure Cosmos DB for NoSQL  |
| グラフDB  | Azure Cosmos DB for Apache Gremlin、SQL Server  |
| データ分析  | Azure Synapse Analytics、Azure Data Lake、Azure Data Explorer、Azure Analysis Services、HDInsight、Azure Databricks  | 
| 列ファミリDB  | Azure Cosmos DB for Apache Cassandra、HBase in HDInsight  | 
| 検索エンジンDB  | Azure Search |
| タイムシリーズDB  | Azure Time Series Insights |
| オブジェクトストレージ  | Azure Blob Storage、Azure Data Lake Storage Gen2  |
| 共有ファイル  | Azure Files  |

※ポイント：Azure Cosmos DBは様々なデータストアモデルに対応している。

## オンライントランザクション処理（OLTP）
- トランザクションとは
    - 一連の処理の流れ
    - １つの単位がOLTP
- 特徴
    - スキーマが事前に設計済みのDBにデータの読み書きを行う
    - データの高負荷書き込み、中負荷読み取りを行う
    - データ正規化されている
 
## オンライン分析処理（OLAP）
- OLTPに対応した概念
- 大量データを格納して、集計などの操作をサポート
- 読み書きではなく、読み取りに特化

## ACID特性
- Atomicity（原子性）
    - 完全に成功するか、完全に失敗するか
    - 処理に失敗してもデッドロックを発生させないようにする
- Consistency（一貫性）
    - トラザクション前後で整合性が保たれて矛盾がない
- Isolation（分離性）
    - 別トランザクションと鑑賞しない
- Durability（持続性）
    - データ消失防止

## ロール
- データベース管理者
    - データベースの管理に責任を持つ
    - バックアップの保存、障害時のデータ復元
    - データのセキュリティ管理
    - インデックスの作成
- データエンジニア
    - データの処理や加工に責任を持つ
    - 分析用のデータストアを設計して実装
    - データクレンジングルーチンを適用して、データを有益な情報に変える
    - ストアドプロシージャの作成
    - プライバシー管理、ストア監視、パイプライン監視
- データアナリスト
    - データに対して、洞察を与えることのできる状態にすることに責任を持つ
        - 隠れたデータパターンの発見
        - 視覚化
        - 意思決定に使えるようにする
        - ビジネスルールの検討
- データサイエンティスト
    - 洞察を元に意思決定を行う事に責任を持つ。
    - 次のアクションプランを検討

## リレーショナルデータベース
SEとして一般的な知識があれば大丈夫
- 正規化
    - 更新、挿入、削除が最適化される
    - 記憶領域の使用量を削減できる。
- SQLの基礎
    - DML（SELECT、INSERTなど）、DDL（CREATE、ALTERなど）、DCL（GRANT、DENYなど）
    - WHERE、JOIN、ORDER BYなど
- ビュー
    - SELECTを発行して取得した仮想テーブル
- ストアドプロシージャ
    - データベースに対する特定の操作をまとめたもの（関数のようなイメージ）
- インデックス
    - 速度向上の仕組み（本の目次のイメージ）
- クラスター化インデックス
    - キー値に基いてデータを並べ替えたもの
## データ分析
### データウェアハウス
- 特徴
    - データレイクが生データなのに対して、データウェアハウスは加工されたデータを扱う
    - 複数ソースのデータが統合されている
    - RDB（データレイクは非RDB）
- アーキテクチャ
    1. 大量データの格納（データレイク等）
        - ETL：抽出→**変換**→読み込みの順（出力先に機密データを削除して転送したい場合など）
    1. データ加工（ETL、ELT、データインジェスト）
        - ELT：抽出→読み込み→**変換**の順（出力先に大量データを短時間にコピーしたい場合など）
        - データインジェスト：変換なし
        ※ETL/ELTのTは「Transform」、Lは「Load」の略なので、TLの並び順で処理していると覚えれば良いです。
    1. データ集計、OLAP読み込み
        - Azure Synapse Analytics
        - Azure Datrabricks
        - Azure HDInsights
    1. データの可視化
- パイプライン（大量データ処理）
    - Azure Data Factory
    - Azure Synapse Analytics
- リアルタイム分析
    - バッチ処理
        - データを溜めて、定期的に一括処理する方式
        - データを受けてから処理までの遅延が許容される
    - ストリーム処理
        - データを受信するたび処理する方式
        - データを受けてから処理までの遅延が許容されない
        - Azure Stream Analytics
            - ストリーム処理に対応したETLサービス
            - 使用例：Azure IoT Hubでデータ取り込み→Azure Stream Analyticsでデータ処理→Microsoft Power BIなどでデータ出力
        - Apache Spark
            - ストリーム処理に対応したETLサービス
            - オープンソースのサービス
        - Azure Data Explorer
            - 効率的にデータを分析するためのサービス
            - KQLというクエリを使用する
- データ可視化
     - 可視化の概念
        - ディメンションテーブル
            - ソースとなるデータ（要素）
            - 属性階層
                - ディメンションを様々なレベルで確認する概念
                    - 例：年月日の場合は年、月、日の階層を形成
                - ドリルダウン
                    - 親要素を子要素のデータで置き換える（年から月のレベルに置き換えるなど）
                - ドリルアップ
                    - 子要素を親要素のデータで置き換える（月から年のレベルに置き換えるなど）
        - ファクトテーブル
            - 表示したい情報（ディメンションテーブルと組み合わせて作成する
        - スタースキーマ
            - ファクトが中心、ディメンションが角とすると、星形になるためスタースキーマと呼ばれる
        - スノーフレークスキーマ
            - スタースキーマのバリエーションで、より効率的なデータ処理を可能にする
    - 可視化の手法
        - テーブルとテキスト
            - 最もメジャー
            - メトリックの表現に適している
        - 横棒グラフと縦棒グラフ
            - 個別のカテゴリの値を視覚的に比較するのに適している
        - 折れ線グラフ
            - 分類された値を時系列に比較して、傾向を調べるのに適している
        - 円グラフ
            - 全体に占める比率を調べるのに適している
        - 散布図
            - 値の関係、相関関係の特定するのに適している
        - Maps
            - 異なる地域ごとの値を視覚的に比較するのに適している
        - 主要なインフルエンサ
            - 結果または値の主な要因を示すのに適している
        - ツリーマップ
    - Microsoft Power BI
        - データ可視化ツール
        - データアナリストが可視化を構築するためのツール
        - Power BI Desktop
            - データ取得、準備
            - レポート／ダッシュボード作成
        - Power BI サービス／モバイルアプリ
            - レポート共有
        - ダッシュボードには、テキストボックス・イメージ・レポートページなどのオブジェクトを追加できる。
        - Power BI Report Builderで「ページ分割されたレポート」を作成できる
        - Excelのワークブックと接続してデータをダッシュボードに表示することができる
        - ダッシュボードをコピーして他のユーザーに共有することができる
- その他
    - Azure Data Lake Storage Gen2
        - ファイルシステムはHDFS
        - 使用するためには「階層型名前空間」を有効にする
    - 動的データマスク
        - ユーザ権限に応じて、ルールで指定した値をマスキングする事が出来る
        - 対応サービス
            - Azure SQL Database
            - Azure SQL Managed Instance
            - Azure Synapse Analytics（専用SQLプールのみ）
    - 分析タイプ
        - Descriptive（記述的分析）
            - 過去のデータを集計し、何が起こったのかを明らかにするための分析手法
            - 過去のデータを集計し、発生した事象を説明することを目的
        - Prescriptive（処方的分析）
            - 最適な行動や意思決定を導くための分析
            - 過去のデータに基づいて、将来の行動を提案
        - Diagnostic（診断的分析）
            - なぜ特定のことが起こったのかを理解するための分析
            - 過去のデータを調査し、原因や理由を探る
        - Predictive（予測的分析）
            - 過去のデータを利用して未来の出来事を予測するための分析
            - 統計モデルや機械学習を用いて将来のトレンドを予測
    - PolyBase
        - SQL ServerやAzure Synapse Analyticsなどで使用されるデータ仮想化ツール
        - Transact-SQL 構文を使用する
        - Azure Synapse Analyticsで使用できる

# 3.学習方法
 1. MS公式の模擬試験（１回目）：３０分
 1. 模擬試験の結果をもとに学習（１回目）：７時間
     - MSのLeanと模擬試験の結果をもとに、知識をメモにまとめる（[Youtube動画](https://www.youtube.com/watch?v=aBt26lmL6Rs)でまとめてくれている方もいたので、これも参考にさせてもらいました）
     - メモは活用しやすいよう、この記事の「出題範囲」の下書きとして作成（Qiitaの記事を書きながら勉強）
 1. MS公式の模擬試験（２回目）：３０分
 1. 模擬試験の結果をもとに学習（２回目）：７時間
 1. Udemyの模擬試験：２時間※過去問４回分
 1. 模擬試験の結果をもとに学習（３回目）：５時間
※模擬試験で平均９割程度とれていれば問題ないと思います。
※試験当日もMS公式の模擬試験を２回程度試してから臨みました。

# 4.その他
私はオンライン試験で受験しました。
試験時の注意事項は別記事でまとめておりますので、よかったらこちらも参考にしてください。

https://qiita.com/JinichiroYoshida/items/d582ee659de586dfb61a