0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Azure Synapse Analytics】データフローを使ったスライディングウィンドウによる特徴量抽出

Last updated at Posted at 2020-09-01

はじめに

@arai-jin さんの以下の記事で、PySpark を使ったスライディングウィンドウによる特徴量計算の方法が紹介されています。

PySpark で時系列データの特徴量抽出する方法 基礎編

Azure Synapse Analytics には データフローという GUI ベースの ETL 機能が備わっており、これも内部的には Spark の実行環境が動いています。ウィンドウ変換機能なども有しているため、今回は データフローを使いノンコーディングで処理が定義・実行できるかを試してみたいと思います。

なお、以降の記述において元記事と比較した内容・表現も出てくるため、元記事をまだご覧になっていない方はぜひ事前にご一読ください。それぞれの理解がより深まるかと思われます。

事前準備

以下を事前に済ませておきます。後半の 2 つについては、少し補足させていただきます。

  • Synapse Workspase の作成
  • 作成した Synapse Workspase へ Synapse Studio でログイン
  • テスト用CSV ファイルの作成
  • 作成した CSV ファイルを ADLS Gen2 にアップロード

CSV ファイルの作成

元記事と同じデータの CSV ファイルを、今回も作成・使用します。

time,data1,data2,data3,data4
1,2.65,2.42,6.9,4.93
2,2.57,8.5,2.4,5.37
3,2.13,3.76,7.52,7.67
4,3.09,7.28,3.59,6.34
5,5.75,4.69,5.26,3.11
6,6.91,4.04,2.03,6.28
7,5.44,3.22,2.87,7.14
8,4.86,7.47,3.68,0.32
9,9.7,7.43,4.43,7.74
10,6.3,7.72,7.78,7.91

作成した CSV ファイルを ADLS Gen2 にアップロード

正確には、データフロー上で Datasets として認識できれば何でも良いのですが、今回は作成した Synapse Workspase で Primary アカウントとして設定している ADLS Gen2 上に CSV ファイルをアップロードしておきます。

データフローの作成

ここから、本筋の設定に入っていきます。まずは、Synapse Studio の Develop Hub でData flowをクリックします。
20200901_orchestrate_anomaly_01_dataflow.JPG

Add Sourceをクリックすると、以下の画面になります。今回は Datasets を新規作成するためNewをクリックします。
20200901_orchestrate_anomaly_02_dataflow.JPG

Azure Data Lake Storage Gen 2を選択してContinueをクリック。
20200901_orchestrate_anomaly_03_dataflow.JPG

Delimited Textを選択してContinueをクリック。
20200901_orchestrate_anomaly_04_dataflow.JPG

アップロードした CSV ファイルが読み込めるよう、Linked serviceFile pathを適切に設定。また、今回はヘッダー付きの CSV ファイルであるため、First row as headerにチェックを入れておきます。
20200901_orchestrate_anomaly_05_dataflow.JPG

CSV ファイルが読み込めると、Projection タブでスキーマが確認できます。デフォルトでは全ての列が string ですが、後続の処理のため time 列をinteger、data1 列をfloatにそれぞれ変換しておきます。今回はテストデータの都合で time 列を integer としていますが、実データでは timestamp 型とした方がよろしいかと思います。
20200901_orchestrate_anomaly_06_dataflow.JPG

設定が正常に完了すれば、Data preview タブで CSV ファイルのデータが確認できます。
20200901_orchestrate_anomaly_07_dataflow.JPG

ウィンドウ変換

ここまでの作業が完了したら、画面の+アイコンからWindowをクリックしウィンドウ変換用の処理を追加します。
20200901_orchestrate_anomaly_08_dataflow.JPG

Window settings タブにおける1. Overを除く 2.から 4.を順に設定していきます。
20200901_orchestrate_anomaly_09_dataflow.JPG

2. Sort

ソートキーを指定するもので、PySpark におけるorderBy("カラム名")の記述に相当します。そのため、ここでは time 列を指定します。
20200901_orchestrate_anomaly_10_dataflow.JPG

3. Range by

ウィンドウ幅を指定するもので、PySpark におけるrowsBetweenの記述に相当します。幅の指定をスライダーと数値入力で行うのが特徴で、まずスライサーの左端をCurrent rowにすることで Start offset が 0、つまり現在行を基準にします。次に右端をIn frontとし End offset に 4 を入力することで現在行を含めて 5 行を 1 つのウィンドウとして定義することになります。
20200901_orchestrate_anomaly_11_dataflow.JPG

4. Window columns

特徴量抽出の結果を新しい列として定義します。PySpark におけるwithColumn('feat_max_data1', F.max('data1').over(sliding_window))といった記述に相当します。PySpark 同様、こちらでも計算の種類の数だけ列を定義する必要があります。
20200901_orchestrate_anomaly_12_dataflow.JPG

なお、本記事では深くは触れませんが、特徴量抽出で使う関数の記述においては式ビルダーを使うことで入力補助を受けながら記述することが可能となっています。
20200901_orchestrate_anomaly_13_dataflow.JPG

結果確認

ウィンドウ変換の処理後、Data preview タブで特徴量抽出の結果を確認することができます。画面では見やすくするため後続に Select 処理を加えて data2 ~ 4 を省いていますが、変換処理の結果自体は Window 処理の時点で確認可能です。
20200901_orchestrate_anomaly_14_result.JPG

まとめ

Azure Synapse Analytics のデータフローを使うことで、スライディングウィンドウによる特徴量計算がノンコーディングでできることを確認しました。

データサイエンティストの方であれば慣れ親しんだPythonでコーディングするだけかもしれませんが、今回のような特徴量抽出は案件の体制によってはデータエンジニアやクラウドアーキテクトが担当することも考えられ、そういった人々にとってはPySpark相当の処理をGUIを使ってノンコーディングで定義・実行できるというのは魅力的ではないかと思います。

参考URL

マッピング データ フローのウィンドウ変換

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?