ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

write

チェックポイント作成のため tall 配列をローカルな場所およびリモートの場所に書き込む

説明

write(location,tA) は、tall 配列 tA の値を計算して、location によって指定されたフォルダー内のファイルにこの配列を書き込みます。データは、datastore(location) を使用して読み取るために適した効率的なバイナリ形式で保存されます。

write(filepattern,tA)filepattern からのファイル拡張子を使用して、出力形式を決定します。filepattern には、ファイルを書き込むフォルダーが含まれ、ワイルドカード * を含むファイル名がそれに続かなければなりません。このワイルドカードは、一意のファイル名を生成するための、インクリメントする数値を表します。たとえば、write('folder/myfile_*.csv',tA) のようになります。

write(___,Name,Value) は、前述の任意の構文を使用して、1 つ以上の名前と値のペアの引数による追加オプションを指定します。たとえば、'FileType' と有効なファイル タイプ ('mat''seq''parquet''text'、または 'spreadsheet') を使ってファイル タイプを指定することができ、あるいは 'WriteFcn' と関数ハンドルを使って、データを処理するためのカスタム書き込み関数を指定することができます。

すべて折りたたむ

tall 配列をディスクに書き込み、その後、書き込んだファイルの新しいデータ ストアを作成することで tall 配列を復元します。このプロセスは、作業内容を保存したり、tall 配列を同僚と共有したりするために役立ちます。

airlinesmall.csv データセットのデータ ストアを作成します。変数 YearMonth および UniqueCarrier のみを選択し、'NA' 値を欠損データとして扱います。データ ストアを tall テーブルに変換します。

ds = datastore('airlinesmall.csv');
ds.TreatAsMissing = 'NA';
ds.SelectedVariableNames = {'Month','Year','UniqueCarrier'};
tt = tall(ds)
tt =

  M×3 tall table

    Month    Year    UniqueCarrier
    _____    ____    _____________

     10      1987        'PS'     
     10      1987        'PS'     
     10      1987        'PS'     
     10      1987        'PS'     
     10      1987        'PS'     
     10      1987        'PS'     
     10      1987        'PS'     
     10      1987        'PS'     
      :       :            :
      :       :            :

データを年によって降順に並べ替え、上位 25 行を抽出します。結果の tall テーブルは評価されません。

tt_new = topkrows(tt,25,'Year')
tt_new =

  M×3 tall table

    Month    Year    UniqueCarrier
    _____    ____    _____________

      ?       ?            ?      
      ?       ?            ?      
      ?       ?            ?      
      :       :            :
      :       :            :

Preview deferred. Learn more.

結果を C:\ ディスクの ExampleData という名前の新規フォルダーに保存します (特に Windows® コンピューターを使用していない場合は、異なる書き込み先を指定することが可能)。関数 write は、ファイルを書き込む前に tall 配列を評価するため、データを保存する前に関数 gather を使用する必要はありません。

location = 'C:\ExampleData';
write(location,tt_new)
Writing tall data to folder C:\ExampleData
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.52 sec
Evaluation completed in 1.2 sec

作業ディレクトリから ttds をクリアします。ディスクに書き込まれた tall テーブルを復元するには、最初に、同じディレクトリを参照する新しいデータ ストアを作成します。その後、データ ストアを tall テーブルに変換します。tall テーブルは、ディスクに書き込まれる前に評価されたため、今回の表示には、値のプレビューが含まれます。

clear tt ds
ds2 = datastore(location);
tt2 = tall(ds2)
tt2 =

  M×3 tall table

    Month    Year    UniqueCarrier
    _____    ____    _____________

      1      2008        'WN'     
      1      2008        'WN'     
      1      2008        'WN'     
      1      2008        'WN'     
      1      2008        'WN'     
      1      2008        'WN'     
      1      2008        'WN'     
      1      2008        'WN'     
      :       :            :
      :       :            :

データ ファイル tsunamis.xlsx を参照する tall table を作成します。このデータ ファイルには、場所、大きさ、津波の原因についてのタイムスタンプ付きデータが含まれています。

ds = datastore('tsunamis.xlsx');
T = tall(ds)
T =

  Mx20 tall table

    Latitude    Longitude    Year    Month    Day    Hour    Minute    Second    ValidityCode           Validity            CauseCode         Cause          EarthquakeMagnitude         Country                 Location            MaxHeight    IidaMagnitude    Intensity    NumDeaths    DescDeaths
    ________    _________    ____    _____    ___    ____    ______    ______    ____________    _______________________    _________    ________________    ___________________    _________________    ________________________    _________    _____________    _________    _________    __________

      -3.8        128.3      1950     10       8       3       23       NaN           2          'questionable tsunami'         1        'Earthquake'                7.6            'INDONESIA'          'JAVA TRENCH, INDONESIA'       2.8            1.5            1.5          NaN          NaN    
      19.5         -156      1951      8      21      10       57       NaN           4          'definite tsunami'             1        'Earthquake'                6.9            'USA'                'HAWAII'                       3.6            1.8            NaN          NaN          NaN    
     -9.02       157.95      1951     12      22     NaN      NaN       NaN           2          'questionable tsunami'         6        'Volcano'                   NaN            'SOLOMON ISLANDS'    'KAVACHI'                        6            2.6            NaN          NaN          NaN    
     42.15       143.85      1952      3       4       1       22        41           4          'definite tsunami'             1        'Earthquake'                8.1            'JAPAN'              'SE. HOKKAIDO ISLAND'          6.5            2.7              2           33            1    
      19.1         -155      1952      3      17       3       58       NaN           4          'definite tsunami'             1        'Earthquake'                4.5            'USA'                'HAWAII'                         1            NaN            NaN          NaN          NaN    
      43.1        -82.4      1952      5       6     NaN      NaN       NaN           1          'very doubtful tsunami'        9        'Meteorological'            NaN            'USA'                'LAKE HURON, MI'              1.52            NaN            NaN          NaN          NaN    
     52.75        159.5      1952     11       4      16       58       NaN           4          'definite tsunami'             1        'Earthquake'                  9            'RUSSIA'             'KAMCHATKA'                     18            4.2              4         2236            3    
        50        156.5      1953      3      18     NaN      NaN       NaN           3          'probable tsunami'             1        'Earthquake'                5.8            'RUSSIA'             'N. KURIL ISLANDS'             1.5            0.6            NaN          NaN          NaN    
       :            :         :        :       :      :        :         :            :                     :                   :               :                     :                     :                       :                    :              :              :            :            :
       :            :         :        :       :      :        :         :            :                     :                   :               :                     :                     :                       :                    :              :              :            :            :

YearMonthDayHourMinute、および Second の各変数を単一の datetime 変数に結合し、それらの変数を table から削除します。欠損データを含む行があれば、削除します。

T.DateTime = datetime(T.Year, T.Month, T.Day, T.Hour, T.Minute, T.Second);
T(:,3:8) = [];
TT = rmmissing(T)
TT =

  Mx15 tall table

    Latitude    Longitude    ValidityCode         Validity         CauseCode              Cause               EarthquakeMagnitude      Country               Location             MaxHeight    IidaMagnitude    Intensity    NumDeaths    DescDeaths          DateTime      
    ________    _________    ____________    __________________    _________    __________________________    ___________________    ___________    __________________________    _________    _____________    _________    _________    __________    ____________________

     42.15        143.85          4          'definite tsunami'        1        'Earthquake'                          8.1            'JAPAN'        'SE. HOKKAIDO ISLAND'             6.5           2.7              2           33           1         04-Mar-1952 01:22:41
     58.34       -136.52          4          'definite tsunami'        3        'Earthquake and Landslide'            8.3            'USA'          'SE. ALASKA, AK'               524.26           4.6              5            5           1         10-Jul-1958 06:15:53
     -39.5         -74.5          4          'definite tsunami'        1        'Earthquake'                          9.5            'CHILE'        'CENTRAL CHILE'                    25           4.6              4         1260           3         22-May-1960 19:11:17
      -6.8         -80.7          4          'definite tsunami'        1        'Earthquake'                          6.8            'PERU'         'PERU'                              9           3.2            2.5           66           2         20-Nov-1960 22:01:56
      61.1        -147.5          4          'definite tsunami'        3        'Earthquake and Landslide'            9.2            'USA'          'PRINCE WILLIAM SOUND, AK'         67           6.1              5          221           3         28-Mar-1964 03:36:14
     38.65         139.2          4          'definite tsunami'        1        'Earthquake'                          7.5            'JAPAN'        'NW. HONSHU ISLAND'               5.8           2.7              2           26           1         16-Jun-1964 04:01:44
       0.2         119.8          4          'definite tsunami'        1        'Earthquake'                          7.8            'INDONESIA'    'BANDA SEA'                        10           3.3              3          200           3         14-Aug-1968 22:14:19
      -3.1         118.9          4          'definite tsunami'        1        'Earthquake'                          6.9            'INDONESIA'    'MAKASSAR STRAIT'                   4             2              2          600           3         23-Feb-1969 00:36:56
       :            :             :                  :                 :                    :                          :                  :                     :                     :              :              :            :            :                  :
       :            :             :                  :                 :                    :                          :                  :                     :                     :              :              :            :            :                  :

table をスプレッドシート ファイルとして Amazon S3® ストレージのリモートの場所に書き込みます。Amazon S3 でデータの読み取りや書き込みを行うには、自分のアカウントの資格情報を使用して、環境変数 AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY を設定しなければなりません。詳細については、リモート データの操作を参照してください。

setenv('AWS_ACCESS_KEY_ID', 'YOUR_AWS_ACCESS_KEY_ID'); 
setenv('AWS_SECRET_ACCESS_KEY', 'YOUR_AWS_SECRET_ACCESS_KEY'); 

location = 's3://bucketname/preprocessedData/';
write(location, TT, 'FileType', 'spreadsheet')

データを読み戻すには、datastore を使用して、現在データが存在するリモートの場所をポイントします。

ds = datastore(location);
tt = tall(ds);

カスタム書き込み関数を作成し、これを使用して、write では直接サポートされていない (イメージ ファイルなどの) 追加の形式でデータを書き込みます。

toolbox/matlab/demos フォルダー内のサンプル イメージをすべて参照するイメージ データ ストアを作成します。選択したイメージには、拡張子 .jpg.tif、および .png が付いています。データ ストアを tall cell 配列に変換します。

demoFolder = fullfile(matlabroot,'toolbox','matlab','demos');
ds = imageDatastore(demoFolder,'FileExtensions',{'.jpg' '.tif' '.png'});
T = tall(ds);

イメージの 1 つをメモリに入れ、表示します。

I = gather(T(1));
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 3 sec
Evaluation completed in 3.2 sec
imshow(I{1},'InitialMagnification',30)

write はイメージ ファイルを直接にはサポートしないため、イメージを別の形式で書き出すには、ファイルの書き込みを処理する新しい関数を作成しなければなりません。書き込み関数は、write: から 2 つの入力を受け取ります。

  • info は、現在のデータ ブロックに関する情報をもつフィールドを含む構造体。これらのフィールドを使用して独自の固有なファイル名を構成するか、または単に SuggestedFilename フィールドを使って write の推奨する名前を使用することができます。

  • data は現在のデータ ブロック。データ ストアで read を使用することによって取得されます。

関数 imageWriterwrite の推奨するファイル名を使用し、imwrite を使ってイメージ ファイルを .jpg ファイルとしてディスクに書き込みます。この関数を現在の作業フォルダーに保存します。

type imageWriter
function imageWriter(info, data)
  filename = info.SuggestedFilename;
  imwrite(data{:}, filename)
end

データ ストアにあるイメージを、C:\ ディスク上の exampleImages という名前の新規フォルダーに書き込みます (特に Windows® コンピューターを使用していない場合は、別の場所を使用することが可能)。名前と値のペアの引数 'WriteFcn' を使用して、imageWriter をカスタム書き込み関数として渡します。

location = 'C:\exampleImages\image_*.jpg';
write(location, T, 'WriteFcn', @imageWriter)
Writing tall data to folder C:\exampleImages
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.71 sec
Evaluation completed in 0.98 sec

ファイルの書き込まれたフォルダーの内容を表示します。

dir C:\exampleImages
.                   image_1_000001.jpg  image_3_000001.jpg  image_5_000001.jpg  
..                  image_2_000001.jpg  image_4_000001.jpg  image_6_000001.jpg  

イメージを MATLAB® に読み戻すには、同じ場所を参照するデータ ストアを作成します。

ds = imageDatastore(location);
T = tall(ds)
T =

  6×1 tall cell array

    {1024×2048×3 uint8}
    { 650×600×3  uint8}
    {1024×2048×3 uint8}
    { 650×600×3  uint8}
    { 480×640×3  uint8}
    { 480×640×3  uint8}

入力引数

すべて折りたたむ

データを書き込むためのフォルダーの場所。文字ベクトルまたは string として指定します。location には、絶対パスまたは相対パスを指定できます。指定されたフォルダーは、次のオプションのいずれかになります。

  • 既存の空のフォルダー

  • write が作成する新規フォルダー

データは、コンピューター上のローカル フォルダーか、あるいは HDFS™、Azure®、または Amazon S3™ におけるリモートの場所に書き込むことができます。リモートの場所でのデータの読み取りと書き込みの詳細については、リモート データの操作を参照してください。

Hadoop® および Apache Spark™ には、その他の考慮事項が適用されます。

  • ローカルで使用できないフォルダーについては、次の形式の IRI (国際化リソース識別子) を使用してフォルダーの絶対パスを指定しなければなりません。
    hdfs:///path_to_file

  • HDFS に書き込む場合は、HADOOP_HOMEHADOOP_PREFIXMATLAB_HADOOP_INSTALL のいずれかの環境変数を、Hadoop がインストールされているフォルダーに設定します。

  • Apache Spark に書き込む場合は、SPARK_HOME 環境変数を、Apache Spark がインストールされているフォルダーに設定します。

例: location = 'hdfs:///some/output/folder'

例: location = '../../dir/data'

例: location = 'C:\Users\MyName\Desktop'

データ型: char | string

入力配列。tall 配列として指定します。

ファイル命名パターン。string または文字ベクトルとして指定します。ファイル命名パターンには、ファイルを書き込むフォルダーが含まれ、ワイルドカード * を含むファイル名がそれに続かなければなりません。関数 write はワイルドカードを連続番号に置き換え、ファイル名が必ず一意となるようにします。

例: write('folder/data_*.txt',tA) は、data_1.txtdata_2.txt などのファイル名をもつ一連の .txt ファイルとして、tall 配列 tAfolder に書き込みます。

データ型: char | string

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: write('C:\myData', tX, 'FileType', 'text', 'WriteVariableNames', false) は、tall 配列 tX を、列見出しとして変数名を使用しないテキスト ファイルのコレクションとして C:\myData に書き込みます。

一般オプション

すべて折りたたむ

ファイルの種類。'FileType' と、許可されたファイル タイプ ('auto''mat''parquet''seq''text'、または 'spreadsheet') のいずれかで構成されるコンマ区切りのペアとして指定します。

'FileType' の名前と値のペアを location 引数と共に使用して、どのような種類のファイルを書き込むかを指定します。既定では、write は適切なファイル タイプを自動検出するよう試みます。writelocation または filepattern 引数の拡張子からファイル タイプを判定できる場合、名前と値のペアの引数 'FileType' を指定する必要はありません。write は、次の拡張子からファイル タイプを判定できます。

  • MATLAB® データ ファイルの場合、.mat

  • Parquet ファイルの .parquet または .parq

  • シーケンス ファイルの場合、.seq

  • 区切りテキスト ファイルの場合、.txt.dat または .csv

  • スプレッドシート ファイルの場合、.xls.xlsx.xlsb.xlsm.xltx、または .xltm

例: write('C:\myData', tX, 'FileType', 'text')

カスタム書き込み関数。'WriteFcn' と関数ハンドルで構成されるコンマ区切りのペアとして指定します。指定した関数は tA からデータのブロックを受け取り、出力ファイルの作成を受け持ちます。write が出力形式を直接にサポートしていない場合でも、名前と値のペアの引数 'WriteFcn' を使用して、さまざまな形式でデータを書き込むことができます。

関数シグネチャ

カスタム書き込み関数は、infodata の 2 つの入力引数を受け入れなければなりません。

function myWriter(info, data)

  • data には、tA からのデータのブロックが含まれている。

  • info は、データのブロックに関する情報を含むフィールドをもつ構造体。これらのフィールドを使用して、最終的な場所でグローバルに一意となる、新しいファイル名を構成することができます。構造体フィールドは次のとおりです。

    フィールド説明
    RequiredLocation一時出力フォルダーへの完全修飾パス。このフォルダーに書き込まれたファイルのみが、最終の書き込み先にコピーされます。ファイルはサブフォルダー内に配置できません。
    RequiredFilePattern出力ファイル名に必要なファイル パターン。フォルダー名のみが指定されている場合、このフィールドは空になります。
    SuggestedFilename場所と命名の要件を満たす、完全修飾の、グローバルに一意なファイル名。
    PartitionIndex書き込まれる tall 配列の区画のインデックス。
    NumPartitionstall 配列における区画の総数。
    BlockIndexInPartition区画内での現在のデータ ブロックの位置。
    IsFinalBlock現在のブロックが区画の最終ブロックである場合は true

ファイルの命名

出力ファイルに使用されるファイル名によって、後ほど datastore がファイルを読み戻す順序が決定されます。ファイルの順序が重要である場合は、SuggestedFilename フィールドを使用してファイルに命名することをお勧めします。推奨される名前によってファイルの順序が確定されるからです。推奨されるファイル名を使用しない場合、カスタム書き込み関数はグローバルに一意な、正しく順序付けられたファイル名を作成しなければなりません。ファイル名は、RequiredFilePattern で概説されている命名パターンに従う必要があります。Parallel Computing Toolbox™ での並列実行に際しては、各ワーカーが独自のローカル フォルダーに書き込む場合でも、ファイル名はワーカー間で一意であり、かつ正しく順序付けられていなければなりません。

複数の区画をもつ配列

tall 配列を区画に分けて、配列に対する Parallel Computing Toolbox での並列計算を実行しやすくすることができます。それぞれの区画はさらに、個々がメモリに収まる、より小さなブロックで構成されています。

info には、PartitionIndexNumPartitionsBlockIndexInPartitionIsFinalBlock など、区画に関連するいくつかのフィールドが含まれています。これらのフィールドは、単一のファイルを書き込み、そこに追加していく場合に便利です。これは、多くのブロックに分割された大きな区画をもつ配列では、一般的に行われるタスクです。カスタム書き込み関数はブロックごとに 1 回呼び出され、1 つの区画内のブロックは常に、同じワーカーによって順番に書き込まれます。ただし、別々の区画は別々のワーカーによって書き込まれる可能性があります。

関数の例

スプレッドシート ファイルを書き込む単純な書き込み関数は、次のとおりです。

function dataWriter(info, data)
  filename = info.SuggestedFilename;
  writetable(data, filename, 'FileType', 'spreadsheet')
end
dataWriter を何らかのデータ tt 用の書き込み関数として呼び出すには、以下のコマンドを使用します。
tt = tall(array2table(rand(5000,3)));
location = '/tmp/MyData/tt_*.xlsx';
write(location, tt, 'WriteFcn', @dataWriter);
それぞれのブロックで、関数 dataWriterinfo 構造体の推奨ファイル名を使用し、スプレッドシート ファイルを書き込むために writetable を呼び出します。推奨ファイル名では、location 引数で指定されているファイル命名パターンが考慮されます。

データ型: function_handle

テキスト ファイルまたはスプレッドシート ファイル

すべて折りたたむ

変数名を列見出しとして書き込むためのインジケーター。'WriteVariableNames' と、数値もしくは logical の 1 (true) または 0 (false) で構成されるコンマ区切りのペアとして指定します。

インジケーター

動作

true

変数名を出力の列見出しとして含める (既定)。

false

変数名を出力に含めない。

日付を書き込むためのロケール。'DateLocale' と、文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。datetime 値をファイルに書き込む場合、DateLocale を使用して write が月と曜日の名前と省略形を書き込むためのロケールを指定します。xx_YY の形式の文字ベクトルまたは string。xx は ISO 639-1 で定義された小文字 2 文字の言語コードで、YY は ISO 3166-1 alpha-2 で定義された大文字の国コードです。ロケールの一般的な値の一覧については、関数 datetimeLocale の名前と値のペア引数を参照してください。

Excel® ファイルの場合、writedatetime 配列を含む変数を Excel の日付として書き込み、'DateLocale' パラメーターの値は無視します。datetime の変数に 1900 年または 1904 年よりも前の年が含まれている場合、write はその変数をテキストとして書き込みます。Excel の日付の詳細については、Differences between the 1900 and the 1904 date system in Excel を参照してください。

例: 'DateLocale','ja_JP' または 'DateLocale',"ja_JP"

データ型: char | string

テキスト ファイルのみ

すべて折りたたむ

フィールドの区切り記号。'Delimiter' と次の指定子のいずれかで構成されるコンマ区切りのペアとして指定します。

指定子

フィールドの区切り記号

','

'comma'

コンマ (既定)

' '

'space'

スペース

'\t'

'tab'

タブ

';'

'semi'

セミコロン

'|'

'bar'

縦棒

名前と値のペアの引数 'Delimiter' は、区切り付きテキスト ファイルに対してのみ使用できます。

例: 'Delimiter','space' または 'Delimiter',"space"

引用符付きテキスト書き込みのインジケーター。'QuoteStrings' と、false または true のいずれかで構成されるコンマ区切りのペアとして指定します。'QuoteStrings'true に設定されている場合、write はテキストを二重引用符で囲み、テキストの一部として表示される二重引用符をすべて 2 つの二重引用符に置き換えます。例については、引用符付きテキストの CSV ファイルへの書き込みを参照してください。

名前と値のペアの引数 'QuoteStrings' は、区切り付きテキスト ファイルでのみ使用できます。

ファイルに関連付けられた文字エンコード スキーム。'Encoding''system' で構成されるコンマ区切りのペア、または次の表に示す値のいずれかのような標準の文字エンコード スキーム名として指定します。エンコードを指定しない場合、またはエンコードを 'system' として指定した場合、関数 write はシステムの既定のエンコードを使用してファイルを書き込みます。

'Big5'

'ISO-8859-1'

'windows-874'

'Big5-HKSCS'

'ISO-8859-2'

'windows-949'

'CP949'

'ISO-8859-3'

'windows-1250'

'EUC-KR'

'ISO-8859-4'

'windows-1251'

'EUC-JP'

'ISO-8859-5'

'windows-1252'

'EUC-TW'

'ISO-8859-6'

'windows-1253'

'GB18030'

'ISO-8859-7'

'windows-1254'

'GB2312'

'ISO-8859-8'

'windows-1255'

'GBK'

'ISO-8859-9'

'windows-1256'

'IBM866'

'ISO-8859-11'

'windows-1257'

'KOI8-R'

'ISO-8859-13'

'windows-1258'

'KOI8-U'

'ISO-8859-15'

'US-ASCII'

 

'Macintosh'

'UTF-8'

 

'Shift_JIS'

 

例: 'Encoding','system' または 'Encoding',"system" ではシステムの既定のエンコードを使用します。

スプレッドシート ファイルのみ

すべて折りたたむ

ターゲットのワークシート。'Sheet' と、ワークシート名またはワークシート インデックスを示す正の整数を含む文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。ワークシート名にコロン (:) を含めることはできません。スプレッドシート ファイルのシートの名前を決めるには、[status,sheets] = xlsfinfo(filename) を使用します。

シートが存在しない場合は、write がワークシート コレクションの最後に新しいシートを追加します。シートのインデックスがワークシート数より大きい場合は、ワークブック内のワークシートの数がシート インデックスと同じになるまで、write は空のシートを追加します。いずれの場合でも、write は新しいワークシートが追加されたことを示す警告を表示します。

名前と値のペアの引数 'Sheet' は、スプレッドシート ファイルでのみ使用できます。

例: 'Sheet',2

例: 'Sheet', 'MySheetName'

データ型: char | string | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Parquet ファイルのみ

すべて折りたたむ

Parquet の圧縮アルゴリズム。次の値のいずれかとして指定します。

  • 'Snappy''Brotli''Gzip'、または 'Uncompressed'。1 つの圧縮アルゴリズムを指定すると、write は同じアルゴリズムを使用してすべての変数を圧縮します。

  • または、各変数に使用する圧縮アルゴリズムの名前が含まれる文字ベクトルの cell 配列または string ベクトルを指定できます。

一般に、'Snappy' の読み取りと書き込みのパフォーマンスは高く、'Gzip' は CPU 処理時間が長くなりますが圧縮率が高く、'Brotli' は通常、圧縮速度が低下しますが最小ファイル サイズを作成します。

関数 write は Parquet ディクショナリ エンコード スキームを使用して Parquet 2.0 ファイルを書き込みます。このエンコード スキームは、一意の値の数が過度に大きくない場合に最も効率が高くなります。ディクショナリのサイズまたは一意の値の数が過度に大きくなると、エンコードは自動的に plain エンコードに戻ります。

例: write('C:\myData', tX, 'FileType', 'parquet', 'VariableCompression', 'Brotli')

例: write('C:\myData', tX, 'FileType', 'parquet', 'VariableCompression', {'Brotli' 'Snappy' 'Gzip'})

制限

場合によっては、write(location, T, 'FileType', type) は元の配列 T を正確には表さないファイルを作成します。datastore(location) を使用してファイルを読み取る場合、結果の形式や内容は元の tall table と同じではない可能性があります。

  1. 'text' および 'spreadsheet' のファイル タイプでは、write は以下のルールを使用します。

    • writelongG 形式を使用して数値変数を出力し、categorical 変数、文字変数、または string 変数を引用符なしのテキストとして出力する。

    • 複数の列をもつ非テキスト変数に対し、write は区切り記号のある複数のフィールドを各行に出力し、ファイルの最初の行で用いる適切な列見出しを構成する。

    • write は、次元数が 2 を超える変数を 2 次元の変数として、後続の次元を折りたたんで出力する。

    • 数値、logical、文字、または categorical のコンテンツをもつ、cell 値の指定された変数に対し、write は各 cell のコンテンツを単一の行として、区切り記号のある複数のフィールドに出力する。cell に異なったデータ型がある場合、write は単一の空のフィールドを出力する。

    tall 配列の正確なチェックポイントを書き込む必要がある場合は、'text''spreadsheet' のファイル タイプを使用しないでください。

  2. 'parquet' ファイル タイプの場合、Parquet 形式が MATLAB table または timetable のデータ型を完全に表現できない場合があります。parquetread または datastore を使用してファイルを読み取る場合、結果の形式や内容は元の tall table と同じではない可能性があります。詳細については、Apache Parquet データ型のマッピングを参照してください。

ヒント

  • 特に大きなデータセットで作業している場合は、関数 write を使用して、作業しているデータの "チェックポイント" または "スナップショット" を作成します。このプラクティスによって、tall 配列を生成したコマンドをすべて再実行するのではなく、ディスク上のファイルから直接に tall 配列を再構成できます。

拡張機能

tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。

R2016b で導入