7
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?

インフォマティカ・ジャパン株式会社Advent Calendar 2024

Day 22

[CAIレシピ] CSVファイル読み込み・CSVファイル書き出し(動的ヘッダー)

Last updated at Posted at 2024-12-19

はじめに

CSVファイル読み込み・CSVファイル書き出しでは、CSVファイルを読み込んで、CSVファイルに書き出す手順を確認しました。その際、CSVヘッダーは決め打ちでid/name列を指定していました。

この記事では、CSVのヘッダー(Custom headers)をCSVファイルから動的に生成する実装を確認します。

CSVファイル読み込み・CSVファイル書き出し(動的ヘッダー)

CAIプロセスの作成

CSVファイル読み込み・CSVファイル書き出しで作成した recipe-psa-fileWriteCsv2Csv をコピーして、API名のオーバーライド にチェックを入れ、名前とAPI名を recipe-psa-fileWriteCsv2CsvDinamic とします。
image.png

割り当てステップを選択して、Custom Headerの値を次のように変更します。
image.png

既存のCSVファイルのヘッダー行から、Custom headerを生成
let $text := fn:unparsed-text($input.inputPath )
let $lines := tokenize($text , '\n')
let $fieldnames:=tokenize($lines[1], '\s*,\s*')
return
  for $fieldname at $index in $fieldnames
    return
      <Header>
        {element {'fieldIndex'} {string($index)}}
        {element {'name'} {$fieldname}}
      </Header>

このXQueryコードでは、CSVファイルのヘッダー行(1行目)の文字列を利用して、次のようなXMLを生成しています。

<Header>
  <fieldIndex>1</fieldIndex>
  <name>id</name>
</Header>
<Header>
  <fieldIndex>2</fieldIndex>
  <name>name</name>
</Header>
<Header>
  <fieldIndex>3</fieldIndex>
  <name>color</name>
</Header>

CAIプロセスの実行

curlコマンドを例とした動作確認結果です。CSVファイル読み込み・CSVファイル書き出しで作成した recipe-psa-fileWriteCsv2Csv ではヘッダー列はid/name列の決め打ちでしたが、今回は元のCSVファイルから動的にヘッダーを生成しているため、id/name列に加えてcolor列も出力されている動作を確認できます。

curlコマンドと実行結果
curl -k https://localhost:7443/process-engine/public/rt/recipe-psa-fileWriteCsv2CsvDinamic \
-H 'Content-Type: application/json' \
-d '{"inputPath": "/opt/infaUSW5/ff/fruite.csv"}'

//実行結果
{
  "output": {
    "fileInfo": {
      "fullName": "fruite.csv",
      "name": "fruite",
      "ext": "csv",
      "path": "/opt/infaUSW5/ff/tgt/fruite.csv",
      "dir": "/opt/infaUSW5/ff/tgt",
      "size": 157,
      "lastModified": "2024-12-17T12:08:37Z"
    },
    "processedRecordsCount": 10,
    "writtenRecordsCount": 9,
    "success": true,
    "message": null
  }
}

//出力ファイルの確認
$ cat fruite.csv
id,name,color
1,orange,orange
2,kiui,green
3,banana,yellow
4,mango,yellow
5,watermelon,red
6,melon,green
7,lemon,yellow
8,apple,red
9,grape,purple

参照

7
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
7
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?