Microsoft Fabric / OneLake 上のデータへのアクセス方法

## はじめに

Power BI をはじめ、アクセス方法をよく聞かれるのでドキュメントへのリンクを記載し、リンクがわかりづらいものは画像つき手順を記載します。

## Microsoft ツールによる簡易化されたアクセス

一部の Micorosoft ツールはサインイン情報から OneLake 上のアクセスポイントを探索・接続が可能です。

### Power BI Dekstop

参考：https://learn.microsoft.com/ja-jp/power-bi/consumer/end-user-data-hub

めちゃくちゃよく聞かれますが、OneLake データハブというパネルから簡単にアクセスできます。ただし、ユーザーの属性によっては注意点があります。

##### セマンティックモデルに接続する場合（レポート作成者向け）

1. Power BI Desktop を開き、OneLake データハブにアクセスします。
    起動画面の場合
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/7187db57-6a59-d90b-24b1-b15dbc0031de.png)
    リボンの場合
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/d0fab216-d585-72c5-1a9f-31c142531bae.png)

1. （要サインイン）アクセスできるデータが表示されるので、対象を選択して接続ボタンを押すとFabric OneLake 上のセマンティックモデルに接続され、レポートの開発を開始できます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/c7a4bec5-f3c1-583a-4298-709e2a6ba0be.png)
    
##### レイクハウスやウェアハウスなどに接続する場合（モデル開発者向け）

多くのセルフサービス BI ユーザーはモデルの作成から開始するため、セマンティックモデルではなく、データストアへの接続を必要とするのですが、こちらの手順がややわかりにくいです。

1. セマンティックモデルに接続する際と同様に、OneLake データハブから、接続したい Fabric アイテムを選択します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/93a8175b-077f-7b23-1858-41bf859d92a5.png)

1. ウェアハウスなどを選択し、接続をクリックすると、データ変換のためのナビゲーター画面（Power Query）ではなく、**既定のセマンティックモデル** に接続されてしまいます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/9f57c980-db82-23d3-fedf-3b5719da8148.png)

:::note info

既定のセマンティックモデルは、ウェアハウス/レイクハウスを作成すると自動的に作成されるセマンティックモデルです。
既定のセマンティックモデルによりウェアハウス/レイクハウス（SQL 分析エンドポイント）のリレーショナルモデル表現を視覚化することで、データ理解が迅速化されます。

既定のセマンティックモデルはそのままレポートのデータソースとすることも可能です。

参考: 
- https://learn.microsoft.com/ja-jp/fabric/data-warehouse/semantic-models
- https://qiita.com/ryoma-nagata/items/e09b6b88653851ea925e
:::

1. モデルを作成したい場合には、接続ボタンのオプションから SQL エンドポイントへの接続を選択することで、SQL Server などのデータストアと同様の Power BI Desktop の ETL 対象となるデータソースとして接続することが出来ます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/00331761-0955-4a34-6b06-e334a0572722.png)
    Power Query Editor へと進むための画面
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/bfe4b123-315c-5899-cb5d-534eb08941e2.png)


### OneLake File Explorer

OneLake File Explorer にサインインするだけで利用可能です。以下の記事内の手順でアクセスします。

https://learn.microsoft.com/ja-jp/fabric/onelake/onelake-file-explorer

### Azure Data Factory

リンクサービスから利用可能です。以下の記事内の手順でアクセスします。

レイクハウス：

https://learn.microsoft.com/ja-jp/azure/data-factory/connector-microsoft-fabric-lakehouse?tabs=data-factory

ウェアハウス：

https://learn.microsoft.com/ja-jp/azure/data-factory/connector-microsoft-fabric-warehouse?tabs=data-factory

## ツールからのアクセスに必要なエンドポイント情報の取得

Fabric は様々な分析エンジンがホストされるため、接続用のエンドポイントも様々です。
本記事で紹介する主要なエンドポイントは3つです。

### OLAP エンドポイント

BI モデルとしてのエンドポイントです。
セマンティックモデルが配置される、 Analysis Server としてのホスト URL を指します。

取得方法は以下の通りです。

1. ワークスペース設定にアクセスして、接続リンクから取得可能です。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/36981fb5-b8ec-4595-5fef-673dc971e064.png)
    
    :::note info
    
    myorc の部分は Entraテナント ID に変更することで、指定したテナントに接続可能です


1. または、セマンティックモデルの設定からも取得可能です。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/b126947d-04f3-e1a1-8f84-fe66ca044f24.png)


### SQL エンドポイント

リレーショナルデータベースとしてのエンドポイントです。
SQL Serverとしての ホスト URL を指します。

取得方法は以下の通りです。

1. 対象アイテムが表示される任意の画面にて、ウェアハウス/レイクハウス（SQL 分析エンドポイント）から SQL Server ホスト名が取得できます
    ウェアハウスの場合、オプションから SQL 接続文字列
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/d176d98c-3161-040b-deb0-113e50cb9c5e.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/d9cf68f0-2724-d865-7ec7-601aa5749823.png)

    レイクハウスの場合、設定のSQL 分析エンドポイント（ウェアハウスは設定画面からも取得可能）
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/88cb343f-25bb-a390-a0d6-b76d5dea9505.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/3f8c3f77-2072-7652-ea36-bdee3331ba70.png)

### ストレージエンドポイント

オブジェクトストレージとしてのエンドポイントです。
Azure Data Lake Storage 互換の URL を指します。

1. テーブルやフォルダのプロパティから確認可能です。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/0a049b0b-bb49-5a0f-66fc-d5a7bf17b681.png)

## OLAP/ SQL エンドポイントアクセス

BIモデルとして、またはリレーショナルデータベースとして開発ツールからアクセスします。

### BI ツール
#### Tableau

##### セマンティックモデルに接続する場合（レポート作成者向け）

Power BI セマンティックモデルは Tableau の OLAP データソースとして利用可能です。

以下の記事をご参照ください。

https://qiita.com/satoshi_enomoto/items/48dfe3896d6588ba73c3

##### ウェアハウス/レイクハウス（SQL 分析エンドポイント）などに接続する場合（モデル開発者向け）

参考：
-　https://help.tableau.com/current/pro/desktop/en-us/examples_sqlserver.html
-　https://help.tableau.com/current/pro/desktop/ja-jp/examples_azure_sql_database.htm

1. Azure SQL を選択します
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/0394afb4-5889-49cd-9614-1d16aca5ce96.png)

1. サーバー名に SQL Serverとしての ホスト URLを設定し、いずれかの Azure Active Directory （現 MS Entra ID ）の認証を選択します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/09f899be-413a-465d-a6ac-0dfb1e0fa7ad.png)

1. サインインを行うと接続され、データベースとテーブルを選択してデータが表示されます。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/97181fbd-5a9f-43b8-bcbf-3d94fc36db26.png)


:::note info

Microsoft Fabric は 原則 Entra ID での認証を必要とするため、 Azure SQL DB などと同様の感覚で データベースユーザー ID / Password による認証（SQL認証）はできない点に注意ください

:::

### SQL 開発クライアント

#### SQL Server Management Studio (SSMS)

SQL エンドポイントのURLを使用し、以下の記事内の手順で接続します。

https://learn.microsoft.com/ja-jp/fabric/data-warehouse/connectivity#get-started-with-sql-server-management-studio-ssms

#### Azure Data Studio

SQL エンドポイントのURLを使用し、以下の手順で接続します。

1. Connection の追加ボタンを選択
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/dd370598-0b1a-f1c1-26a4-456df58d098c.png)
1. Connection Type は Microsoft SQL Server のまま SQL エンドポイント URL を入力し Entra ID 認証を選択
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/754169dd-8a69-ecb3-3ffa-45d24461d4f0.png)
1. add an account から、サインイン
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/a950af99-83f0-916c-6427-90254355cb36.png)

1. Database を アイテム名にして Connect
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/9aff6cd9-a636-45ea-424d-6dd99a854d62.png)

1. 接続されました
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/83706425-e8ac-363b-0807-6bd86968c410.png)

    
#### ODBC 

以下を参照ください。

https://qiita.com/ryoma-nagata/items/abf4949444e9268445ad

#### data build tool (dbt) 

参考：
- https://learn.microsoft.com/ja-jp/fabric/data-warehouse/connectivity#connect-using-dbt
- 
- https://docs.getdbt.com/docs/core/pip-install
- https://docs.getdbt.com/docs/core/connect-data-platform/fabric-setup
- https://docs.getdbt.com/reference/resource-configs/fabric-configs

1. profile.yml を構成します。インストール済みのドライバーや、host=SQLエンドポイント URL、database=アイテム名あたりを環境に合わせて設定します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/f0cfa477-a508-32e7-9d62-dded51194b26.png)
1. （インストールしていない場合は）アダプターをインストールします。※その他、SQLServer 用の ODBCドライバーが必要です.
    ```python:python
    
    python -m pip install dbt-core dbt-fabric
    
    ```

1. profile.yml に設定した情報によって認証が選択されます。画像のprofile.ymlではCLIを設定しているので、dbt コマンド実行前にaz login でサインインして接続しました。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/00fdb07d-7d9c-6fab-70ae-31e658ed4e98.png)


## ストレージエンドポイントアクセス

オブジェクトストレージとしての OneLake にアクセスします。

### Databricks

以下の記事をご参照ください。

https://qiita.com/ryoma-nagata/items/39fd52ab81015e3c9527

### Azure Storage Explorer

ストレージエンドポイントのURLを使用し、以下の記事内の手順で接続します。

https://learn.microsoft.com/ja-jp/fabric/onelake/onelake-azure-storage-explorer

icrosoft.com/ja-jp/azure/data-factory/connector-microsoft-fabric-warehouse?tabs=data-factory


### DuckDB 

以下の記事をご参照ください。

https://qiita.com/ryoma-nagata/items/c01a5abb33c3e8d684ba

### AzCopy

以下の記事をご参照ください。

https://qiita.com/ryoma-nagata/items/b04c11beab457342d649

### Azure Storage Python SDK

以下の記事をご参照ください。

https://learn.microsoft.com/ja-jp/fabric/onelake/onelake-access-python