CSV (Comma Separated Values) は、セルの値を "," 記号で区切った表形式で保存するものです。セパレータは", "の代わりに他の文字も使用できます。ただし、AppMaster はカンマを必要とします。
この文字がセル内に入らないようにすることが重要です。さもないと、ファイルデータが正しく読み込まれません。
まず、CSVファイルからの情報を保存するデータモデルを作成します。例えば、フライトのデータモデルを作成します。データモデルには、以下のフィールドが含まれます。
- flight_no - フライト番号、整数値形式。
- destination- 文字列形式の目的地
- classes - このフライトで利用可能なフライトクラス、array[string] 形式。
インポートされるファイルの例です。
最初のカラムには flight_no2番目は destinationそして3番目には classes.
3 列目では、値はセミコロンで区切られています。
ビジネスプロセスの作成
を含む。 Business Logicタブをクリックし Create Business Processボタンをクリックします。
このビジネス・プロセスはCSVファイルを必要とするので、ファイル・フィールドを Start ブロックに追加します。
次に Read CSVファイル・ブロックが必要です。
同様に、Read XLS file およびRead XLSX file ブロックを使用して、対応する形式を指定することができます。
Read CSV file ブロックの仕組み
これには2つの出力コネクタがあります。 Each Rowと Completed.ブロックが起動されると、ファイルを一行ずつ読み込み、そのたびに Each Rowコネクタをアクティブにして、行番号(Row number、1 から始まる)と Row Columns(現在の行のすべての列の文字列配列)を渡します。
からファイルを渡します。 Startブロックから Read CSV fileブロックに渡します。
次に For Each Loopブロックを追加します。を送信する文字列配列を処理します。 Read CSV fileブロックを作成します。
については Each Loopと同じように Read CSV file,は配列の各要素を処理し、それぞれに対してコネクタを起動します。 Loop Body コネクタをそれぞれ起動します。
For Each Loop ブロックのインデックス出力フィールドは、配列要素のインデックス番号です。0から始まります。
すべてのコネクタを接続します。
次のブロックは Switch.このブロックの助けを借りて、さまざまなフィールドの値をどこに書き込むかを決定します。
Switchはあらゆるタイプの入力を受け入れ、それに応じて異なる出力コネクタをアクティブにすることができます。その Default コネクタは、入力値が作成されたコネクタのどれとも一致しない場合にアクティブになります。
CSV ファイルには 3 つの列があります。つまり、各 Row columns 配列には 3 つの値が、常に同じ順序で格納されています。
- 番号
- の順になります。
- クラスです。
したがって、3つの出力コネクタを Switchブロック 0, 1, 2 を作成し、そのインデックスを For Each Loopブロックから Switchブロックに渡します。
ファイルの最初の列には、フライト番号が含まれています。しかし、この For Each Loopブロックが取得するのは string のフォーマットで取得します。そのため,保存する前に,ブロックを使って整数に変換します。 To integerブロックを使って整数に変換してから保存します。その後、変数に保存します。 Set variableブロックを使って変数に保存します。
ファイルの2列目には、方向が stringの形式で保存します。すぐに変数に保存することができます。
ファイルの3列目には、セミコロンで区切られたクラスのリストが含まれています。この For Each Loop ブロックはそれを文字列のフォーマットで取得することもできます。そこで、それを文字列の配列に分割します。これを行うには Split Stringブロックを使います。文字列にクラスのリストを渡して、デフォルトのセパレータとして ";" を設定しましょう。
受信した値を変数に保存します。
各行のすべての列の値を通してのループ設定が終了します。
ファイルの各行からエントリを作成する必要があります。ここでは、完成した出力コネクタを For Each Loop ブロックと Make flightブロックを使ってこれを行います。サイクル中に受け取ったすべての変数を、それに転送しましょう。
ここで、作成したモデルを保存するには Make flight を使って DB Create flight ブロックを使って作成したモデルを保存します。
こうして、各行が1レコードとしてデータベースに保存される。
あとは、ファイルの処理を終わらせるだけです。ここでは completed の出力コネクタを Read CSV file ブロックに接続し、それを Endブロックに接続します。
ファイルからインポートするBPは終了。
Endpoint 設定
Endpoints タブに移動し、新しいエンドポイントを作成します。
を選択します。 POSTメソッドを設定し URLアドレスを選択し Flight groupを選択し、作成したBP Import CSV.
フロントエンドにボタンを設置する
次に、ファイルをアップロードするためのボタンをフロントエンドにセットアップする必要があります。
をドラッグします。 File picker要素をキャンバス上にドラッグします。
そして、そのためのBPをセットアップします。
を使用します。 onSelectfilesトリガーを使用します。このトリガーは、ファイルが1つしかない場合でも、ファイルを配列として受け取ります。したがって、 Array Element ブロックを使って、配列から1つの要素を取得することになります。配列から最初の要素を取得するために、indexフィールドを0に設定しましょう。
では、アップロードされたファイルをデータベースに保存するために Server request POST /_files/ ブロックを使ってアップロードしたファイルをデータベースに保存します。
できたファイルを Expand fileブロックを使ってファイルを展開します。
次に、ID (この場合はファイルです)を Server request POST /flight/csv/ブロックに渡します。