Кедро версию наборов данных можно смешивать с дополнительными и разделенными наборами наборах для выполнения анализа некоторых временных времен на наше набонное набору данных со временем. KEDRO – это очень расширяемая и компонентная структура, что позволяет нам создавать решения от отдельных компонентов, которые он обеспечивает. Эта статья является отличным примером того, как вы можете объединить эти компоненты уникальными способами добиться некоторых мощных результатов с очень мало работы.
Как наш набор данных изменяется со временем ??
Это был вопрос, представленный мне на работе. У нас были растые участки произведены как выпуск нашего трубопровода, и пользователь хотел способность сравнивать результаты с течением времени. К счастью, это было предложено в начале проекта, поэтому мы смогли активно установить версию для правильных наборов данных.
Чтобы включить это все, что нам нужно было сделать сейчас, было добавить Версии: правда
И мы сможем сравнивать результаты с течением времени. Да, Kedro делает это так просто настроить.
🤷♀️. Что такое Kedro (части)
Уокер Уокер · 24-20 · 3 мин прочитан
Установить проект
Настройте новый проект так же, как обычно. Примечание Мне нравится использовать PIPX для глобальных пакетов CLI. Вы можете выбрать конкретную версию KEDRO или выбирать последние, одновременно все глобально устанавливающие Kedro и запустите Kedro New, чисто зависят от в последний раз, когда вы решили обновить Kedro.
pip install pipx pipx run kedro new cd versioned-partitioned-kedro-example conda create -n versioned-partitioned-kedro-example python=3.8 -y conda activate versioned-partitioned-kedro-example pip install kedro kedro install git init git add . git commit -m "init project from pipx run kedro new"
Я позвонил в мой проект, версимый-распределенный-кедро-пример. Вы можете назвать ваш проект, все, что вам нравится. Если вы попытаетесь использовать некоторые специальные символы, где они не принадлежат, KEDRO поймает вас. Под капотом KEDRO использует Библиотека под названием печенье
⚠️ Пожалуйста, не пропустите использование виртуальной среды. Вы можете использовать в зависимости от того, какой инструмент виртуальной среды вы предпочитаете, но, пожалуйста, не пропускайте. Разрушение бегущего проекта для обучения не весело.
Обновлять зависимости
Я выскочил свои зависимости, добавил Kedro [Pandas]
и Find-Kedro
Отказ Так как это дополнительные пакеты, наш пример потребуется.
aiohttp black==21.5b1 find-kedro flake8>=3.7.9, <4.0 ipython isort~=5.0 jupyter_client>=5.1, <7.0 jupyterlab~=3.0 jupyter~=1.0 kedro-telemetry~=0.1.0 kedro==0.17.4 kedro[pandas] nbstripout~=0.4 pytest-cov~=2.5 pytest-mock>=1.7.1, <2.0 pytest~=6.2 requests wheel>=0.35, <0.37
Примечание Я создал Find-Kedro
И мне нравится использовать его, чтобы создать свой объект трубопровода. Подумайте, как Pteest автоматически поднимает все имени Тест
, Find-Kedro
делает то же самое для кедро. Это все поднимает узел
или трубопровод
Во имя и создает трубопроводы из этого.
Установите новые зависимости
После добавления дополнительных зависимостей к Требования. В
Мы можем сказать Kedro установить все и компилировать зависимости. За кулисами --build-reqs
использует библиотеку под названием Компиляция PIP
создать требования .txt
Файл с жесткими закрепленными зависимостями, который идеально подходит для создания воспроизводимых проектов. Вы и ваши будущие коллеги могут не поблагодарить вас за это, но они уверены, что, как к чему не будет проклинать ваше имя, когда они не могут Получите проект для бега.
kedro install --build-reqs git add . git commit -m "added additional dependencies"
Создать узел
Для этого примера нам нужен узел, чтобы сделать много. Этот узел будет пройти cars.csv
от URL до Паркет
файл. Я собираюсь использовать лямбда, чтобы построить мою функцию личности встроенной.
# pipelines/cars_nodes.py from kedro.pipeline import node nodes = [] nodes.append( node( func=lambda x:x, inputs='raw_cars', outputs='int_cars', name='create_int_cars', ) )
🗒️. Примечание Find-Kedro 'автоматически заберет эти узлы для нас после того, как мы создали наши
Pipely_registry.py`.
башмак Git Add. Git Commit -M “Добавить Create_int_cars Узел”
Реализуйте Find-Kedro
Далее нам нужно рассказать Kedro, где наши узлы. Это где Find-Kedro
приходит в. Как только мы указываем на каталог, где наши модули узлов/трубопроводов он создает словарь трубопроводов для нас автоматически. Он даже отделяет каждый модуль в трубопровод и прошивает их все в один конвейер по умолчанию.
` питон
«« Проектные трубопроводы ».« »От набора набора импорта Dict из пути импорта PATHLIB
от Kedro.Pipine Import Properial
От Find_kedro Import Find_kedro
def registre_pipelines () -> DICK [ул, трубопровод]: «« Зарегистрируйте трубопроводы проекта.
Returns: A mapping from a pipeline name to a "Pipeline "object. """ pipeline_dir = Path(__file__).parent / 'pipelines' return find_kedro(directory= pipeline_dir)
`
🗒️. Это очень похоже на по умолчанию `Pipeline_registry’except в последние две строки.
git add . git commit -m "implement find-kedro"
Создать базовый каталог
Как только у нас есть настройка трубопровода, KEDRO CLI может автоматически заполнить отсутствующие записи каталога с помощью MemoryDataset
. Таким образом, использование CLI помогает постоянно лежать в каталоге и убедитесь, что мы не заканчиваем опечатку в нашем названии набора данных.
kedro catalog create --pipeline cars_nodes
KEDRO выгнал следующий файл каталога на База/каталог/cars_nodes.yml
Для нас, чтобы начать с.
raw_cars: type: MemoryDataSet int_cars: type: MemoryDataSet
🔥 Используйте KEDRO CLI для заполнения любых пропущенных наборов данных из автоматически каталога.
сделать версию набора данных
Кедро лебедка MemoryDataset
для нас. Мы преобразуем их в соответствующий тип набора данных и включите версию для нашего int
Слой, который является первой точкой, которую мы сохраняем в нашей среде.
raw_cars: type: pandas.CSVDataSet filepath: https://waylonwalker.com/cars.csv int_cars: type: pandas.ParquetDataSet filepath: data/int_cars.parquet versioned: true
Совершить ваши изменения в каталог.
git add . git commit -m "create catalog"
запускать трубопровод
После того, как у нас есть узлы и настройки каталога, мы можем запускать трубопровод несколько раз, чтобы получить некоторые версительные данные. Каждый раз, когда мы бежим, он сохранит новую версию внутри int_cars.parque
каталог.
kedro run kedro run kedro run kedro run kedro run
🗒️ Мы поместим наши данные в каталог данных. По умолчанию этот каталог включен в .gitignore
И не будет забрать Git.
Осмотрите данные
Перечисление файлов в data/int_cars.parque
Показывает, что у меня сейчас есть пять различных наборов данных. Я могу загрузить старые, но по умолчанию Kedro загрузит последний.
ls data/int_cars.parquet 2021-07-05T15.24.53.164Z 2021-07-05T15.29.56.144Z 2021-07-05T15.30.23.101Z 2021-07-05T15.30.26.555Z 2021-07-05T15.31.12.688Z
🗒️ Kedro Устанавливает версию в Timestamp, что сеанс начинается. Все наборы данных, созданные в одном и том же прогоне, будут иметь ту же версию.
Стек на инкрементном наборе данных
Вот где все интересны. KEDRO поставляется с инкрементным набором данных, который загрузит все файлы из определенного каталога в словарь, где клавиши являются именем файла набора данных. Загрузить все наборы наборов данных в Этот словарь все, что нам нужно сделать, это добавить новую запись каталога, которая является Тип: PartitionedDataset
, с путь
указывая на то же место, что и оригинал, а набор данных
введите то же самое, что и оригинал.
int_cars_partitioned: type: PartitionedDataSet dataset: pandas.ParquetDataSet path: data/int_cars.parquet
Список каталога
Перечисление записей каталога подтверждает, что мы успешно добавили наши новые PartitionedDataset
Отказ
In [17]: context.catalog.list() Out[17]: ['raw_cars', 'int_cars', 'int_cars_partitioned', 'parameters']
Загрузка дополнительного набора данных
Теперь мы можем легко загрузить наборы данных из каждого прогона, которую мы просто сделали в одном словаре, просто бегаем context.catalog.load ('int_cars_incremental')
.
In [19]: context.catalog.load('int_cars_incremental') 2021-07-05 11:32:40,534 - kedro.io.data_catalog - INFO - Loading data from `int_cars_incremental` (IncrementalDataSet)... Out[19]: {'2021-07-05T15.29.56.144Z/int_cars.parquet': Unnamed: 0 mpg cyl disp hp drat wt qsec vs am gear carb 0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 3 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 4 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 5 Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 6 Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 7 Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 8 Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 9 Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 10 Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 11 Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 12 Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 13 Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 14 Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 15 Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 16 Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 17 Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 18 Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 19 Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 20 Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 21 Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 22 AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 23 Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 24 Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 25 Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 26 Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 27 Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 28 Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 29 Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 30 Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 31 Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2, '2021-07-05T15.30.23.101Z/int_cars.parquet': Unnamed: 0 mpg cyl disp hp drat wt qsec vs am gear carb 0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 3 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 4 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 5 Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 6 Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 7 Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 8 Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 9 Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 10 Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 11 Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 12 Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 13 Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 14 Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 15 Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 16 Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 17 Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 18 Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 19 Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 20 Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 21 Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 22 AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 23 Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 24 Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 25 Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 26 Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 27 Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 28 Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 29 Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 30 Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 31 Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2, '2021-07-05T15.30.26.555Z/int_cars.parquet': Unnamed: 0 mpg cyl disp hp drat wt qsec vs am gear carb 0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 3 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 4 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 5 Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 6 Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 7 Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 8 Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 9 Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 10 Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 11 Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 12 Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 13 Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 14 Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 15 Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 16 Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 17 Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 18 Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 19 Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 20 Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 21 Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 22 AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 23 Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 24 Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 25 Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 26 Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 27 Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 28 Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 29 Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 30 Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 31 Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2, '2021-07-05T15.31.12.688Z/int_cars.parquet': Unnamed: 0 mpg cyl disp hp drat wt qsec vs am gear carb 0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 3 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 4 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 5 Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 6 Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 7 Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 8 Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 9 Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 10 Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 11 Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 12 Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 13 Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 14 Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 15 Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 16 Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 17 Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 18 Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 19 Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 20 Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 21 Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 22 AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 23 Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 24 Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 25 Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 26 Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 27 Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 28 Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 29 Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 30 Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 31 Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2}
👆 Обратите внимание, что постепенные наборы набора данных загружаются для вас, его дикт Путь файла: набор данных
Стек на разделенном наборе данных
Давайте посмотрим на похожий тип набора данных PartitionedDataset
Отказ Мы можем добавить его в каталог очень похожий путь к тому, как мы добавили Инкрементный набор данных
Отказ
int_cars_incremental: type: IncrementalDataSet dataset: pandas.ParquetDataSet path: data/int_cars.parquet
Загрузка разделенного набора данных
Обратите внимание, что мы получаем Dict с одинаковыми клавишами, что и раньше, но на этот раз ценности являются функцией нагрузки, а не загруженные данные. Разделенные наборы данных могут быть полезны, если вы работаете на наборах данных, которые занимают больше памяти, чем у вас есть. В нашем случае сочетания это с версиями набора данных, его вероятно, чтобы расти довольно большими, поэтому PartitionedDataset
скорее всего, лучший вариант для этого использования.
In [18]: context.catalog.load('int_cars_partitioned') 2021-07-05 11:31:11,253 - kedro.io.data_catalog - INFO - Loading data from `int_cars_partitioned` (PartitionedDataSet)... Out[18]: {'2021-07-05T15.29.56.144Z/int_cars.parquet':>, '2021-07-05T15.30.23.101Z/int_cars.parquet': >, '2021-07-05T15.30.26.555Z/int_cars.parquet': >, '2021-07-05T15.31.12.688Z/int_cars.parquet': >}
Инкрементал против распределения
УвеличитьДататасет
и PartitionedDataset
S очень похожи, поскольку они дают вам доступ к целую каталогу данных, которые используют тот же базовый погрузчик набора данных. Значительная разница состоит в том, хотите ли вы, чтобы ваши данные предварительно загружали или если вы хотите загрузить и распоряжаться его, как вы повторяете его.
- Инкрементные нагрузки нагрузки
- распределенные дают функцию нагрузки
Создание узлов с разделенными наборами наборах
Давайте создадим узел с этим PartitionedDataset
Собирать статистику на нашем наборе данных со временем. Этот узел делает понимание диктов, чтобы получить длину каждой версии, которую мы вытащили.
def timeseries_partitioned(cars: Dict): return {k:len(car()) for k, car in cars.items()} nodes.append( node( func=timeseries_partitioned, inputs='int_cars_partitioned', outputs='int_cars_timeseries_partitioned', name='create_int_cars_timeseries_partitioned', ) )
🗒️ Обратите внимание, что внутри автомобиля понимания DICT – это функция нагрузки, которую нам нужно позвонить.
Создание узлов с инкрементными наборами набора данных
Делать тот же узел с нашими УвеличитьДататасет
Выглядит очень похоже, за исключением того времени, за исключением того времени, заряжена данные внутри понимания Dict, а не функция, которую нам нужно позвонить.
def timeseries_incremental(cars: Dict): return {k:len(car) for k, car in cars.items()} nodes.append( node( func=timeseries_incremental, inputs='int_cars_incremental', outputs='int_cars_timeseries_incremental', name='create_int_cars_timeseries_incremental', ) )
Дополнительные записи каталога
После добавления этих узлов мы можем снова добавить записи каталога с помощью командной строки. Это не перезаписывает любую из наборов данных, которые мы только что создали. Это только добавят к нему.
kedro catalog create --pipeline cars_nodes
int_cars_timeseries_partitioned: type: MemoryDataSet int_cars_timeseries_incremental: type: MemoryDataSet
int_cars_timeseries_partitioned: type: pickle.PickleDataSet filepath: data/int_cars_timeseries_partitioned.parquet int_cars_timeseries_incremental: type: pickle.PickleDataSet filepath: data/int_cars_timeseries_incremental.parquet
Загрузка новых наборов данных
Загрузка двух наборов данных, которые мы только что создали, показывают, что у нас есть одинаковый результат, используя как инкрементные, так и разделенные наборы данных. Этот результат представляет собой словарь FilePaths сопоставлен на размер набора данных. Поскольку файлы по умолчанию являются временными метками, мы могли бы начать выполнять анализ некоторых временных серий, чтобы увидеть, как наш набор данных меняется со временем.
In [32]: context.catalog.load('int_cars_timeseries_incremental') 2021-07-05 12:00:55,014 - kedro.io.data_catalog - INFO - Loading data from `int_cars_timeseries_incremental` (PickleDataSet)... Out[32]: {'2021-07-05T15.29.56.144Z/int_cars.parquet': 32, '2021-07-05T15.30.23.101Z/int_cars.parquet': 32, '2021-07-05T15.30.26.555Z/int_cars.parquet': 32, '2021-07-05T15.31.12.688Z/int_cars.parquet': 32, '2021-07-05T16.43.43.088Z/int_cars.parquet': 32} In [33]: context.catalog.load('int_cars_timeseries_partitioned') 2021-07-05 12:01:03,223 - kedro.io.data_catalog - INFO - Loading data from `int_cars_timeseries_partitioned` (PickleDataSet)... Out[33]: {'2021-07-05T15.29.56.144Z/int_cars.parquet': 32, '2021-07-05T15.30.23.101Z/int_cars.parquet': 32, '2021-07-05T15.30.26.555Z/int_cars.parquet': 32, '2021-07-05T15.31.12.688Z/int_cars.parquet': 32, '2021-07-05T16.43.43.088Z/int_cars.parquet': 32, '2021-07-05T16.50.46.686Z/int_cars.parquet': 32}
📄 KEDRO – Мои данные не столик
Waylon Walker · 15 января · 2 мин читать
☝️. У меня есть полная статья о создании наборов данных, которые не являются табличными набором данных, используя сортировку.
Этот пост был в первую очередь построен на https://twitch.tv/waylonwalker Дайте мне следующую и присоединитесь к живуще, если это то, что вас интересует.
Оригинал: “https://dev.to/waylonwalker/incremental-versioned-datasets-in-kedro-3ajn”