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 1 year has passed since last update.

AppFlow パーティションと集約の設定について

Last updated at Posted at 2023-01-24

概要

  • AppFlowのパーティションと集約の設定についてまとめる。

情報

  • 今回説明で使用するAppFlowの送信先はS3として任意のバケットとフォルダを選択済み。
  • 出力はCSVとしてマッピングも設定済み。

前提

  • 説明の都合上AppFlowの送信先S3バケット名は「Fooバケット」とし、フロー名は「foo-test」とする。

ご注意

  • 日時系情報はUTCで変更できないので注意する

パーティションの設定と集約の設定

  • パーティションの設定は下記の三種類である。
    • 日時
    • 実行ID
    • 送信先フィールド
  • 集約の設定は下記の三種類である。
    • 集約しない
    • 全てのレコードを各パーティションの1ファイルに集約する
    • レコードを各パーティションの複数ファイルに集約する
  • 上記の設定の組み合わせによって出力されるCSVの位置やファイル名が異なる。

パーティションはチェックしない 集約「集約しない」の場合 パーティション「実行ID」をチェックしない 集約「すべてのレコードを各パーティションの 1 ファイルに集約する」の場合

  • この場合、出力先のフォルダ直下にフロー名のフォルダーを作成し、実行ID名のCSVファイルを出力する。

  • なので今回の場合下記のようにCSVファイルが生成されてゆく。(特に削除したりしなければ、フローが実行されるたびにどんどんfoo-testフォルダ内にCSVが出力されてゆく)

    Fooバケット
        └foo-test
            └0-985d7648653e3bf185091d78a018a61d-0063CF51FCBF1CC437(CSVファイル)
            └0-2fb6d65d74ff5b51410c9778a7c7fce9-0063CF4D863AD02487(CSVファイル)
            └0-5f15a3e9ded929ab75943c1e886684a1-0063CF4D7BF0A69AD7(CSVファイル)
                ・
                ・
                ・
    

パーティション「実行ID」と「日時(オプションは毎年)」 集約「集約しない」の場合

  • この場合、出力先のフォルダ直下にフロー名のフォルダーを作成、更にその中にYYYYのフォルダを作成、更にその中に実行ID名のフォルダを作成し、その中にCSVファイルを出力する。

  • 今回の場合下記のようになる。(フローが実行されるたびにYYYYフォルダ直下の実行IDフォルダが作成されてゆく。)

    Fooバケット
        └foo-test
            └YYYY
                └0-985d7648653e3bf185091d78a018a61d-0063CF51FCBF1CC437
                    └0-(CSVファイル)
                └0-2fb6d65d74ff5b51410c9778a7c7fce9-0063CF4D863AD02487
                    └0-(CSVファイル)
                        ・
                        ・
                        ・
    

パーティション「実行ID」と「日時(オプションは毎月)」 集約「集約しない」の場合

  • この場合、出力先のフォルダ直下にフロー名のフォルダーを作成、更にその中にYYYYのフォルダを作成、更にその中にMMのフォルダを作成、更にその中に実行ID名のフォルダを作成し、その中にCSVファイルを出力する。

  • 今回の場合下記のようになる。(フローが実行されるたびにMMフォルダ直下の実行IDフォルダが作成されてゆく。)

    Fooバケット
        └foo-test
            └YYYY
                └MM
                    └0-985d7648653e3bf185091d78a018a61d-0063CF51FCBF1CC437
                        └0-(CSVファイル)
                    └0-2fb6d65d74ff5b51410c9778a7c7fce9-0063CF4D863AD02487
                        └0-(CSVファイル)
                            ・
                            ・
                            ・
    

パーティション「実行ID」と「日時(オプションは毎日)」 集約「集約しない」の場合

  • この場合、出力先のフォルダ直下にフロー名のフォルダーを作成、更にその中にYYYYのフォルダを作成、更にその中にMMのフォルダを作成、更にその中にDDのフォルダを作成、更にその中に実行ID名のフォルダを作成し、その中にCSVファイルを出力する。

  • 今回の場合下記のようになる。(フローが実行されるたびにDDフォルダ直下の実行IDフォルダが作成されてゆく。)

    Fooバケット
        └foo-test
            └YYYY
                └MM
                    └DD
                        └0-985d7648653e3bf185091d78a018a61d-0063CF51FCBF1CC437
                            └0-(CSVファイル)
                        └0-2fb6d65d74ff5b51410c9778a7c7fce9-0063CF4D863AD02487
                            └0-(CSVファイル)
                                ・
                                ・
                                ・
    

パーティション「実行ID」と「日時(オプションは毎時)」 集約「集約しない」の場合

  • この場合、出力先のフォルダ直下にフロー名のフォルダーを作成、更にその中にYYYYのフォルダを作成、更にその中にMMのフォルダを作成、更にその中にDDのフォルダを作成、更にその中にHHのフォルダを作成、更にその中に実行ID名のフォルダを作成し、その中にCSVファイルを出力する。

  • 今回の場合下記のようになる。(フローが実行されるたびにHHフォルダ直下の実行IDフォルダが作成されてゆく。)

    Fooバケット
        └foo-test
            └YYYY
                └MM
                    └DD
                        └HH
                            └0-985d7648653e3bf185091d78a018a61d-0063CF51FCBF1CC437
                                └0-(CSVファイル)
                            └0-2fb6d65d74ff5b51410c9778a7c7fce9-0063CF4D863AD02487
                                └0-(CSVファイル)
                                    ・
                                    ・
                                    ・
    

パーティション「実行ID」と「日時(オプションは分)」 集約「集約しない」の場合

  • この場合、出力先のフォルダ直下にフロー名のフォルダーを作成、更にその中にYYYYのフォルダを作成、更にその中にMMのフォルダを作成、更にその中にDDのフォルダを作成、更にその中にHHのフォルダを作成、更にその中にMMのフォルダを作成、更にその中に実行ID名のフォルダを作成し、その中にCSVファイルを出力する。

  • 今回の場合下記のようになる。(フローが実行されるたびにMMフォルダ直下の実行IDフォルダが作成されてゆく。)

    Fooバケット
        └foo-test
            └YYYY
                └MM
                    └DD
                        └HH
                            └MM
                                └0-985d7648653e3bf185091d78a018a61d-0063CF51FCBF1CC437
                                    └0-(CSVファイル)
                                └0-2fb6d65d74ff5b51410c9778a7c7fce9-0063CF4D863AD02487
                                    └0-(CSVファイル)
                                        ・
                                        ・
                                        ・
    

パーティション「実行ID」と「送信先フィールド(フィールドは任意のものを指定)」 集約「集約しない」の場合

  • この場合、出力先のフォルダ直下にフロー名のフォルダーを作成、更にその中にフローのスキーマバージョン名のフォルダを作成、更にその中に、更にその中に実行ID名のフォルダを作成、更にその中にフィールドと値名のフォルダを作成、その中にCSVファイルを出力する。

  • 今回の場合下記のようになる。ちなみにフィールドは複数設定可能である。

    Fooバケット
        └foo-test
            └schemaVersion_スキーマバージョン数
                └0-985d7648653e3bf185091d78a018a61d-0063CF51FCBF1CC437
                    └フィールド名=値
                        └0-(CSVファイル)
                └0-2fb6d65d74ff5b51410c9778a7c7fce9-0063CF4D863AD02487
                    └フィールド名=値
                        └0-(CSVファイル)
                            ・
                            ・
                            ・
    

パーティション「実行ID」 集約「すべてのレコードを各パーティションの 1 ファイルに集約する」の場合

  • この場合、出力先のフォルダ直下にフロー名のフォルダーを作成し、その中にフローのスキーマバージョン名のフォルダを作成、その中に実行ID名のCSVファイルを出力する。

  • なので今回の場合下記のようにCSVファイルが生成されてゆく。複数回フローが実行された場合、スキーマバージョン名フォルダーにCSVが都度生成される。

    Fooバケット
        └foo-test
            └schemaVersion_スキーマバージョン数
                └0-985d7648653e3bf185091d78a018a61d-0063CF51FCBF1CC437(CSVファイル)
                └0-2fb6d65d74ff5b51410c9778a7c7fce9-0063CF4D863AD02487(CSVファイル)
                └0-5f15a3e9ded929ab75943c1e886684a1-0063CF4D7BF0A69AD7(CSVファイル)
                    ・
                    ・
                    ・
    

パーティション「実行ID」 集約「レコードを各パーティションの複数のファイルに集約する」の場合

  • この場合、出力先のフォルダ直下にフロー名のフォルダーを作成し、その中にフローのスキーマバージョン名のフォルダを作成、その中に実行ID名のCSVファイルを出力する。

  • 一見「すべてのレコードを各パーティションの 1 ファイルに集約する」と「レコードを各パーティションの複数のファイルに集約する」で同じ様に見えるが、これはフロー実行時の送信元の状態によって異なる気がする。(複数のデータ変更があった場合、1CSVに1レコードだけしか出力せず複数ファイル設置するか、1CSVファイルに複数レコード分の情報を出力するのか)

  • なので今回の場合下記のようにCSVファイルが生成されてゆく。複数回フローが実行された場合、スキーマバージョン名フォルダーにCSVが都度生成される。

    Fooバケット
        └foo-test
            └schemaVersion_スキーマバージョン数
                └0-985d7648653e3bf185091d78a018a61d-0063CF51FCBF1CC437(CSVファイル)
                └0-2fb6d65d74ff5b51410c9778a7c7fce9-0063CF4D863AD02487(CSVファイル)
                └0-5f15a3e9ded929ab75943c1e886684a1-0063CF4D7BF0A69AD7(CSVファイル)
                    ・
                    ・
                    ・
    

まとめ

  • パーティションは出力を行うディレクトリの情報を設定する。
  • 集約は出力するファイルの出力方法を設定する。
  • 「AppFlow出力ファイルを使ってlambdaでなにかする。終わったらAppFlowのファイルを削除する。」とかならパーティション「実行ID」、集約「集約しない」で十分かも。
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?