Хранилище данных - это объект для чтения одного файла или коллекции файлов или данных. Хранилище данных действует как хранилище данных с одинаковой структурой и форматированием. Например, каждый файл в хранилище данных должен содержать данные одного типа (например, числовые или текстовые), отображаемые в одном порядке и разделенные одним и тем же разделителем.

Хранилище данных полезно в следующих случаях:
Возможно, каждый файл в коллекции слишком велик для размещения в памяти. Хранилище данных позволяет считывать и анализировать данные из каждого файла небольшими частями, которые действительно помещаются в память.
Файлы в коллекции имеют произвольные имена. Хранилище данных выступает в качестве репозитория для файлов в одной или нескольких папках. Файлы не обязательно должны иметь последовательные имена.
Хранилище данных можно создать на основе типа данных или приложения. Различные типы хранилищ данных содержат свойства, относящиеся к типу данных, которые они поддерживают. Например, список хранилищ данных MATLAB ® см. в следующей таблице. Полный список хранилищ данных см. в разделе Выбор хранилища данных для формата файла или приложения.
| Тип файла или данных | Тип хранилища данных |
|---|---|
| Текстовые файлы, содержащие данные, ориентированные на столбцы, включая CSV-файлы. | TabularTextDatastore |
Файлы изображений, включая форматы, поддерживаемые imread такие как JPEG и PNG. | ImageDatastore |
Файлы электронных таблиц с поддерживаемым форматом Excel ®, например .xlsx. | SpreadsheetDatastore |
Данные пары ключ-значение, которые являются входами или выходами mapreduce. | KeyValueDatastore |
| Файлы паркета, содержащие данные, ориентированные на столбцы. | ParquetDatastore |
| Пользовательские форматы файлов. Требуется предоставленная функция для чтения данных. | FileDatastore |
Хранилище данных для контрольных точек tall массивы. | TallDatastore |
Используйте tabularTextDatastore создание хранилища данных из файла образца airlinesmall.csv, который содержит информацию о вылете и прибытии отдельных рейсов авиакомпании. Результатом является TabularTextDatastore объект.
ds = tabularTextDatastore('airlinesmall.csv')ds =
TabularTextDatastore with properties:
Files: {
' ...\matlab\toolbox\matlab\demos\airlinesmall.csv'
}
Folders: {
' ...\matlab\toolbox\matlab\demos'
}
FileEncoding: 'UTF-8'
AlternateFileSystemRoots: {}
PreserveVariableNames: false
ReadVariableNames: true
VariableNames: {'Year', 'Month', 'DayofMonth' ... and 26 more}
DatetimeLocale: en_US
Text Format Properties:
NumHeaderLines: 0
Delimiter: ','
RowDelimiter: '\r\n'
TreatAsMissing: ''
MissingValue: NaN
Advanced Text Format Properties:
TextscanFormats: {'%f', '%f', '%f' ... and 26 more}
TextType: 'char'
ExponentCharacters: 'eEdD'
CommentStyle: ''
Whitespace: ' \b\t'
MultipleDelimitersAsOne: false
Properties that control the table returned by preview, read, readall:
SelectedVariableNames: {'Year', 'Month', 'DayofMonth' ... and 26 more}
SelectedFormats: {'%f', '%f', '%f' ... and 26 more}
ReadSize: 20000 rows
OutputType: 'table'
RowTimes: []
Write-specific Properties:
SupportedOutputFormats: ["txt" "csv" "xlsx" "xls" "parquet" "parq"]
DefaultOutputFormat: "txt"После создания хранилища данных можно выполнить предварительный просмотр данных без необходимости их загрузки в память. Можно указать переменные (столбцы), представляющие интерес, с помощью SelectedVariableNames для предварительного просмотра или чтения только этих переменных.

ds.SelectedVariableNames = {'DepTime','DepDelay'};
preview(ds)ans =
8×2 table
DepTime DepDelay
_______ ________
642 12
1021 1
2055 20
1332 12
629 -1
1446 63
928 -2
859 -1 В данных можно указать значения, представляющие отсутствующие значения. В airlinesmall.csv, отсутствующие значения представлены NA.
ds.TreatAsMissing = 'NA';Если все данные в хранилище данных для интересующих переменных помещаются в память, их можно прочитать с помощью readall функция.
T = readall(ds);
В противном случае прочитайте данные в небольших подмножествах, которые действительно помещаются в память, используя read функция. По умолчанию read функция считывает из TabularTextDatastore 20 000 рядов за раз. Однако это значение можно изменить, назначив новое значение ReadSize собственность.
ds.ReadSize = 15000;
Сбросьте хранилище данных в исходное состояние перед повторным чтением, используя reset функция. Путем вызова read функция в пределах while можно выполнить промежуточные вычисления для каждого подмножества данных, а затем агрегировать промежуточные результаты в конце. Этот код вычисляет максимальное значение DepDelay переменная.
reset(ds) X = []; while hasdata(ds) T = read(ds); X(end+1) = max(T.DepDelay); end maxDelay = max(X)
maxDelay =
1438Если данные в каждом отдельном файле помещаются в память, можно указать, что каждый вызов read следует прочитать один полный файл, а не определенное количество строк.
reset(ds) ds.ReadSize = 'file'; X = []; while hasdata(ds) T = read(ds); X(end+1) = max(T.DepDelay); end maxDelay = max(X);
Помимо чтения подмножеств данных в хранилище данных, можно применить функции сопоставления и сокращения к хранилищу данных с помощью mapreduce или создайте высокий массив с помощью tall. Дополнительные сведения см. в разделе Начало работы с массивами MapReduce и Tall для данных, не имеющих памяти.
fileDatastore | imageDatastore | KeyValueDatastore | mapreduce | spreadsheetDatastore | tabularTextDatastore | tall