createFeatureGroup method
- required String eventTimeFeatureName,
- required List<
FeatureDefinition> featureDefinitions, - required String featureGroupName,
- required String recordIdentifierFeatureName,
- String? description,
- OfflineStoreConfig? offlineStoreConfig,
- OnlineStoreConfig? onlineStoreConfig,
- String? roleArn,
- List<
Tag> ? tags,
Create a new FeatureGroup
. A FeatureGroup
is a
group of Features
defined in the FeatureStore
to
describe a Record
.
The FeatureGroup
defines the schema and features contained in
the FeatureGroup. A FeatureGroup
definition is composed of a
list of Features
, a RecordIdentifierFeatureName
,
an EventTimeFeatureName
and configurations for its
OnlineStore
and OfflineStore
. Check AWS
service quotas to see the FeatureGroup
s quota for your
AWS account.
May throw ResourceInUse. May throw ResourceLimitExceeded.
Parameter eventTimeFeatureName
:
The name of the feature that stores the EventTime
of a
Record
in a FeatureGroup
.
An EventTime
is a point in time when a new event occurs that
corresponds to the creation or update of a Record
in a
FeatureGroup
. All Records
in the
FeatureGroup
must have a corresponding
EventTime
.
An EventTime
can be a String
or
Fractional
.
-
Fractional
:EventTime
feature values must be a Unix timestamp in seconds. -
String
:EventTime
feature values must be an ISO-8601 string in the format. The following formats are supportedyyyy-MM-dd'T'HH:mm:ssZ
andyyyy-MM-dd'T'HH:mm:ss.SSSZ
whereyyyy
,MM
, anddd
represent the year, month, and day respectively andHH
,mm
,ss
, and if applicable,SSS
represent the hour, month, second and milliseconds respsectively.'T'
andZ
are constants.
Parameter featureDefinitions
:
A list of Feature
names and types. Name
and
Type
is compulsory per Feature
.
Valid feature FeatureType
s are Integral
,
Fractional
and String
.
FeatureName
s cannot be any of the following:
is_deleted
, write_time
,
api_invocation_time
You can create up to 2,500 FeatureDefinition
s per
FeatureGroup
.
Parameter featureGroupName
:
The name of the FeatureGroup
. The name must be unique within
an AWS Region in an AWS account. The name:
- Must start and end with an alphanumeric character.
- Can only contain alphanumeric character and hyphens. Spaces are not allowed.
Parameter recordIdentifierFeatureName
:
The name of the Feature
whose value uniquely identifies a
Record
defined in the FeatureStore
. Only the
latest record per identifier value will be stored in the
OnlineStore
. RecordIdentifierFeatureName
must be
one of feature definitions' names.
You use the RecordIdentifierFeatureName
to access data in a
FeatureStore
.
This name:
- Must start and end with an alphanumeric character.
- Can only contains alphanumeric characters, hyphens, underscores. Spaces are not allowed.
Parameter description
:
A free-form description of a FeatureGroup
.
Parameter offlineStoreConfig
:
Use this to configure an OfflineFeatureStore
. This parameter
allows you to specify:
-
The Amazon Simple Storage Service (Amazon S3) location of an
OfflineStore
. - A configuration for an AWS Glue or AWS Hive data cataolgue.
-
An KMS encryption key to encrypt the Amazon S3 location used for
OfflineStore
.
Parameter onlineStoreConfig
:
You can turn the OnlineStore
on or off by specifying
True
for the EnableOnlineStore
flag in
OnlineStoreConfig
; the default value is False
.
You can also include an AWS KMS key ID (KMSKeyId
) for at-rest
encryption of the OnlineStore
.
Parameter roleArn
:
The Amazon Resource Name (ARN) of the IAM execution role used to persist
data into the OfflineStore
if an
OfflineStoreConfig
is provided.
Parameter tags
:
Tags used to identify Features
in each
FeatureGroup
.
Implementation
Future<CreateFeatureGroupResponse> createFeatureGroup({
required String eventTimeFeatureName,
required List<FeatureDefinition> featureDefinitions,
required String featureGroupName,
required String recordIdentifierFeatureName,
String? description,
OfflineStoreConfig? offlineStoreConfig,
OnlineStoreConfig? onlineStoreConfig,
String? roleArn,
List<Tag>? tags,
}) async {
ArgumentError.checkNotNull(eventTimeFeatureName, 'eventTimeFeatureName');
_s.validateStringLength(
'eventTimeFeatureName',
eventTimeFeatureName,
1,
64,
isRequired: true,
);
ArgumentError.checkNotNull(featureDefinitions, 'featureDefinitions');
ArgumentError.checkNotNull(featureGroupName, 'featureGroupName');
_s.validateStringLength(
'featureGroupName',
featureGroupName,
1,
64,
isRequired: true,
);
ArgumentError.checkNotNull(
recordIdentifierFeatureName, 'recordIdentifierFeatureName');
_s.validateStringLength(
'recordIdentifierFeatureName',
recordIdentifierFeatureName,
1,
64,
isRequired: true,
);
_s.validateStringLength(
'description',
description,
0,
128,
);
_s.validateStringLength(
'roleArn',
roleArn,
20,
2048,
);
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'SageMaker.CreateFeatureGroup'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'EventTimeFeatureName': eventTimeFeatureName,
'FeatureDefinitions': featureDefinitions,
'FeatureGroupName': featureGroupName,
'RecordIdentifierFeatureName': recordIdentifierFeatureName,
if (description != null) 'Description': description,
if (offlineStoreConfig != null)
'OfflineStoreConfig': offlineStoreConfig,
if (onlineStoreConfig != null) 'OnlineStoreConfig': onlineStoreConfig,
if (roleArn != null) 'RoleArn': roleArn,
if (tags != null) 'Tags': tags,
},
);
return CreateFeatureGroupResponse.fromJson(jsonResponse.body);
}