Apache Spark を使用してデータを変換し、SQL を使用してクエリを実行する

このガイドで行うこと:

  • OneLake ファイル エクスプローラーを使用して OneLake にデータをアップロードします。

  • Fabric ノートブックを使用して OneLake 上のデータを読み取り、Delta テーブルとして書き戻します。

  • Fabric ノートブックを使用して Spark でデータを分析および変換します。

  • SQL を使用して OneLake 上のデータの 1 つのコピーに対してクエリを実行します。

前提条件

開始する前に、次の操作を行う必要があります。

  • OneLake エクスプローラーをダウンロードしてインストールします。

  • レイクハウス項目を含むワークスペースを作成します。

  • WideWorldImportersDW データセットをダウンロードします。 Azure Storage Explorer を使用して https://azuresynapsestorage.blob.core.windows.net/sampledata/WideWorldImportersDW/csv/full/dimension_city に接続し、csv ファイルのセットをダウンロードできます。 あるいは、独自の csv データを使用し、必要に応じて詳細を更新することもできます。

Note

レイクハウスの [テーブル] セクションの "すぐ" 下に、Delta-Parquet データ ショートカットを作成、読み込み、または作成します。 [テーブル] セクションの下のサブフォルダーにテーブルを入れ子にしないでください。レイクハウスでテーブルとして認識されず、"不明" としてラベル付けされてしまうためです。

データのアップロード、読み取り、分析、クエリ

  1. OneLake エクスプローラーで、レイクハウスに移動し、/Files ディレクトリの下に dimension_city という名前のサブディレクトリを作成します。

    OneLake エクスプローラーで作成された新しいフォルダーのスクリーンショット。

  2. OneLake エクスプローラーを使用して、サンプルの csv ファイルを OneLake ディレクトリ /Files/dimension_city にコピーします。

    エクスプローラーで OneLake にファイルをコピーしているところのスクリーンショット。

  3. Power BI サービスで Lakehouse に移動し、ファイルを表示します。

    Fabric の Lakehouse でのファイルの表示のスクリーンショット。

  4. [ノートブックを開く] を選択し、[新しいノートブック] を選択してノートブックを作成します。

    Fabric で新しいノートブックを作成しているスクリーンショット。

  5. Fabric ノートブックを使用して、csv ファイルを Delta 形式に変換します。 次のコード スニペットは、ユーザーが作成したディレクトリ /Files/dimension_city からデータを読み取り、Delta テーブル dim_city に変換します。

    import os
    from pyspark.sql.types import *
    for filename in os.listdir("/lakehouse/default/Files/<replace with your folder path>"):
    df=spark.read.format('csv').options(header="true",inferSchema="true").load("abfss://<replace with workspace name>@onelake.dfs.fabric.microsoft.com/<replace with item name>.Lakehouse/Files/<folder name>/"+filename,on_bad_lines="skip")
    df.write.mode("overwrite").format("delta").save("Tables/<name of delta table>")
    
  6. 新しいテーブルを表示するには、/Tables ディレクトリのビューを更新します。

    Fabric のレイクハウスでのテーブルの表示のスクリーンショット。

  7. 同じ Fabric ノートブック内で SparkSQL を使用してテーブルのクエリを実行します。

    %%sql
    SELECT * from <replace with item name>.dim_city LIMIT 10;
    
  8. 整数データ型を持つ newColumn という名前の新しい列を追加して、Delta テーブルを変更します。 この新しく追加された列のすべてのレコードの値を 9 に設定します。

    %%sql
    
    ALTER TABLE <replace with item name>.dim_city ADD COLUMN newColumn int;
    
    UPDATE <replace with item name>.dim_city SET newColumn = 9;
    
    SELECT City,newColumn FROM <replace with item name>.dim_city LIMIT 10;
    
  9. また、SQL 分析エンドポイントを介して OneLake 上の任意の Delta テーブルにアクセスすることもできます。 この SQL 分析エンドポイントは、OneLake 上の Delta テーブルの同じ物理コピーを参照し、T-SQL エクスペリエンスを提供します。 lakehouse1 の SQL 分析エンドポイントを選択し、[新しい SQL クエリ] を選択して T-SQL を使用してテーブルに対してクエリを実行します。

    SELECT TOP (100) * FROM [<replace with item name>].[dbo].[dim_city];