Azure Synapse Analytics(概要編)

## Azure Synapse Analyticsとは？
Azure Synapse AnalyticsはDWH、ビックデータ分析、データ統合、視覚化を一纏めにした統合型の分析プラットフォームで「Azure SQL Data Warehouse」の後継サービスに当たります。 

## 構成図
Azure Synapseパイプラインを使用すると、データの取り込み、準備、モデル化を行うことができます。 これは、Azure Synapse Analyticsのコンポーネントでのみ使用できます。
![スクリーンショット 2022-01-01 11.10.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1514023/023e042b-2b93-4935-7275-6cc471d0e414.png)

また、既存サービスの一部をAzure Synapse Analyticsのコンポーネントに置き換えることも可能です。
![スクリーンショット 2022-01-01 11.11.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1514023/2bc59072-a5b8-42af-8792-42105f5e2db9.png)

出典:(https://docs.microsoft.com/ja-jp/learn/modules/introduction-azure-synapse-analytics/4-when-use?ns-enrollment-type=LearningPath&ns-enrollment-id=learn.wwl.realize-integrated-analytical-solutions-with-azure-synapse-analytics)

## 仕組み
- **Synapse SQLが利用可能**
    - Synapse SQLでは、専用とサーバーレスの両方のリソースモデルが提供されます。予測可能なパフォーマンスとコストに対しては、専用SQLプールを作成して、SQLテーブルに格納されているデータ処理キャパシティを確保します。計画外または突発性のワークロードに対しては、常に使用可能なサーバーレスのSQLを使用します。
    
- **サポートされている言語が豊富**
    - T-SQL  
    - Python  
    - Scala
    - Spark SQL
    - .NET

- **Azure Synapse Pipelinesが利用可能**
    - Azure Synapse Pipelinesは、Azure Data Factory の機能を利用するクラウドベースの ETL およびデータ統合サービスです。これを使用すると、データ移動の調整と大規模なデータ変換を行うためのデータ主導型ワークフローを作成できます。視覚的にデータを変換する複雑な ETL プロセスを構築することも可能です。

- **Azure Synapse Linkが利用可能**
    - Azure Synapse Linkを使用すると、トランザクションデータストアのパフォーマンスに影響を与えることなく運用データにアクセスできます。そうすることで、凖リアルタイムのハイブリッドトランザクションおよび分析処理による運用分析の実行が実現可能です。

- **すべてのAzure Synapse Analytics機能にアクセスできる単一のWeb UI**
    - データ資産の探索
    - 分析エンジンと対話するためのT-SQLスクリプトとノートブックを開発
    - データ移動を管理するためのデータ統合パイプラインを構築
    - サービス内ワークロードの監視
    - サービスコンポーネントの管理

- **Azureデータプラットフォームサービスとの統合**
    - 既存の分析ソリューションがある場合は、それらを補う様々なサービスとAzure Synapse Analyticsを統合することが可能です。


## 使用する状況
- **データや分析ツールが分散されていることで手間を感じている**

    - 従量課金額と要相談
- **高度な分析が可能**
    - Azure Synapse Analyticsの機能と、Azure Databricksなどの他のサービスとの統合の両方を使用可能
    
- **リアルタイム分析**
    - Azure Synapse Linkの機能やAzure Stream Analytics、Azure Data Explorerなどのサービスの統合を通して、データをリアルタイムまたは準リアルタイムでキャプチャ、格納、分析が可能
- **データの探索と検出が可能**
    - Azure Synapse Analyticsによって提供されるサーバーレスSQLプール機能を使用すると、データ資産内のデータを探索することが可能。この機能によって、データの検出、診断的分析、探索的データ分析をサポート

## SQLプールについて
Azure Synapse AnalyticsのSQLプールには「専用SQLプール」と「サーバーレスSQLプール」の２種類があります。

※プール:コンピューティング系サービスを抽象化したもの

- **専用SQLプールの機能**
    - PolyBaseを使用してビッグデータストアのクエリを実行
    - テーブルにデータを読み込むために標準のT-SQLクエリを使用
    - 列指向ストレージを使用してリレーショナル テーブルにデータを格納<br>→データのストレージコストが大幅に削減し、クエリのパフォーマンスが向上
    - オートシャットダウン機能なし<br>→無理やり実現させるには、Azure Automationを組み合わせる事も検討できるかと・・・
    - 専用SQLプールはデータ保持する

- **サーバーレスSQLプールの機能**
    - 実行するクエリによって処理されるデータに対してのみ課金される従量課金モデル
    - テーブルにデータを読み込むために標準のT-SQLクエリを使用
    - オートシャットダウン機能あり
    - サーバーレスSQLプールは起動中のみデータ保持<br>→DataLake Gen2などの外部Storageを組み合わせる事で、データを保管することが可能
    - データはあくまで、Storageに保存。スキーマはプールにある
    - サーバーレスSQLプールのデータ保存先はBlobとDataLake Gen2、CosmosDBの分析ストア、Dataverseのみ

※上記はあくまでも機能の一部ですので、詳細は以下URLを参照ください。
[Azure Synapse SQL でサポートされる Transact-SQL 機能](https://docs.microsoft.com/ja-jp/azure/synapse-analytics/sql/overview-features#data-formats)

- **使い分けイメージ**
    - 抽出・加工したデータを手元に保管しておきたい場合は「専用SQLプール」
    - データを抽出してその場で可視化できればよい場合は「サーバーレスSQLプール」

## まとめ
学んだことの備忘録として記載しておりますので、参考程度にご覧頂ければ幸いです。
DatabricksのNotebookやData Factoryのパイプラインの比較など、全てを一つの記事にすると長くなるので、分けて記載したいと思います。