Как загрузить только одну часть набора табличных данных AzureML (связана с Azure хранилищем BLOB-объектов) - PullRequest
1 голос
/ 01 апреля 2020

В моем рабочем пространстве AzureML определен DataSet, связанный с CSV-файлом Azure Blob Storage объемом 1,6 ГБ. Этот файл содержит информацию о временных сериях около 10000 устройств. Таким образом, я мог бы также создать 10000 файлов меньшего размера (поскольку я использую ADF для конвейера передачи).

Теперь у меня вопрос: можно ли загрузить часть набора данных AzureML в мой блокнот python или сценарий вместо загрузки всего файла?
Единственный код, который у меня теперь загружает полный файл:

dataset = Dataset.get_by_name(workspace, name='devicetelemetry')
df = dataset.to_pandas_dataframe()

Единственная концепция разделов, найденная мной в отношении наборов данных AzureML, была связана с временными рядами и разделение меток времени и дат. Тем не менее, здесь я хотел бы разбить разделы на устройства, поэтому я могу очень легко просто загрузить всю телеметрию определенного устройства c.

Есть ли какие-либо ссылки на документы или какие-либо предложения? (Я пока не могу найти)

Спасибо уже

Ответы [ 2 ]

2 голосов
/ 15 апреля 2020

Табличные наборы данных поддерживают только фильтры временных рядов сегодня. Мы работаем над включением общей фильтрации c для табличных наборов данных.

Между тем, другой вариант - разделить файлы по идентификатору устройства и использовать FileDataset. Использование FileDataset позволит вам смонтировать весь набор данных при вычислении. Затем вы можете прочитать файлы, указанные c на одном / нескольких устройствах. Недостатком является то, что вам нужно использовать pandas непосредственно для чтения файлов.

1 голос
/ 01 апреля 2020

Вы правы, есть .time_*() методы фильтрации, доступные с TabularDataset.

Я не знаю, как это сделать, как вы предлагаете (но я согласен, что это было бы полезно характерная черта). Чтобы получить разбиение для каждого устройства, я бы рекомендовал структурировать ваш контейнер следующим образом:

- device1
    - 2020
        - 2020-03-31.csv
        - 2020-04-01.csv
- device2
   - 2020
        - 2020-03-31.csv
        - 2020-04-01.csv

Таким образом, вы можете определить полный набор данных, но также наборы данных для каждого устройства, передав папку Устройство для DataPath

# all up dataset
ds_all = Dataset.Tabular.from_delimited_files(
    path=DataPath(datastore, '*')
)
# device 1 dataset
ds_d1 = Dataset.Tabular.from_delimited_files(
    path=DataPath(datastore, 'device1/*')
)

CAVEAT

dataprep SDK оптимизировано для больших двоичных объектов размером около 200 МБ. Таким образом, вы можете работать со многими небольшими файлами, но иногда это может быть медленнее, чем ожидалось, особенно с учетом затрат на перечисление всех больших двоичных объектов в контейнере.

...