kedro.io.DataCatalog¶
- class kedro.io.DataCatalog(datasets=None, feed_dict=None, dataset_patterns=None, load_versions=None, save_version=None, default_pattern=None, config_resolver=None)[source]¶
DataCatalog存储了AbstractDataset实现的实例, 为程序中的任何位置提供load和save功能。要使用DataCatalog, 您需要用数据集字典来实例化它。然后它将作为调用的单一参考点, 将加载和保存功能中继到底层数据集。属性
- rtype:
CatalogConfigResolver
方法
add(dataset_name, dataset[, replace])向
DataCatalog添加一个新的AbstractDataset对象。add_all(datasets[, replace])向
DataCatalog添加一组新的数据集。add_feed_dict(feed_dict[, replace])使用通过feed_dict提供的数据将数据集添加到
DataCatalog中。confirm(name)通过名称确认数据集。
exists(name)通过调用其exists()方法来检查注册的数据集是否存在。
from_config(catalog[, credentials, ...])从配置创建
DataCatalog实例。list([regex_search])目录中注册的所有数据集名称列表。
load(name[, version])加载一个已注册的数据集。
release(name)释放与数据集关联的所有缓存数据
save(name, data)将数据保存到已注册的数据集。
shallow_copy([extra_dataset_patterns])返回当前对象的浅拷贝。
- __init__(datasets=None, feed_dict=None, dataset_patterns=None, load_versions=None, save_version=None, default_pattern=None, config_resolver=None)[source]¶
DataCatalog存储着AbstractDataset的实现实例,为程序中的任何位置提供load和save功能。要使用DataCatalog,您需要用数据集字典来实例化它。然后它将作为您调用的单一参考点,将加载和保存功能中继到底层数据集。- Parameters:
datasets (dict[str, AbstractDataset] | None) - 一个包含数据集名称和数据集实例的字典。
dataset_patterns (Patterns | None) – 一个包含数据集工厂模式和对应数据集配置的字典。当从目录配置中获取时,这些模式将按以下顺序排序: 1. 递减的特异性(大括号外的字符数) 2. 递减的占位符数量(大括号对的数量) 3. 字母顺序 特异性为0的模式是全能匹配模式,如果在字母顺序中排在"default"之前,它将覆盖通过运行器提供的默认模式。这种覆盖模式会发出警告。“{default}”名称不会发出警告。
load_versions (dict[str, str] | None) – 数据集名称与要加载版本之间的映射关系。对未启用版本控制的数据集无效。
save_version (str | None) – 用于所有启用版本控制的数据集执行
save操作的版本字符串。必须满足以下条件:a) 符合操作系统文件名限制且不区分大小写的字符串;b) 按字典序排序时始终返回最新版本。default_pattern (Patterns | None) – 一个字典,包含覆盖通过runners提供的默认模式的默认通配模式。
config_resolver (CatalogConfigResolver | None) – 一个用于解析数据集模式和配置的CatalogConfigResolver实例。
示例:
from kedro_datasets.pandas import CSVDataset cars = CSVDataset(filepath="cars.csv", load_args=None, save_args={"index": False}) catalog = DataCatalog(datasets={'cars': cars})
- add(dataset_name, dataset, replace=False)[source]¶
向
DataCatalog添加一个新的AbstractDataset对象。- Parameters:
dataset_name (
str) - 一个尚未注册的唯一数据集名称。dataset (
AbstractDataset) – 要与给定数据集名称关联的数据集对象。replace (
bool) – 指定是否允许替换同名的现有数据集。
- Raises:
DatasetAlreadyExistsError – 当同名数据集已被注册时触发。
示例:
from kedro_datasets.pandas import CSVDataset catalog = DataCatalog(datasets={ 'cars': CSVDataset(filepath="cars.csv") }) catalog.add("boats", CSVDataset(filepath="boats.csv"))
- Return type:
- add_all(datasets, replace=False)[source]¶
向
DataCatalog添加一组新的数据集。- Parameters:
数据集 (
dict[str,AbstractDataset]) – 一个包含数据集名称和数据集实例的字典。replace (
bool) - 指定是否允许替换同名的现有数据集。
- Raises:
DatasetAlreadyExistsError – 当同名数据集已被注册时触发。
示例:
from kedro_datasets.pandas import CSVDataset, ParquetDataset catalog = DataCatalog(datasets={ "cars": CSVDataset(filepath="cars.csv") }) additional = { "planes": ParquetDataset("planes.parq"), "boats": CSVDataset(filepath="boats.csv") } catalog.add_all(additional) assert catalog.list() == ["cars", "planes", "boats"]
- Return type:
- add_feed_dict(feed_dict, replace=False)[source]¶
使用通过feed_dict提供的数据将数据集添加到
DataCatalog中。feed_dict 是一个字典,其中键代表数据集名称,值可以是原始数据或继承自
AbstractDataset的 Kedro 数据集类实例。如果提供的是原始数据,在添加到DataCatalog之前会自动封装到MemoryDataset中。- Parameters:
示例:
from kedro_datasets.pandas import CSVDataset import pandas as pd df = pd.DataFrame({"col1": [1, 2], "col2": [4, 5], "col3": [5, 6]}) catalog = DataCatalog() catalog.add_feed_dict({ "data_df": df }, replace=True) assert catalog.load("data_df").equals(df) csv_dataset = CSVDataset(filepath="test.csv") csv_dataset.save(df) catalog.add_feed_dict({"data_csv_dataset": csv_dataset}) assert catalog.load("data_csv_dataset").equals(df)
- Return type:
- property config_resolver: CatalogConfigResolver¶
- Return type:
CatalogConfigResolver
- confirm(name)[source]¶
通过名称确认数据集。
- Parameters:
name (
str) – 数据集的名称。- Raises:
DatasetError – 当数据集没有confirm方法时。
- Return type:
- classmethod from_config(catalog, credentials=None, load_versions=None, save_version=None)[source]¶
从配置创建
DataCatalog实例。这是一个工厂方法,用于为开发者提供通过解析配置文件中的配置来实例化DataCatalog的方式。- Parameters:
catalog (dict[str, dict[str, Any]] | None) – 一个字典,其键是数据集名称,值是实现
AbstractDataset类的构造函数参数的字典。要加载的数据集类通过type键及其完全限定类名指定。所有kedro.io数据集可以仅通过类名指定,即可以省略模块名。credentials (dict[str, dict[str, Any]] | None) – 一个包含不同数据集凭证的字典。在
AbstractDataset中使用credentials键来引用相应的凭证,如下例所示。load_versions (dict[str, str] | None) – 数据集名称与要加载版本之间的映射关系。对未启用版本控制的数据集无效。
save_version (str | None) – 用于所有启用版本控制的数据集执行
save操作的版本字符串。必须满足以下条件:a) 符合操作系统文件名限制且不区分大小写的字符串;b) 按字典序排序时始终返回最新版本。
- Return type:
- Returns:
一个已实例化的
DataCatalog,包含所有指定的数据集,已创建并可供使用。- Raises:
DatasetError – 当方法无法根据配置创建任何数据集时抛出此错误。
DatasetNotFoundError – 当load_versions引用的数据集在目录中不存在时。
示例:
config = { "cars": { "type": "pandas.CSVDataset", "filepath": "cars.csv", "save_args": { "index": False } }, "boats": { "type": "pandas.CSVDataset", "filepath": "s3://aws-bucket-name/boats.csv", "credentials": "boats_credentials", "save_args": { "index": False } } } credentials = { "boats_credentials": { "client_kwargs": { "aws_access_key_id": "<your key id>", "aws_secret_access_key": "<your secret>" } } } catalog = DataCatalog.from_config(config, credentials) df = catalog.load("cars") catalog.save("boats", df)
- list(regex_search=None)[source]¶
目录中所有已注册数据集名称的列表。 可以通过提供一个可选的正则表达式进行过滤, 该表达式将仅返回匹配的键。
- Parameters:
regex_search (str | None) – 可选的正则表达式,可用于通过特定模式限制返回的数据集。
- Return type:
- Returns:
一个可用的数据集名称列表,这些名称符合regex_search条件(如果提供了该条件)。默认情况下会返回所有数据集名称。
- Raises:
SyntaxError – 当提供的正则表达式过滤器无效时。
示例:
catalog = DataCatalog() # get datasets where the substring 'raw' is present raw_data = catalog.list(regex_search='raw') # get datasets which start with 'prm' or 'feat' feat_eng_data = catalog.list(regex_search='^(prm|feat)') # get datasets which end with 'time_series' models = catalog.list(regex_search='.+time_series$')
- load(name, version=None)[source]¶
加载一个已注册的数据集。
- Parameters:
- Return type:
任意
- Returns:
已加载配置好的数据。
- Raises:
DatasetNotFoundError – 当给定名称的数据集尚未注册时抛出此错误。
示例:
from kedro.io import DataCatalog from kedro_datasets.pandas import CSVDataset cars = CSVDataset(filepath="cars.csv", load_args=None, save_args={"index": False}) catalog = DataCatalog(datasets={'cars': cars}) df = catalog.load("cars")
- release(name)[source]¶
释放与数据集关联的所有缓存数据
- Parameters:
name (
str) – 要检查的数据集。- Raises:
DatasetNotFoundError – 当给定名称的数据集尚未注册时触发。
- Return type:
- save(name, data)[source]¶
将数据保存到已注册的数据集。
- Parameters:
- Raises:
DatasetNotFoundError – 当给定名称的数据集尚未注册时抛出此错误。
示例:
import pandas as pd from kedro_datasets.pandas import CSVDataset cars = CSVDataset(filepath="cars.csv", load_args=None, save_args={"index": False}) catalog = DataCatalog(datasets={'cars': cars}) df = pd.DataFrame({'col1': [1, 2], 'col2': [4, 5], 'col3': [5, 6]}) catalog.save("cars", df)
- Return type: