ArrowIPC (.arrow, .arrows, .feather, .ftr)
予備知識
-
- 登録MIMEタイプ:application/vnd.apache.arrow.file, application/vnd.apache.arrow.stream
- Arrow IPC 列データ形式
- 大規模な列データ集合を効率的にシリアル化するために使用される.
- 列形式でシリアル化されたデータの基本単位はレコードバッチと呼ばれる.
- Arrow IPC ファイル形式は,固定数のレコードバッチをシリアル化するために使用され,ランダムアクセスをサポートする.
- Arrow IPC ストリーミング形式は,任意の長さのレコードバッチのシーケンスを送信するために使用される.
- Featherバージョン2は,ディスク上でArrow IPCファイルとして表されるファイル形式である.
- Featherバージョン1はArrow IPCファイルとは異なるレガシーファイル形式である.
- Apache Software Foundationによって開発された.
- バイナリファイル形式.
- 複数の圧縮手法をサポートする.
ImportとExport
- Import["file..arrow"]はTabularオブジェクトとしてArrowIPCファイルをインポートする.
- Import["file.arrow",elem]は指定の要素をインポートする.
- Import["file.arrow",{elem,subelem1,…}] は子要素 subelemiをインポートする.これは部分的なデータインポートに役立つ.
- インポート形式は,Import["file","ArrowIPC"]またはImport["file",{"ArrowIPC",elem,…}].で指定できる.
- Export["file.arrow",expr]はTabularオブジェクトをArrowIPCファイル形式にエキスポートする.
- サポートされている式 expr は以下を含む:
-
{v1,v2,…} 1列のデータ {{v11,v12,…},{v21,v22,…},…} データの行のリスト array SparseArray,QuantityArray等の配列 tseries TimeSeries,EventSeries,TemporalDataオブジェクト dataset DatasetオブジェクトまたはTabularオブジェクト - 一般的な情報は,以下の関数ページを参照のこと.
-
Import, Export ファイルからインポートする,あるいはファイルへエキスポートする CloudImport, CloudExport クラウドオブジェクトからインポートする,あるいはクラウドオブジェクトへエキスポートする ImportString, ExportString 文字列からインポートする,あるいは文字列へエキスポートする ImportByteArray, ExportByteArray バイト配列からインポートする,あるいはバイト配列へエキスポートする
要素
- 一般的なImport要素:
-
"Elements" ファイル中の有効な要素とオプションのリスト "Summary" ファイルの概要 "Rules" すべての可能な要素の規則のリスト - データ表現要素:
-
"Data" 2次元配列 "Dataset" Datasetとしての表データ "EventSeries" EventSeriesとしての表データ "Tabular" Tabularオブジェクト "TimeSeries" TimeSeriesとしての表データ - Import はデフォルトで"Tabular"要素を使用する.
- "Tabular"要素の部分データインポートの部分要素は, {"Tabular",rows,cols}の形式で行と列の仕様を取ることができる.ここで,rows と cols は次のいずれかになる:
-
n n番目の行または列 -n 末尾からn番目 n;;m n 番目から m番目まで n;;m;;s n 番目から m 番目までの要素をステップ sで {n1,n2,…} 指定された行または列の ni番目 - 列指定は以下のいずれでもよい:
-
"col" 単一の列"col" {col1,col2,…} 列の名前 coli のリスト - データ記述要素:
-
"ColumnLabels" 列の名前 "ColumnTypes" 各列のデータ型の連想 "Schema" TabularSchemaオブジェクト - メタデータ要素:
-
"ColumnCount" ファイルに格納された列の数 "Dimensions" データの次元 "RowCount" ファイルに格納された行の数 "MetaInformation" メタデータ
オプション
- 一般的なImportオプション:
-
IncludeMetaInformation All インポートするためのメタデータ型 "Schema" Automatic Tabularオブジェクトの構築に使用されるスキーマ "TimeColumn" Automatic "EventSeries" 要素および "TimeSeries" 要素での時間を使用する列 "UseMemoryMappedFile" True メモリマップトリーダーを使用するかどうか - "Schema"オプションに使用可能な設定は以下が含まれる:
-
schema 完全なTabularSchema 指定 propval スキーマ特性と値(TabularSchemaのドキュメントを参照のこと) <|"prop1"val1,…|> スキーマ特性と値の連想 - 一般的なExportオプション:
-
"Compression" None 圧縮アルゴリズム CompressionLevel Automatic 圧縮レベル "Streamable" False Trueの場合,Arrow IPC ストリーミング形式が使用される. - "Compression"には以下の設定がサポートされている:
-
None 圧縮なし "LZ4Frame" LZ4フレーム圧縮 "ZSTD" ZSTD 圧縮
例題
すべて開く すべて閉じる例 (3)
Arrow IPCファイルからTabularオブジェクトをインポートする:
Import["ExampleData/USstates.arrow"]Import["ExampleData/USstates.arrow", "Summary"]TabularオブジェクトをArrow IPCファイルにエキスポートする:
tabular = Import["ExampleData/USstates.arrow"];Export["file.arrow", tabular]スコープ (3)
Import (3)
Import["ExampleData/USstates.arrow", "Elements"]デフォルトではTabularオブジェクトが返される:
Import["ExampleData/USstates.arrow"]//TabularQImport["ExampleData/USstates.arrow", "ColumnTypes"]Import要素 (19)
"ColumnCount" (1)
"ColumnLabels" (1)
"ColumnTypes" (1)
"Data" (3)
Import["ExampleData/USstates.arrow", "Data"]//ShortImport["ExampleData/USstates.arrow", {"Data", 1 ;; 3}]Import["ExampleData/USstates.arrow", {"Data", All, {1, 3}}]//ShortImport["ExampleData/USstates.arrow", {"Data", All, {"Name", "Area"}}]//Short"Dataset" (3)
Datasetとしてデータを取得する:
Import["ExampleData/USstates.arrow", "Dataset"]Import["ExampleData/USstates.arrow", {"Dataset", 1 ;; 3}]Import["ExampleData/USstates.arrow", {"Dataset", All, {1, 3}}]Import["ExampleData/USstates.arrow", {"Dataset", All, {"Name", "Area"}}]"Dimensions" (1)
"EventSeries" (1)
TabularオブジェクトをArrowIPCファイルにエキスポートする:
file = Export["file.arrow", ResourceData["Sample Tabular Data: Sales Data"]]ArrowIPC ファイルをEventSeriesとしてインポートする:
Import[file, "EventSeries"]Import[file, {"EventSeries", 5}]ArrowIPCファイルからいくつかの指定行をインポートする:
Import[file, {"EventSeries", {1, 5, 7}}]ArrowIPC ファイルから最初の10行をインポートする:
Import[file, {"EventSeries", 1 ;; 10}]Import[file, {"EventSeries", All, {"Product", "Date", "Quantity"}}]"MetaInformation" (1)
"Schema" (1)
TabularSchemaオブジェクトを取得する:
Import["ExampleData/USstates.arrow", "Schema"]"Tabular" (3)
ファイルからTabular オブジェクトでデータを取得する:
Import["ExampleData/USstates.arrow", "Tabular"]Import["ExampleData/USstates.arrow", {"Tabular", 1 ;; 5}]Import["ExampleData/USstates.arrow", {"Tabular", All, {1, 3}}]Import["ExampleData/USstates.arrow", {"Tabular", All, {"Name", "Area"}}]"TimeSeries" (1)
TabularオブジェクトをArrowIPCファイルにエキスポートする:
file = Export["file.arrow", ResourceData["Sample Tabular Data: Sales Data"]]TimeSeriesとしてArrowIPCファイルをインポートする:
Import[file, "TimeSeries"]Import[file, {"TimeSeries", 5}]ArrowIPCファイルからいくつかの指定行をインポートする:
Import[file, {"TimeSeries", {1, 5, 7}}]Import[file, {"TimeSeries", 1 ;; 10}]Import[file, {"TimeSeries", All, {"Product", "Date", "Quantity"}}]Importオプション (4)
IncludeMetaInformation (1)
デフォルトでは,ファイルに格納されたすべてのメタデータがインポートされ,Tabular オブジェクトに埋め込まれる:
tabular = Import["ExampleData/USstates.arrow"];
tabular["Metadata"]tabular = Import["ExampleData/USstates.arrow", IncludeMetaInformation -> None];
tabular["Metadata"]"Schema" (1)
TabularオブジェクトをArrowIPCファイルにエキスポートする:
file = Export["out.arrow", Tabular[Association["RawSchema" -> Association["ColumnProperties" ->
Association["A" -> Association["ElementType" -> "String"],
"B" -> Association["ElementType" -> "String"]], "KeyColumns" -> None,
"Backend" -> "WolframKernel"], "BackendData" ->
Association["ColumnData" -> DataStructure["ColumnTable",
{{TabularColumn[Association["Data" -> {{0, {0, 11, 22, 33, 44, 55},
"Jan 03 2006Jan 04 2006Jan 05 2006Jan 06 2006Jan 09 2006"}, {}, None},
"ElementType" -> "String"]], TabularColumn[Association[
"Data" -> {{3, {0, 5, 10, 15, 20, 25}, "11.8212.0412.0911.8812.43"}, {}, None},
"ElementType" -> "String"]]}}]]]]];TabularオブジェクトまたはDatasetオブジェクトがインポートされる場合,デフォルトではファイルに保存されている列ラベルとその型が使用される:
tabular = Import[file];
tabular["ColumnTypes"]"Schema" オプションを使うと,列ラベルと型を指定できる:
tabular = Import[file, "Schema" -> {"ColumnKeys" -> {"Date", "Value"}, "ElementType" -> {"Date" -> "Date", "Value" -> "Real32"}}];
tabular["ColumnTypes"]"TimeColumn" (1)
TabularオブジェクトをArrowIPCファイルにエキスポートする:
file = Export["file.arrow", Tabular[Association["RawSchema" -> Association["ColumnProperties" ->
Association["Date" -> Association["ElementType" -> TypeSpecifier["Date"]["Integer32", "Day",
"Gregorian", None]], "Value" -> Association["ElementType" -> "Real32"]],
"KeyColumns" -> None, "Backend" -> "WolframKernel"], "Options" -> {},
"BackendData" -> Association["ColumnData" -> DataStructure["ColumnTable",
{{TabularColumn[Association["Data" -> {5, {{NumericArray[{13150, 13151, 13152, 13153, 13156},
"Integer32"], {}, None}}, None}, "ElementType" -> "Date"["Integer32", "Day",
"Gregorian", None]]], TabularColumn[Association[
"Data" -> {NumericArray[{11.819999694824219, 12.039999961853027, 12.09000015258789,
11.880000114440918, 12.430000305175781}, "Real32"], {}, None},
"ElementType" -> "Real32"]]}}]]]]];デフォルトでは,"TimeSeries"要素および"EventSeries"要素の時間列が自動的に選択される:
Import[file, "TimeSeries"]"TimeColumn"オプションを使って時間列を指定する:
Import[file, "TimeSeries", "TimeColumn" -> "Value"]Exportオプション (6)
"Compression" (2)
tabular = Import["ExampleData/USstates.arrow"];
Export["out.arrow", tabular]//FileSizetabular = Import["ExampleData/USstates.arrow"];
AssociationMap[(FileSize@Export["out.arrow", tabular, "Compression" -> #])&, {"LZ4Frame", "ZSTD"}]CompressionLevel (2)
デフォルトでは, CompressionLevelのAutomatic値が使用される. これは圧縮方法ごとに異なるデフォルト値に対応している:
tabular = Import["ExampleData/USstates.arrow"];
AssociationMap[(FileSize@Export["out.arrow", tabular, CompressionLevel -> Automatic, "Compression" -> #])&, {"LZ4Frame", "ZSTD"}]tabular = Import["ExampleData/USstates.arrow"];
AssociationMap[(FileSize@Export["out.arrow", tabular, CompressionLevel -> 1.0, "Compression" -> #])&, {"LZ4Frame", "ZSTD"}]"Streamable" (2)
デフォルトでは,ExportはArrow IPC形式を使用する:
tabular = Import["ExampleData/USstates.arrow"];
Export["out.arrow", tabular]//FileSize"Streamable"オプションを使って,Arrow IPC ストリーミング形式を生成する:
tabular = Import["ExampleData/USstates.arrow"];
Export["out.arrow", tabular, "Streamable" -> True]//FileSize関連するガイド
-
▪
- 表とスプレッドシート形式 ▪
- 時系列と事象系列の形式 ▪
- 表形式処理の概要 ▪
- インポートとエキスポート ▪
- 基本形式 ▪
- 全形式のリスト ▪
- 行列と線形代数 ▪
- 数値データ ▪
- 数値データ形式 ▪
- 統計的データ解析
履歴
2025 で導入 (14.2) | 2026 で更新 (15.0)