Main Content

parquetDatastore

用于 Parquet 文件集合的数据存储

说明

如果一个 Parquet 文件集合中的每个 Parquet 文件可以单独放入内存,但整个文件集合不一定能放入内存,则可以使用 ParquetDatastore 对象来管理。您可以使用 parquetDatastore 函数创建 ParquetDatastore 对象,指定其属性,然后使用对象函数导入和处理数据。

创建对象

描述

示例

pds = parquetDatastore(location) 根据 location 指定的 Parquet 文件集合创建一个数据存储 pds

示例

pds = parquetDatastore(location,Name,Value) 使用一个或多个名称-值对组参量为 pds 指定其他参数和属性。

输入参量

全部展开

数据存储中包含的文件或文件夹,指定为 FileSet 对象、文件路径或 DsFileSet 对象。

  • FileSet 对象 - 您可以将 location 指定为 FileSet 对象。与指定路径或 DsFileSet 对象相比,将位置指定为 FileSet 对象会加快数据存储的构造时间。有关详细信息,请参阅 matlab.io.datastore.FileSet

  • 文件路径 - 您可以将单个文件路径指定为字符向量或字符串标量。您可以将多个文件路径指定为字符向量元胞数组或字符串数组。

  • DsFileSet 对象 - 您可以指定 DsFileSet 对象。有关详细信息,请参阅 matlab.io.datastore.DsFileSet

文件或文件夹可以是本地的或远程的:

  • 本地文件或文件夹 - 指定文件或文件夹的本地路径。如果文件不在当前文件夹中,则指定完整路径或相对路径。指定文件夹的子文件夹中的文件不会自动包括在数据存储中。在指定本地路径时可以使用通配符 (*)。此字符指定数据存储包含所有匹配的文件或匹配文件夹中的所有文件。

  • 远程文件或文件夹 - 将远程文件或文件夹的完整路径指定为 hdfs:///path_to_file 形式的统一资源定位器 (URL)。有关详细信息,请参阅处理远程数据

当您指定文件夹时,数据存储仅包括具有支持的文件格式的文件,而忽略任何其他格式的文件。要指定要包含在数据存储中的自定义文件扩展名列表,请参阅 FileExtensions 属性。

parquetDatastore 函数支持 .parquet 文件格式。

示例: "myfile.parquet"

示例: "../dir/data/myfile.parquet"

示例: ["C:\dir\data\myfile01.parquet","C:\dir\data\myfile02.parquet"]

示例: "s3://bucketname/path_to_files/*.parquet"

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: "IncludeSubfolders",true

要包含在数据存储中的扩展名,指定为名称-值参量,其中包含 "FileExtensions" 和一个字符向量、字符向量元胞数组、字符串标量或字符串数组。

  • 如果不指定 "FileExtensions",则 parquetDatastore 会自动包含指定路径中具有 .parquet.parq 扩展名的所有文件。

  • 如果要在 parquetDatastore 中包含具有非标准文件扩展名的 parquet 文件,请显式指定这些扩展名。

  • 如果要为没有任何扩展名的文件创建 parquetDatastore,请将 "FileExtensions" 指定为空字符向量 ''

示例: "FileExtensions",[".parquet",".parq"]

示例: "FileExtensions",".myformat"

示例: "FileExtensions",''

数据类型: char | cell | string

子文件夹包含标志,指定为由 "IncludeSubfolders"truefalse 组成的名称-值参量。指定 true 可包含每个文件夹中的所有文件和子文件夹,指定 false 则仅包含每个文件夹中的文件。

如果不指定 "IncludeSubfolders",则默认值为 false

示例: "IncludeSubfolders",true

数据类型: logical | double

输出数据类型,指定为名称-值参量,由 "OutputType" 和以下值之一组成:

  • "auto" - 根据您是否指定 "RowTimes" 名称-值参量,检测数据存储的输出是表还是时间表。如果您指定 "RowTimes",则输出是时间表;否则,输出是表。

  • "table" - 返回 table

  • "timetable" - 返回 timetable

OutputType 的值决定 previewreadreadall 函数返回的数据类型。将此选项与 "RowTimes" 名称-值对组结合使用,可从 ParquetDatastore 返回时间表。

示例: "OutputType","timetable"

数据类型: char | string

保留变量名称的标志,指定为 "modify""preserve"

  • "modify" - 将无效变量名称(由 isvarname 函数确定)转换为有效的 MATLAB® 标识符。

  • "preserve" - 保留作为无效 MATLAB 标识符的变量名称,如包含空白和非 ASCII 字符的变量名称。

从 R2019b 开始,变量名称和行名称可以包含任何字符,包括空格和非 ASCII 字符。此外,它们可以由任何字符(而不仅仅是字母)开头。变量名称和行名称可以不是有效的 MATLAB 标识符(由 isvarname 函数决定)。要保留这些变量名称和行名称,请将 VariableNamingRule 的值设置为 "preserve"。当 VariableNamingRule 的值从 "modify" 更改为 "preserve" 时,变量名称不会刷新。

数据类型: char | string

备用文件系统根路径,以名称-值参量形式指定,其中包含 "AlternateFileSystemRoots" 和一个字符串向量或元胞数组。当您在本地计算机上创建数据存储,但需要访问和处理另一台计算机(可能是不同操作系统)上的数据时,请使用 "AlternateFileSystemRoots"。此外,如果您使用 Parallel Computing Toolbox™ 和 MATLAB Parallel Server™ 处理数据,而数据存储在本地计算机上并且在不同平台云或集群计算机上存储数据副本,则必须使用 "AlternateFileSystemRoots" 关联根路径。

  • 要关联一组等效的根路径,请将 "AlternateFileSystemRoots" 指定为字符串向量。例如,

    ["Z:\datasets","/mynetwork/datasets"]

  • 要将在数据存储方面等效的多组根路径关联起来,请将 "AlternateFileSystemRoots" 指定为包含多个行的元胞数组,其中每一行代表一组等效的根路径。将元胞数组中的每一行指定为一个字符串向量或字符向量元胞数组。例如:

    • "AlternateFileSystemRoots" 指定为字符串向量元胞数组。

      {["Z:\datasets", "/mynetwork/datasets"];...
       ["Y:\datasets", "/mynetwork2/datasets","S:\datasets"]}

    • 也可以将 "AlternateFileSystemRoots" 指定为字符向量元胞数组。

      {{'Z:\datasets','/mynetwork/datasets'};...
       {'Y:\datasets', '/mynetwork2/datasets','S:\datasets'}}

"AlternateFileSystemRoots" 的值必须满足以下条件:

  • 包含一行或多行,每一行指定一组等效的根路径。

  • 每一行指定多个根路径,每个根路径必须至少包含两个字符。

  • 根路径是唯一的,并且不是彼此的子文件夹。

  • 包含至少一个指向文件位置的根路径条目。

有关详细信息,请参阅Set Up Datastore for Processing on Different Machines or Clusters

示例: ["Z:\datasets","/mynetwork/datasets"]

数据类型: string | cell

属性

全部展开

ParquetDatastore 属性描述数据存储对象中文件的格式,并控制如何从数据存储中读取数据。在创建数据存储对象时,您可以使用名称-值对组参量指定 ParquetDatastore 属性的值,但 Files 属性除外。要在创建对象后查看或修改属性,请使用圆点表示法。

包含在数据存储中的文件,解析为字符向量元胞数组或字符串数组,其中每个字符向量或字符串表示文件的一个完整路径。location 参量定义这些文件。

在元胞数组中指定的第一个文件确定数据存储中的所有文件的变量名称和格式信息。

示例: {"C:\dir\data\file1.ext";"C:\dir\data\file2.ext"}

数据类型: cell | string

此 属性 为只读。

用于构造数据存储的文件夹,以字符向量元胞数组形式返回。该元胞数组定向为一个列向量。每个字符向量均为指向一个包含数据文件的文件夹的路径。创建数据存储时,parquetDatastoredatastore 函数中的 location 参量用来定义 Folders

当您修改 ParquetDatastore 对象的 Files 属性时,将重置 Folders 属性。

数据类型: cell

用于选择要导入的行的过滤器,指定为 matlab.io.RowFilter 对象。matlab.io.RowFilter 对象指定每行要包含在输出表或时间表中必须满足的条件。如果不指定 RowFilter,则 parquetDatastore 将从输入 Parquet 文件中导入所有行。

每个读取步骤要读取的数据量,指定为以下值之一:

  • "rowgroup" - 每个读取步骤读取 Parquet 数据的行组中的行数。要获取每个行组中的行数,请参阅 ParquetInfo 对象的 RowGroupHeights 属性。

  • "file" - 每个读取步骤读取一个文件中的所有数据。

  • 正整数 - 每个读取步骤读取指定的行数。

当您将 ReadSize 从正整数更改为 "file""rowgroup"(或者从 "file""rowgroup" 更改为正整数)时,MATLAB 会将数据存储重置为未读取状态,即未从中读取任何数据的状态。

在并行处理工作流 (Parallel Computing Toolbox) 中,数据是从每个并行工作进程中分步读取的。在串行工作流中,数据是从输入 location 中分步读取的。

数据类型: string | char | double

自 R2023b 起

用于并行处理的分区单位,指定为下表中的值之一。

在并行处理工作流 (Parallel Computing Toolbox) 中,PartitionMethod 用于确定发送到每个并行工作进程的数据量。发送到每个工作进程的数据量是分区单位的总数除以并行工作进程的数量近似计算得到的。在串行工作流中,PartitionMethod 名称-值参量将被忽略。

描述

"auto"

parquetDatastore 根据 ReadSize 名称-值参量选择分区单位,以平衡并行工作进程之间的工作负载。

"file"

分区基于文件总数。
"bytes"分区基于 BlockSize 属性指定的字节数。
"rowgroup"分区基于行组的总数。

处理的粒度和速度取决于 PartitionMethodReadSize 值的组合。PartitionMethod 确定向每个并行工作进程发送多少数据,而 ReadSize 确定每个读取步骤读取多少数据。下表显示支持的 PartitionMethodReadSize 组合及其相对粒度和分区时间。

粒度、分区时间PartitionMethodReadSize
高粒度、长分区时间rowgrouprowgroup
rowgroup正整数
中等粒度、中等分区时间bytesrowgroup
低粒度、短分区时间filefile

自 R2023b 起

每个分区的字节数,指定为正整数。如果 PartitionMethod"bytes",请指定此参量。默认情况下,BlockSize 的值为 128000000 字节 (128 MB)。

示例: BlockSize=1000000

数据存储中变量的名称,指定为字符向量、字符向量元胞数组、字符串标量或字符串数组。按变量显示在文件中的顺序指定变量名称。如果不指定变量名称,数据存储会从第一个文件的第一个非标头行中检测它们。您可以用字符向量或字符串标量指定 VariableNames,但是,数据存储会转换属性值并将其存储为字符向量元胞数组。修改 VariableNames 属性时,新变量名称的数量必须与原始变量名称的数量匹配。

要支持无效的 MATLAB 标识符作为变量名称,例如包含空白和非 ASCII 字符的变量名称,请将 VariableNamingRule 参数的值设置为 "preserve"

如果 ReadVariableNamesfalse,则 VariableNames 默认为 ["Var1","Var2", ...]

示例: ["Time","Date","Quantity"]

数据类型: char | cell | string

要从文件中读取的变量,指定为字符向量元胞数组或字符串数组,其中每个字符向量或字符串包含一个变量的名称。可按任何顺序指定变量名称。

要支持无效的 MATLAB 标识符作为变量名称,例如包含空白和非 ASCII 字符的变量名称,请将 VariableNamingRule 参数的值设置为 "preserve"

示例: ["Var3","Var7","Var4"]

数据类型: cell | string

行时间变量的名称,以名称-值参量形式指定,其中包含 "RowTimes" 和变量名称(如 "Date")或变量索引(如 3)。

RowTimes 是与时间表相关的参数。时间表的每行都与一个时间相关联,该时间是在时间表的时间向量中捕获的。RowTimes 中指定的变量必须包含 datetimeduration 向量。

如果 "OutputType" 的值是 "timetable",但您没有指定 "RowTimes",则 ParquetDatastore 使用第一个 datetimeduration 变量作为时间表的行时间。

此 属性 为只读。

支持写入的格式,以字符串组成的行向量形式返回。此属性指定使用 writeall 从数据存储写入输出文件时可能的输出格式。

此 属性 为只读。

默认输出格式,以字符串标量形式返回。此属性指定使用 writeall 从数据存储写入输出文件时的默认格式。

数据类型: string

对象函数

hasdata确定是否有数据可读取
numpartitions数据存储分区数
partition划分数据存储
preview预览数据存储中的数据子集
read读取数据存储中的数据
readall读取数据存储中的所有数据
writeall将数据存储写入文件
reset将数据存储重置为初始状态
transform变换数据存储
combine合并来自多个数据存储的数据
isPartitionable确定数据存储是否可分区
isSubsettableDetermine whether datastore is subsettable
isShuffleable确定数据存储是否可乱序

示例

全部折叠

使用 FileSet 对象或文件路径创建一个 parquetDatastore 对象。

创建包含文件 outages.parquetFileSet 对象。创建一个 parquetDatastore 对象。

fs = matlab.io.datastore.FileSet("outages.parquet");
pds = parquetDatastore(fs)
pds = 
  ParquetDatastore with properties:

                       Files: {
                              '...\matlab\toolbox\matlab\demos\outages.parquet'
                              }
                     Folders: {
                              '...\matlab\toolbox\matlab\demos'
                              }
               VariableNames: {1x6 cell}
       SelectedVariableNames: {1x6 cell}
                    ReadSize: 'rowgroup'
                  OutputType: 'table'
                    RowTimes: []
    AlternateFileSystemRoots: {}
      SupportedOutputFormats: ["txt"    "csv"    "xlsx"    "xls"    ...    ]
         DefaultOutputFormat: "parquet"
          VariableNamingRule: 'modify'

您也可以使用文件路径来创建您的 parquetDatastore 对象。

pds = parquetDatastore("outages.parquet");

为示例 Parquet 文件创建一个数据存储,然后从包含不同 ReadSize 值的文件中读取数据。

outages.parquet 创建一个数据存储,将 ReadSize 设置为 10 行,然后从数据存储读取数据。ReadSize 的值决定每次调用 read 函数时从数据存储中读取多少行数据。

pds = parquetDatastore("outages.parquet","ReadSize",10);
read(pds)
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"

ReadSize 属性值设置为 "file",并从数据存储中读取。每次调用 read 函数都会从数据存储中读取所有数据。

pds.ReadSize ="file"; 
data = read(pds)
data=1468×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"
    "SouthEast"    05-Sep-2004 17:48:00    73.387         36073    05-Sep-2004 20:46:00    "equipment fault"
    "West"         21-May-2004 21:45:00    159.99           NaN    22-May-2004 04:23:00    "equipment fault"
    "SouthEast"    01-Sep-2002 18:22:00    95.917         36759    01-Sep-2002 19:12:00    "severe storm"   
    "SouthEast"    27-Sep-2003 07:32:00       NaN    3.5517e+05    04-Oct-2003 07:02:00    "severe storm"   
    "West"         12-Nov-2003 06:12:00    254.09    9.2429e+05    17-Nov-2003 02:04:00    "winter storm"   
    "NorthEast"    18-Sep-2004 05:54:00         0             0                     NaT    "equipment fault"
      ⋮

您还可以将 ReadSize 属性的值设置为 "rowgroup"。有关详细信息,请参阅 ParquetDatastore 对象参考页中的 ReadSize 属性。

使用 OutputTypeRowTimes 名称-值对组来使 ParquetDatastore 返回时间表,而不是表。

airlinesmall.parquet 创建一个数据存储。将 "OutputType" 名称-值参量指定为 "timetable"。

pds = parquetDatastore("airlinesmall.parquet","OutputType","timetable");
preview(pds)
ans=12500×26 timetable
       Date        DayOfWeek          DepTime                CRSDepTime               ArrTime                CRSArrTime         UniqueCarrier    FlightNum    TailNum    ActualElapsedTime    CRSElapsedTime    AirTime    ArrDelay    DepDelay    Origin    Dest     Distance    TaxiIn     TaxiOut    Cancelled    CancellationCode    Diverted    CarrierDelay    WeatherDelay    NASDelay    SecurityDelay    LateAircraftDelay
    ___________    _________    ____________________    ____________________    ____________________    ____________________    _____________    _________    _______    _________________    ______________    _______    ________    ________    ______    _____    ________    _______    _______    _________    ________________    ________    ____________    ____________    ________    _____________    _________________

    21-Oct-1987        3        21-Oct-1987 06:42:00    21-Oct-1987 06:30:00    21-Oct-1987 07:35:00    21-Oct-1987 07:27:00        "PS"           1503        "NA"           3180 sec           3420 sec       NaN sec     480 sec     720 sec    "LAX"     "SJC"       308      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    26-Oct-1987        1        26-Oct-1987 10:21:00    26-Oct-1987 10:20:00    26-Oct-1987 11:24:00    26-Oct-1987 11:16:00        "PS"           1550        "NA"           3780 sec           3360 sec       NaN sec     480 sec      60 sec    "SJC"     "BUR"       296      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    23-Oct-1987        5        23-Oct-1987 20:55:00    23-Oct-1987 20:35:00    23-Oct-1987 22:18:00    23-Oct-1987 21:57:00        "PS"           1589        "NA"           4980 sec           4920 sec       NaN sec    1260 sec    1200 sec    "SAN"     "SMF"       480      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    23-Oct-1987        5        23-Oct-1987 13:32:00    23-Oct-1987 13:20:00    23-Oct-1987 14:31:00    23-Oct-1987 14:18:00        "PS"           1655        "NA"           3540 sec           3480 sec       NaN sec     780 sec     720 sec    "BUR"     "SJC"       296      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    22-Oct-1987        4        22-Oct-1987 06:29:00    22-Oct-1987 06:30:00    22-Oct-1987 07:46:00    22-Oct-1987 07:42:00        "PS"           1702        "NA"           4620 sec           4320 sec       NaN sec     240 sec     -60 sec    "SMF"     "LAX"       373      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    28-Oct-1987        3        28-Oct-1987 14:46:00    28-Oct-1987 13:43:00    28-Oct-1987 15:47:00    28-Oct-1987 14:48:00        "PS"           1729        "NA"           3660 sec           3900 sec       NaN sec    3540 sec    3780 sec    "LAX"     "SJC"       308      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    08-Oct-1987        4        08-Oct-1987 09:28:00    08-Oct-1987 09:30:00    08-Oct-1987 10:52:00    08-Oct-1987 10:49:00        "PS"           1763        "NA"           5040 sec           4740 sec       NaN sec     180 sec    -120 sec    "SAN"     "SFO"       447      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    10-Oct-1987        6        10-Oct-1987 08:59:00    10-Oct-1987 09:00:00    10-Oct-1987 11:34:00    10-Oct-1987 11:23:00        "PS"           1800        "NA"           9300 sec           8580 sec       NaN sec     660 sec     -60 sec    "SEA"     "LAX"       954      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    20-Oct-1987        2        20-Oct-1987 18:33:00    20-Oct-1987 18:30:00    20-Oct-1987 19:29:00    20-Oct-1987 19:26:00        "PS"           1831        "NA"           3360 sec           3360 sec       NaN sec     180 sec     180 sec    "LAX"     "SJC"       308      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    15-Oct-1987        4        15-Oct-1987 10:41:00    15-Oct-1987 10:40:00    15-Oct-1987 11:57:00    15-Oct-1987 11:55:00        "PS"           1864        "NA"           4560 sec           4500 sec       NaN sec     120 sec      60 sec    "SFO"     "LAS"       414      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    15-Oct-1987        4        15-Oct-1987 16:08:00    15-Oct-1987 15:53:00    15-Oct-1987 16:56:00    15-Oct-1987 16:40:00        "PS"           1907        "NA"           2880 sec           2820 sec       NaN sec     960 sec     900 sec    "LAX"     "FAT"       209      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    21-Oct-1987        3        21-Oct-1987 09:49:00    21-Oct-1987 09:40:00    21-Oct-1987 10:55:00    21-Oct-1987 10:52:00        "PS"           1939        "NA"           3960 sec           4320 sec       NaN sec     180 sec     540 sec    "LGB"     "SFO"       354      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    22-Oct-1987        4        22-Oct-1987 19:02:00    22-Oct-1987 18:47:00    22-Oct-1987 20:30:00    22-Oct-1987 19:51:00        "PS"           1973        "NA"           5280 sec           3840 sec       NaN sec    2340 sec     900 sec    "LAX"     "OAK"       337      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    16-Oct-1987        5        16-Oct-1987 19:10:00    16-Oct-1987 18:38:00    16-Oct-1987 20:52:00    16-Oct-1987 19:55:00        "TW"             19        "NA"           9720 sec           8220 sec       NaN sec    3420 sec    1920 sec    "STL"     "DEN"       770      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    02-Oct-1987        5        02-Oct-1987 11:30:00    02-Oct-1987 11:33:00    02-Oct-1987 12:37:00    02-Oct-1987 12:37:00        "TW"             59        "NA"          11220 sec          11040 sec       NaN sec       0 sec    -180 sec    "STL"     "PHX"      1262      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    30-Oct-1987        5        30-Oct-1987 14:00:00    30-Oct-1987 14:00:00    30-Oct-1987 19:20:00    30-Oct-1987 19:34:00        "TW"            102        "NA"          12000 sec          12840 sec       NaN sec    -840 sec       0 sec    "SNA"     "STL"      1570      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
      ⋮

如果您没有同时指定 "RowTimes",parquetDatastore 将使用第一个日期时间或持续时间变量作为行时间。在本例中,将 Date 变量用于行时间。

指定 "RowTimes" 选项以使用到达时间 (ArrTime) 作为行时间,而不是使用航班日期。

pds = parquetDatastore("airlinesmall.parquet","OutputType","timetable","RowTimes","ArrTime");
preview(pds)
ans=12500×26 timetable
          ArrTime              Date        DayOfWeek          DepTime                CRSDepTime              CRSArrTime         UniqueCarrier    FlightNum    TailNum    ActualElapsedTime    CRSElapsedTime    AirTime    ArrDelay    DepDelay    Origin    Dest     Distance    TaxiIn     TaxiOut    Cancelled    CancellationCode    Diverted    CarrierDelay    WeatherDelay    NASDelay    SecurityDelay    LateAircraftDelay
    ____________________    ___________    _________    ____________________    ____________________    ____________________    _____________    _________    _______    _________________    ______________    _______    ________    ________    ______    _____    ________    _______    _______    _________    ________________    ________    ____________    ____________    ________    _____________    _________________

    21-Oct-1987 07:35:00    21-Oct-1987        3        21-Oct-1987 06:42:00    21-Oct-1987 06:30:00    21-Oct-1987 07:27:00        "PS"           1503        "NA"           3180 sec           3420 sec       NaN sec     480 sec     720 sec    "LAX"     "SJC"       308      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    26-Oct-1987 11:24:00    26-Oct-1987        1        26-Oct-1987 10:21:00    26-Oct-1987 10:20:00    26-Oct-1987 11:16:00        "PS"           1550        "NA"           3780 sec           3360 sec       NaN sec     480 sec      60 sec    "SJC"     "BUR"       296      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    23-Oct-1987 22:18:00    23-Oct-1987        5        23-Oct-1987 20:55:00    23-Oct-1987 20:35:00    23-Oct-1987 21:57:00        "PS"           1589        "NA"           4980 sec           4920 sec       NaN sec    1260 sec    1200 sec    "SAN"     "SMF"       480      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    23-Oct-1987 14:31:00    23-Oct-1987        5        23-Oct-1987 13:32:00    23-Oct-1987 13:20:00    23-Oct-1987 14:18:00        "PS"           1655        "NA"           3540 sec           3480 sec       NaN sec     780 sec     720 sec    "BUR"     "SJC"       296      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    22-Oct-1987 07:46:00    22-Oct-1987        4        22-Oct-1987 06:29:00    22-Oct-1987 06:30:00    22-Oct-1987 07:42:00        "PS"           1702        "NA"           4620 sec           4320 sec       NaN sec     240 sec     -60 sec    "SMF"     "LAX"       373      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    28-Oct-1987 15:47:00    28-Oct-1987        3        28-Oct-1987 14:46:00    28-Oct-1987 13:43:00    28-Oct-1987 14:48:00        "PS"           1729        "NA"           3660 sec           3900 sec       NaN sec    3540 sec    3780 sec    "LAX"     "SJC"       308      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    08-Oct-1987 10:52:00    08-Oct-1987        4        08-Oct-1987 09:28:00    08-Oct-1987 09:30:00    08-Oct-1987 10:49:00        "PS"           1763        "NA"           5040 sec           4740 sec       NaN sec     180 sec    -120 sec    "SAN"     "SFO"       447      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    10-Oct-1987 11:34:00    10-Oct-1987        6        10-Oct-1987 08:59:00    10-Oct-1987 09:00:00    10-Oct-1987 11:23:00        "PS"           1800        "NA"           9300 sec           8580 sec       NaN sec     660 sec     -60 sec    "SEA"     "LAX"       954      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    20-Oct-1987 19:29:00    20-Oct-1987        2        20-Oct-1987 18:33:00    20-Oct-1987 18:30:00    20-Oct-1987 19:26:00        "PS"           1831        "NA"           3360 sec           3360 sec       NaN sec     180 sec     180 sec    "LAX"     "SJC"       308      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    15-Oct-1987 11:57:00    15-Oct-1987        4        15-Oct-1987 10:41:00    15-Oct-1987 10:40:00    15-Oct-1987 11:55:00        "PS"           1864        "NA"           4560 sec           4500 sec       NaN sec     120 sec      60 sec    "SFO"     "LAS"       414      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    15-Oct-1987 16:56:00    15-Oct-1987        4        15-Oct-1987 16:08:00    15-Oct-1987 15:53:00    15-Oct-1987 16:40:00        "PS"           1907        "NA"           2880 sec           2820 sec       NaN sec     960 sec     900 sec    "LAX"     "FAT"       209      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    21-Oct-1987 10:55:00    21-Oct-1987        3        21-Oct-1987 09:49:00    21-Oct-1987 09:40:00    21-Oct-1987 10:52:00        "PS"           1939        "NA"           3960 sec           4320 sec       NaN sec     180 sec     540 sec    "LGB"     "SFO"       354      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    22-Oct-1987 20:30:00    22-Oct-1987        4        22-Oct-1987 19:02:00    22-Oct-1987 18:47:00    22-Oct-1987 19:51:00        "PS"           1973        "NA"           5280 sec           3840 sec       NaN sec    2340 sec     900 sec    "LAX"     "OAK"       337      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    16-Oct-1987 20:52:00    16-Oct-1987        5        16-Oct-1987 19:10:00    16-Oct-1987 18:38:00    16-Oct-1987 19:55:00        "TW"             19        "NA"           9720 sec           8220 sec       NaN sec    3420 sec    1920 sec    "STL"     "DEN"       770      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    02-Oct-1987 12:37:00    02-Oct-1987        5        02-Oct-1987 11:30:00    02-Oct-1987 11:33:00    02-Oct-1987 12:37:00        "TW"             59        "NA"          11220 sec          11040 sec       NaN sec       0 sec    -180 sec    "STL"     "PHX"      1262      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
    30-Oct-1987 19:20:00    30-Oct-1987        5        30-Oct-1987 14:00:00    30-Oct-1987 14:00:00    30-Oct-1987 19:34:00        "TW"            102        "NA"          12000 sec          12840 sec       NaN sec    -840 sec       0 sec    "SNA"     "STL"      1570      NaN sec    NaN sec      false            "NA"           false        NaN sec         NaN sec       NaN sec        NaN sec            NaN sec     
      ⋮

使用 RowFilter 属性有条件地从数据集中选择行。

使用 outages.parquet 文件创建一个 Parquet 数据存储。查看该数据存储的前 8 行。

pds = parquetDatastore("outages.parquet");
preview(pds)
ans=8×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"

创建一个行过滤器,用于标识 Region"NorthEast"Cause"winter storm" 的行。然后,将数据存储的 RowFilter 属性设置为该过滤器。预览数据存储,注意数据存储只包含符合过滤条件的行。

rf = rowfilter(pds);
filter = rf.Region == "NorthEast" & rf.Cause == "winter storm";
pds.RowFilter = filter;
preview(pds)
ans=8×6 table
      Region            OutageTime          Loss     Customers       RestorationTime           Cause     
    ___________    ____________________    ______    __________    ____________________    ______________

    "NorthEast"    13-Nov-2004 10:42:00       NaN    1.4227e+05    19-Nov-2004 02:31:00    "winter storm"
    "NorthEast"    26-Dec-2004 22:18:00    255.45    1.0444e+05    27-Dec-2004 14:11:00    "winter storm"
    "NorthEast"    17-Dec-2003 15:11:00       NaN         66692    19-Dec-2003 07:22:00    "winter storm"
    "NorthEast"    28-Jan-2005 18:20:00    401.39         89683    29-Jan-2005 02:36:00    "winter storm"
    "NorthEast"    04-Feb-2005 00:53:00    32.061         46182    09-Feb-2005 02:42:00    "winter storm"
    "NorthEast"    16-Nov-2006 10:04:00    147.25    1.2571e+05    17-Nov-2006 10:55:00    "winter storm"
    "NorthEast"    03-Feb-2007 02:19:00    293.83    1.1628e+05    04-Feb-2007 21:24:00    "winter storm"
    "NorthEast"    18-Feb-2008 05:24:00    353.29         64687    20-Feb-2008 08:56:00    "winter storm"

局限性

  • 如果使用 parquetreadparquetDatastore 来读取文件,则结果可能与原始表的格式或内容不完全相同。有关详细信息,请参阅Apache Parquet Data Type Mappings

  • parquetread 用双精度值替换 NULL 值不同,parquetDatastore0 替换 NULL 整数值,用 false 替换 NULL 布尔值。这种替换会导致有损变换。

扩展功能

版本历史记录

在 R2019a 中推出

全部展开