Main Content

parquetread

Parquet ファイルから列指向データを読み取る

説明

T = parquetread(filename) は、filename で指定された Parquet ファイルを table または timetable T に読み取ります。

T = parquetread(filename,Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加のオプションで Parquet ファイルを table または timetable に読み取ります。

すべて折りたたむ

Parquet ファイルに関する情報を取得し、このファイルから table にデータを読み取ってから、変数のサブセットを table に読み取ります。

outages.parquet ファイルの ParquetInfo オブジェクトを作成します。

info = parquetinfo('outages.parquet')
info = 
  ParquetInfo with properties:

               Filename: "/mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/demos/outages.parquet"
               FileSize: 44202
           NumRowGroups: 1
        RowGroupHeights: 1468
          VariableNames: ["Region"    "OutageTime"    "Loss"    "Customers"    "RestorationTime"    "Cause"]
          VariableTypes: ["string"    "datetime"    "double"    "double"    "datetime"    "string"]
    VariableCompression: ["snappy"    "snappy"    "snappy"    "snappy"    "snappy"    "snappy"]
       VariableEncoding: ["plain"    "plain"    "plain"    "plain"    "plain"    "plain"]
                Version: "2.0"

ファイルからデータを table に読み取り、最初の 10 行を表示します。

T = parquetread('outages.parquet');
T(1:10,:) 
ans=10×6 table
      Region            OutageTime          Loss     Customers       RestorationTime             Cause      
    ___________    ____________________    ______    __________    ____________________    _________________

    "SouthWest"    01-Feb-2002 12:18:00    458.98    1.8202e+06    07-Feb-2002 16:50:00    "winter storm"   
    "SouthEast"    23-Jan-2003 00:49:00    530.14    2.1204e+05                     NaT    "winter storm"   
    "SouthEast"    07-Feb-2003 21:15:00     289.4    1.4294e+05    17-Feb-2003 08:14:00    "winter storm"   
    "West"         06-Apr-2004 05:44:00    434.81    3.4037e+05    06-Apr-2004 06:10:00    "equipment fault"
    "MidWest"      16-Mar-2002 06:18:00    186.44    2.1275e+05    18-Mar-2002 23:23:00    "severe storm"   
    "West"         18-Jun-2003 02:49:00         0             0    18-Jun-2003 10:54:00    "attack"         
    "West"         20-Jun-2004 14:39:00    231.29           NaN    20-Jun-2004 19:16:00    "equipment fault"
    "West"         06-Jun-2002 19:28:00    311.86           NaN    07-Jun-2002 00:51:00    "equipment fault"
    "NorthEast"    16-Jul-2003 16:23:00    239.93         49434    17-Jul-2003 01:12:00    "fire"           
    "MidWest"      27-Sep-2004 11:09:00    286.72         66104    27-Sep-2004 16:37:00    "equipment fault"

変数 RegionOutageTimeCause を選択して table にインポートし、最初の 10 行を表示します。

SelVarNames = {'Region','OutageTime','Cause'};
T_subset = parquetread('outages.parquet','SelectedVariableNames',SelVarNames);
T_subset(1:10,:) 
ans=10×3 table
      Region            OutageTime               Cause      
    ___________    ____________________    _________________

    "SouthWest"    01-Feb-2002 12:18:00    "winter storm"   
    "SouthEast"    23-Jan-2003 00:49:00    "winter storm"   
    "SouthEast"    07-Feb-2003 21:15:00    "winter storm"   
    "West"         06-Apr-2004 05:44:00    "equipment fault"
    "MidWest"      16-Mar-2002 06:18:00    "severe storm"   
    "West"         18-Jun-2003 02:49:00    "attack"         
    "West"         20-Jun-2004 14:39:00    "equipment fault"
    "West"         06-Jun-2002 19:28:00    "equipment fault"
    "NorthEast"    16-Jul-2003 16:23:00    "fire"           
    "MidWest"      27-Sep-2004 11:09:00    "equipment fault"

ファイルからデータを timetable に読み取り、timetable 関数を使用してこの timetable が規則的かつ並べ替えられているかどうかを判定します。

outages.parquet からデータを timetable に読み取り、最初の 10 行を表示します。データの 2 つ目の変数 OutageTime を timetable の時間ベクトルとして使用します。

TT = parquetread('outages.parquet','RowTimes','OutageTime');
TT(1:10,:)
ans=10×5 timetable
         OutageTime           Region        Loss     Customers       RestorationTime             Cause      
    ____________________    ___________    ______    __________    ____________________    _________________

    01-Feb-2002 12:18:00    "SouthWest"    458.98    1.8202e+06    07-Feb-2002 16:50:00    "winter storm"   
    23-Jan-2003 00:49:00    "SouthEast"    530.14    2.1204e+05                     NaT    "winter storm"   
    07-Feb-2003 21:15:00    "SouthEast"     289.4    1.4294e+05    17-Feb-2003 08:14:00    "winter storm"   
    06-Apr-2004 05:44:00    "West"         434.81    3.4037e+05    06-Apr-2004 06:10:00    "equipment fault"
    16-Mar-2002 06:18:00    "MidWest"      186.44    2.1275e+05    18-Mar-2002 23:23:00    "severe storm"   
    18-Jun-2003 02:49:00    "West"              0             0    18-Jun-2003 10:54:00    "attack"         
    20-Jun-2004 14:39:00    "West"         231.29           NaN    20-Jun-2004 19:16:00    "equipment fault"
    06-Jun-2002 19:28:00    "West"         311.86           NaN    07-Jun-2002 00:51:00    "equipment fault"
    16-Jul-2003 16:23:00    "NorthEast"    239.93         49434    17-Jul-2003 01:12:00    "fire"           
    27-Sep-2004 11:09:00    "MidWest"      286.72         66104    27-Sep-2004 16:37:00    "equipment fault"

timetable が規則的かつ並べ替えられているかどうかを判定します。規則的な timetable では連続する行時間の時間間隔が同じあり、並べ替えられた timetable では行時間ベクトルが昇順です。

isregular(TT)
ans = logical
   0

issorted(TT)
ans = logical
   0

関数 sortrows を使用して、行時間を基準として timetable を並べ替え、並べ替えられたデータの最初の 10 行を表示します。

TT = sortrows(TT);
TT(1:10,:)
ans=10×5 timetable
         OutageTime           Region        Loss     Customers       RestorationTime             Cause       
    ____________________    ___________    ______    __________    ____________________    __________________

    01-Feb-2002 12:18:00    "SouthWest"    458.98    1.8202e+06    07-Feb-2002 16:50:00    "winter storm"    
    05-Mar-2002 17:53:00    "MidWest"      96.563    2.8666e+05    10-Mar-2002 14:41:00    "wind"            
    16-Mar-2002 06:18:00    "MidWest"      186.44    2.1275e+05    18-Mar-2002 23:23:00    "severe storm"    
    26-Mar-2002 01:59:00    "MidWest"      388.04    5.6422e+05    28-Mar-2002 19:55:00    "winter storm"    
    20-Apr-2002 16:46:00    "MidWest"       23141           NaN                     NaT    "unknown"         
    08-May-2002 20:34:00    "SouthWest"    50.732         34481    08-May-2002 22:21:00    "thunder storm"   
    18-May-2002 11:04:00    "MidWest"      1389.1    1.3447e+05    21-May-2002 01:22:00    "unknown"         
    20-May-2002 10:57:00    "NorthEast"    9116.6    2.4983e+06    21-May-2002 15:22:00    "unknown"         
    27-May-2002 09:44:00    "SouthEast"    237.28    1.7101e+05    27-May-2002 16:19:00    "wind"            
    02-Jun-2002 16:11:00    "SouthEast"         0             0    05-Jun-2002 05:55:00    "energy emergency"

行フィルターを使用してインポートする変数および行を指定することで、データのサブセットをインポートします。

outages.parquet ファイルのサブセットをインポートするには、変数 OutageTimeRegion、および Cause のみをインポートするフィルターを作成します。次に、特定の条件を満たす値が含まれている行のみをインポートするようにフィルターを調整します。

rf = rowfilter(["OutageTime" "Region" "Cause"]);
rf2 = (rf.OutageTime > datetime("2013-02-01")) & (rf.Region == "NorthEast") & (rf.Cause == "winter storm");
d = parquetread("outages.parquet",RowFilter=rf2,SelectedVariableNames=["OutageTime" "Region" "Cause"])
d=6×3 table
         OutageTime           Region           Cause     
    ____________________    ___________    ______________

    09-Feb-2013 00:55:00    "NorthEast"    "winter storm"
    13-Feb-2013 01:44:00    "NorthEast"    "winter storm"
    25-Dec-2013 11:24:00    "NorthEast"    "winter storm"
    30-Dec-2013 11:40:00    "NorthEast"    "winter storm"
    22-Feb-2013 02:17:00    "NorthEast"    "winter storm"
    23-Feb-2013 01:53:00    "NorthEast"    "winter storm"

結果として得られる、フィルター処理されたデータのサブセットには、指定した 3 つの変数について、フィルター条件を満たす 6 行のみが含まれています。

入力引数

すべて折りたたむ

Parquet ファイルの名前。文字ベクトルまたは string スカラーとして指定します。parquetread は Parquet 1.0 ファイルまたは Parquet 2.0 ファイルで機能します。

ファイルの場所に応じて、filename は次のいずれかの形式にできます。

場所

形式

現在のフォルダー、または MATLAB® パス上のフォルダー

ファイル名を filename で指定します。

例: 'data.parquet'

フォルダー内のファイル

ファイルが現在のフォルダーまたは MATLAB パス上のフォルダーにない場合は、絶対パス名または相対パス名を指定します。

例: 'C:\myFolder\data.parquet'

例: 'myDir\myFile.ext'

インターネット URL

ファイルをインターネットの Uniform Resource Locator (URL) として指定する場合、filename'http://' または 'https://' のプロトコル タイプを含め、最後に '?raw=true' を付けなければなりません。

例: 'http://hostname/path_to_file/my_data.parquet?raw=true'

リモートの場所

リモートの場所に保存されたファイルの場合、filename は次の形式で指定されたファイルの絶対パスを含まなければなりません。

scheme_name://path_to_file/my_file.ext

リモートの場所に基づいて、scheme_name には次の表の値のいずれかを指定できます。

リモートの場所scheme_name
Amazon S3™s3
Azure® Blob Storagewasb, wasbs
HDFS™hdfs

詳細については、リモート データの操作を参照してください。

例: 's3://bucketname/path_to_file/data.parquet'

関数 parquetread を使用すると、Parquet ファイルから構造化データをインポートできます。読み取りでサポートされる Parquet データ型の詳細については、Apache Parquet データ型のマッピングを参照してください。

データ型: char | string

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: 'OutputType','table' はデータを table として Parquet ファイルにインポートします。

出力のデータ型。'OutputType' と、'auto''table'、または 'timetable' で構成されるコンマ区切りのペアとして指定します。

  • 'auto' — table または timetable を返します。parquetread は、指定された他の名前と値のペアに基づいて、出力を table または timetable のいずれにすべきかを検出します。たとえば、timetable に関連する名前と値のペアを設定すると、parquetread はその出力が timetable であると推測します。これらの名前と値のペアを設定すると、出力が timetable RowTimesStartTimeSampleRateTimeStep であることを示します。

  • 'table' — table を返します。table データ型の詳細については、table を参照してください。

  • 'timetable' — timetable を返します。timetable データ型の詳細については、timetable を参照してください。

例: 'OutputType','timetable'

データ型: char | string

インポートする変数のサブセット。'SelectedVariableNames' と、文字ベクトル、string スカラー、文字ベクトルの cell 配列、または string 配列で構成されるコンマ区切りのペアとして指定します。

  • SelectedVariableNames は Parquet ファイルに含まれる変数名のサブセットでなければなりません。ファイル内のすべての変数名を取得するには、ParquetInfo オブジェクトの VariableNames プロパティを使用します。

  • SelectedVariableNames の名前と値のペアを指定しない場合、parquetread はファイルからすべての変数を読み取ります。

データ型: char | string | cell

行時間変数。'RowTimes' および変数名または時間ベクトルで構成されるコンマ区切りのペアとして指定します。

  • 変数名は、datetime または duration の値を含む入力 table 内の任意の変数名を含む文字ベクトルまたは string スカラーでなければなりません。変数名で指定される変数は、行の行時間のラベルを提供します。入力 table の残りの変数は、timetable の変数になります。

  • 時間ベクトルは datetime ベクトルまたは duration ベクトルでなければなりません。時間ベクトルの要素数は、入力テーブルの行数と等しくなければなりません。時間ベクトルの時間値は、一意であったり、並べ替えられていたり、規則的な値である必要はありません。入力 table のすべての変数は timetable の変数になります。

データ型: char | string | datetime | duration

行時間の開始時間。StartTime と、datetime スカラーまたは duration スカラーで構成されるコンマ区切りのペアとして指定します。

  • 開始時間が datetime の場合、T の行時間は datetime 値になる。

  • 開始時間が duration の場合、T の行時間は duration 値になる。

  • タイム ステップがカレンダー期間の場合、開始時間は datetime 値でなければならない。

StartTime は timetable に関連するパラメーターです。関数 parquetreadSampleRate または TimeStep とともに StartTime を使用して、出力 T の時間ベクトルを定義します。

データ型: datetime | duration

サンプル レート。'SampleRate' と正の数値スカラーで構成されるコンマ区切りのペアとして指定します。サンプル レートは、出力 timetable T の時間ベクトルの 1 秒あたりのサンプル数 (Hz) です。

SampleRate は timetable に関連するパラメーターです。関数 parquetread はその他の timetable パラメーターとともに SampleRate を使用して出力 T の時間ベクトルを定義します。

データ型: double

インポートする行グループのインデックス。読み取る行グループのインデックスを指す正の整数スカラー、または正の整数のベクトルとして指定します。

  • スカラーを指定した場合、関数は単一の行グループを読み取ります。

  • ベクトルを指定した場合、関数は指定された行グループをすべて読み取ります。

  • 行グループを指定しなかった場合、parquetread はファイル全体をインポートします。

例: RowGroups=701:720

インポートする行を選択するフィルター。matlab.io.RowFilter オブジェクトとして指定します。matlab.io.RowFilter オブジェクトは、出力 table または timetable に含まれるために各行が満たす必要がある条件を指定します。RowFilter を指定しなかった場合、parquetread は入力 Parquet ファイルからすべての行をインポートします。

時間ベクトルのタイム ステップ。'TimeStep' と duration スカラーで構成されるコンマ区切りのペアとして指定します。

  • タイム ステップをカレンダー期間 (たとえば、カレンダー月数) として指定する場合、行時間のベクトルは datetime ベクトルでなければなりません。

  • タイム ステップを duration (たとえば、秒) として指定する場合、行時間のベクトルは datetime ベクトルまたは duration ベクトルのいずれかになります。

TimeStep は timetable に関連するパラメーターです。関数 parquetread はその他の timetable パラメーターとともに TimeStep を使用して出力 T の時間ベクトルを定義します。

変数名を保持するかどうかのフラグ。"modify" または "preserve" として指定します。

  • "modify" — 無効な変数名 (関数 isvarname で判定) を、有効な MATLAB 識別子に変換。

  • "preserve" — スペースや非 ASCII 文字を含む変数名など、有効な MATLAB 識別子ではない変数名を保持。

R2019b 以降、変数名と行名には、スペースや非 ASCII 文字など任意の文字を含めることができます。また、英字だけでなく任意の文字で始めることができます。変数名と行名は、有効な MATLAB 識別子 (関数 isvarname で判定) である必要はありません。これらの変数名と行名を保持するには、VariableNamingRule の値を "preserve" に設定します。VariableNamingRule の値を "modify" から "preserve" に変更すると、変数名が更新されなくなります。

データ型: char | string

出力引数

すべて折りたたむ

出力データ。table または timetable として返されます。関数 parquetread の出力は OutputType の名前と値のペアの値によって異なります。詳細については、OutputType の名前と値のペアの説明を参照してください。

制限

場合によっては、parquetwrite は元の配列 T を正確には表さないファイルを作成します。parquetread または datastore を使用してファイルを読み取る場合、結果の形式または内容は元の table と異なる可能性があります。詳細については、Apache Parquet データ型のマッピングを参照してください。

拡張機能

バージョン履歴

R2019a で導入

すべて展開する