データ接続と統合データセットプレビューCSV解析

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

CSV解析

Foundry は CSV データセットをサポートしています。これらは CSV 形式のファイルを含むデータセットです。

CSV 形式では、異なる区切り文字、引用符、エスケープ文字を使用することができます。これを管理するために、CSV ファイルがどのように解析されるかを制御するパラメーターを定義できます。これらのパラメーターはデータセットのスキーマに保存されます。Foundry は推論を使用して、特定のデータセットに対する適切なパラメーターのセットを提案しますが、結果は検証され、必要に応じて変更を加えるべきです。

Foundry における解析

Foundry の CSV データセットは、一般的にスキーマ内で dataFrameReaderClass として TextDataFrameReader が定義されています。これにより、カスタム パラメーターのセットがサポートされ、複雑なデータを効果的に処理するのに役立ちます。実行時には、最高のパフォーマンスと信頼性を確保するために、Spark CSV DataFrameReader ↗ に委任されます。

構成

Foundry では、Dataset Preview アプリケーションで、詳細タブに移動し、スキーマを選択することで、任意のデータセットのスキーマを表示できます。スキーマの詳細については、データセット ドキュメントを参照してください。

CSV スキーマは、プレビュー タブを表示しているときに Dataset Preview から利用できる スキーマの編集 UI で操作できます。これにより、利用可能なオプションとそれらが出力データセットにどのように影響するかを視覚化するのに役立ちます。CSV が特に不正形の場合、望ましい出力を得るためにスキーマを手動で編集する必要があるかもしれません。

TextDataFrameReader オプション

スキーマ内で TextDataFrameReader オプションを手動で構成するには、Dataset Preview詳細タブでスキーマ ページに移動し、編集を選択します。スキーマの下部には、次のようなセクションがあるはずです。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 "dataFrameReaderClass": "com.palantir.foundry.spark.input.TextDataFrameReader", "customMetadata": { "textParserParams": { "parser": "CSV_PARSER", // CSV形式でデータをパースする "charsetName": "UTF-8", // 文字エンコーディングはUTF-8 "fieldDelimiter": ",", // フィールドの区切り文字はカンマ "recordDelimiter": "\n", // レコードの区切り文字は改行 "quoteCharacter": "\"", // 引用符として使用される文字 "dateFormat": {}, // 日付フォーマット(ここでは指定されていない) "skipLines": 1, // 最初の1行をスキップする(通常ヘッダ行をスキップ) "jaggedRowBehavior": "THROW_EXCEPTION", // 不揃いな行がある場合、例外をスロー "parseErrorBehavior": "THROW_EXCEPTION", // パースエラーが発生した場合、例外をスロー "addFilePath": false, // ファイルパスを追加しない "addFilePathInsteadOfUri": false, // URIの代わりにファイルパスを追加しない "addImportedAt": false, // インポート日時を追加しない "initialReadTimeout": "1 hour" // 初回読み込みタイムアウトは1時間 } } }

TextDataFrameReader には以下のオプションがあります。

プロパティ目的受け入れ可能な値必須かどうかサポートされているパーサ
parser使用するパーサのタイプ。CSV_PARSER, MULTILINE_CSV_PARSER, SIMPLE_PARSER, SINGLE_COLUMN_PARSERはいN/A
nullValuesnull にパースされるべき値。文字列のリストはいすべて
fieldDelimiterレコードを複数のフィールドに分割するためのデリミタ文字。1 文字の文字列いいえ、デフォルトは , (コンマ)CSV_PARSER, MULTILINE_CSV_PARSER, SIMPLE_PARSER
recordDelimiterCSV ファイルを複数のレコードに分割するための行末記号。改行文字で終わる文字列いいえ、デフォルトは \n (改行)CSV_PARSER, MULTILINE_CSV_PARSER
quoteCharacterCSV 解析のための引用符文字。1 文字の文字列いいえ、デフォルトは " (ダブルクォート)CSV_PARSER, MULTILINE_CSV_PARSER
dateFormat特定の列での日付解析のためのフォーマット文字列。列名を JodaTime DateTimeFormat パターンにマッピングするマップいいえ、デフォルトは空のマップCSV_PARSER, MULTILINE_CSV_PARSER, SIMPLE_PARSER
skipLines各ファイルの先頭で解析をスキップする行数。0 以上の数いいえ、デフォルトは 0すべて
jaggedRowBehaviorヘッダーに指定された型よりも列が多いまたは少ない場合の動作。THROW_EXCEPTION, DROP_ROWいいえ、デフォルトは THROW_EXCEPTIONN/A
parseErrorBehaviorヘッダーで指定された型に値を解析できない場合の動作。THROW_EXCEPTION, REPLACE_WITH_NULLいいえ、デフォルトは THROW_EXCEPTIONN/A
addFilePath各行にファイルパスを追加。Booleanいいえ、デフォルトは falseすべて
addImportedAt各行にインポート時間を追加。Booleanいいえ、デフォルトは falseすべて
initialReadTimeoutパーサが最初の行を読み込むために待機する時間の制限。人間が読める期間いいえ、デフォルトは 1 時間すべて

Spark CSV オプション

Spark CSV DataFrameReader にすでに精通している場合は、dataFrameReaderClassDataSourceDataFrameReader に設定し、customMetadataformatcsv に設定できます。

サポートされているオプションのリストについては、Spark CSV DataFrameReader のドキュメント ↗ を参照してください。以下のようにキーと値のペアとして設定を追加できます。

Copied!
1 2 3 4 5 6 7 8 9 "dataFrameReaderClass": "com.palantir.foundry.spark.input.DataSourceDataFrameReader", "customMetadata": { "format": "csv", // データのフォーマットはCSV "options": { "unescapedQuoteHandling": "STOP_AT_DELIMITER", // エスケープされていない引用符の処理方法: デリミタで停止 "multiline": true, // 複数行に渡るデータを許可する ... } }

CSVファイルから構築されたデータセットにのみ、上記のスキーマオプションが適用されることに注意してください。