查询功能存储与 Athena 和Amazon Glue - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

查询功能存储与 Athena 和Amazon Glue

在离线 feature store 中创建要素存储要素组后,您可以选择使用 Amazon Athena 在Amazon Glue目录。这需要将数据与其他目录详细信息一起注册到数据目录中,这些详细信息会在功能存储中自动注册。换言之,要素存储自动构建Amazon Glue数据目录,您可以将其关闭。当您想要通过执行 SQL 查询来构建数据集,然后训练用于推理的模型时,这一点尤其有用。 

在您的FeatureStore已在离线存储中创建并使用您的数据填充,则您可以编写 SQL 查询以加入存储在脱机存储中的不同FeatureGroups. 为此,您可以使用 Amazon Athena 编写和执行 SQL 查询。可以设置Amazon GlueCrawler 按计划运行,以确保您的目录始终处于最新状态。 

如果你想这样做,请定义一个角色,该角色可以由Amazon Glue爬虫程序来访问脱机应用商店的 S3 存储桶。有关更多信息,请参阅 。创建 IAM 角色

有关如何使用Amazon Glue和 Athena 构建用于模型训练和推理的训练数据集,请参阅构建训练数据集:创建要素组.

示 Athena 询

下面我们提供了一些示例查询,这些查询充当模板供您使用 Athena 快速编写查询。 

互动浏览器

此查询选择前 1000 条记录。 

SELECT * FROM <FeatureGroup.DataCatalogConfig.DatabaseName>.<FeatureGroup.DataCatalogConfig.TableName> LIMIT 1000

没有重复的最新快照

此查询选择最新的非重复记录。

SELECT * FROM     (SELECT *,          row_number()         OVER (PARTITION BY <RecordIdentiferFeatureName>     ORDER BY  <EventTimeFeatureName> desc, Api_Invocation_Time DESC, write_time DESC) AS row_num     FROM <FeatureGroup.DataCatalogConfig.DatabaseName>.<FeatureGroup.DataCatalogConfig.TableName>) WHERE row_num = 1;

脱机存储中没有重复的最新快照和已删除记录

此查询过滤掉所有已删除的记录,并从脱机存储中选择非重复记录。 

SELECT * FROM     (SELECT *,          row_number()         OVER (PARTITION BY <RecordIdentiferFeatureName>     ORDER BY  <EventTimeFeatureName> desc, Api_Invocation_Time DESC, write_time DESC) AS row_num     FROM <FeatureGroup.DataCatalogConfig.DatabaseName>.<FeatureGroup.DataCatalogConfig.TableName>) WHERE row_num = 1 and  NOT is_deleted;

离线商店中没有重复和删除记录的时间旅行

此查询过滤掉任何已删除的记录,并从特定时间点选择非重复记录。

SELECT * FROM     (SELECT *,          row_number()         OVER (PARTITION BY <RecordIdentiferFeatureName>     ORDER BY  <EventTimeFeatureName> desc, Api_Invocation_Time DESC, write_time DESC) AS row_num     FROM <FeatureGroup.DataCatalogConfig.DatabaseName>.<FeatureGroup.DataCatalogConfig.TableName>     where <EventTimeFeatureName> <= timestamp '<timestamp>')     -- replace timestamp '<timestamp>' with just <timestamp>  if EventTimeFeature is of type fractional WHERE row_num = 1 and NOT is_deleted