使用亚马逊 Athena 分析导出的数据 - Amazon IoT SiteWise
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用亚马逊 Athena 分析导出的数据

在 Amazon S3 中保存资产属性数据后,您可以使用多种Amazon服务来生成报告或分析和查询您的数据:

您可以在 Amazon S3 中的分析下找到其他可以与您的数据进行交互的Amazon服务Amazon Web Services Management Console

注意

堆栈会创建一个 Amazon Glue 数据库来格式化资产属性数据。您无法查询此数据库中的资产数据。按照本节中的步骤创建可查询的 Amazon Glue 数据库。

在本教程中,您将学习如何配置使用 Amazon Athena 的先决条件,以及如何使用 Athena 对导出的Amazon IoT SiteWise资产数据运行 SQL 查询。要使用 Athena 查询数据,必须先在中填Amazon Glue Data Catalog充您的资产数据。数据目录包含数据库和表,Athena 可以访问数据目录中的数据。您可以创建一个Amazon Glue搜寻器,用导出的资产数据定期更新数据目录。

配置爬网程序以填充 Amazon Glue Data Catalog

Amazon Glue 爬网程序对数据存储进行爬网,以便填充 Amazon Glue Data Catalog 中的表。在此过程中,您将为包含导出资产数据的 S3 存储桶创建并运行 Amazon Glue 爬网程序。爬网程序会创建一个用于资产属性更新的表和一个用于资产元数据的表。然后,您可以使用 Athena 对这些表执行 SQL 查询。有关更多信息,请参阅《Amazon Glue开发者指南》中的 “填充爬虫” Amazon Glue Data Catalog 和 “定义爬虫”。

创建 Amazon Glue 爬网程序
  1. 导航到 Amazon Glue 控制台

  2. 在导航窗格中,选择 Crawlers (爬网程序)

  3. 选择 Add crawler (添加爬网程序)

  4. Add crawler (添加爬网程序) 页面上,执行以下操作:

    1. 输入爬网程序的名称(例如,IoTSiteWiseDataCrawler),然后选择 Next (下一步)

    2. 对于 Crawler source type (爬网程序源类型),选择 Data stores (数据存储),然后选择 Next (下一步)

    3. Add a data store (添加数据存储) 页面上,执行以下操作:

      1. 对于 Choose a data store (选择数据存储),请选择 S3

      2. Include path (包括路径) 中,输入 s3://DOC-EXAMPLE-BUCKET1 以将资产数据存储桶添加为数据存储。将 DOC-EXAMPLE-BUCKET1 替换为您在创建堆栈时选择的存储段名称。

      3. 选择下一步

        
                      Amazon Gluecrawler “添加数据存储” 屏幕截图。
    4. Add another data store (添加另一个数据存储) 页面上,选择 No (否),然后选择 Next (下一步)

    5. 选择 IAM 角色页面上,执行以下操作:

      1. 要创建允许Amazon Glue访问 S3 存储桶的新服务角色,请选择创建 IAM 角色

      2. 输入角色名称的后缀,例如 IoTSiteWiseDataCrawler

      3. 选择下一步

    6. 对于 Frequency (频率),选择 Hourly (每小时),然后选择 Next (下一步)。爬网程序每次运行时都会使用新数据更新表,因此您可以选择适合您使用案例的任何频率。

    7. Configure the crawler's output (配置爬网程序的输出) 页面上,执行以下操作:

      1. 选择 Add database (添加数据库) 为资产数据创建 Amazon Glue 数据库。

      2. 输入数据库的名称,例如 iot_sitewise_asset_database

      3. 选择创建

      4. 选择下一步

    8. 检查爬网程序详细信息,然后选择 Finish (完成)

      
                  Amazon Glue搜寻器 “查看爬虫详情” 屏幕截图。

默认情况下,新爬网程序不会立即运行。您必须手动运行它,或等待它按照配置的时间表运行。

运行爬网程序
  1. Crawlers (爬网程序) 页面上,选中新爬网程序的复选框,然后选择 Run crawler (运行爬网程序)

    
              Amazon Glue突出显示了 “运行爬虫” 的 “爬虫” 屏幕截图。
  2. 等到爬网程序完成并且状态为 Ready (就绪)

    运行爬网程序可能需要几分钟时间,并且其状态会自动更新。

  3. 在导航窗格中,选择

    您应该看到两个新表:asset_metadataasset_property_updates

使用 Athena 查询数据

Athena 会自动在中发现您的资产数据表。Amazon Glue Data Catalog要对这些表的交集执行查询,您可以创建一个视图,即逻辑数据表。有关更多信息,请参阅《亚马逊 Athena 用户指南》中的使用视图

创建结合了资产属性数据和元数据的视图后,您可以运行查询,输出附加了资产和属性名称的属性值。有关更多信息,请参阅亚马逊 Athena 用户指南中的使用亚马逊 Athena 运行 SQL 查询

使用 Athena 查询资产数据
  1. 导航到 Athena 控制台

    如果出现 Getting started (入门) 页面,请选择 Get Started (开始)”。

  2. 如果您是第一次使用 Athena,请完成以下步骤,为查询结果配置 S3 存储桶。Athena 将您的查询结果存储在此存储桶中。

    重要

    使用与资产数据存储桶不同的存储桶,以便您之前创建的爬网程序不会抓取查询结果。我们建议您创建一个仅用于 Athena 查询结果的存储桶。有关更多信息,请参阅如何创建 S3 存储桶?亚马逊简单存储服务用户指南中。

    1. 选择 Settings

    2. 查询结果位置中,输入 Athena 查询结果的 S3 存储桶。存储桶必须以 / 结尾。

      
                  Athena “设置” 屏幕截图,高亮显示 “查询结果位置”。
    3. 选择保存

  3. 左侧面板包含要查询的数据源。执行以下操作:

    1. 对于数据源 AwsDataCatalog,选择使用Amazon Glue Data Catalog。

    2. 对于 Database (数据库),选择使用爬网程序创建的 Amazon Glue 数据库。

      
                  Athena “查询编辑器” 屏幕截图,突出显示 “数据库”。

    您应该看到两个表:asset_metadataasset_property_updates

  4. 要根据资产属性数据和元数据的组合创建视图,请输入以下查询,然后选择 Run query (运行查询)

    CREATE OR REPLACE VIEW iot_sitewise_asset_data AS SELECT "from_unixtime"("time_in_seconds" + ("offset_in_nanos" / 1000000000)) "timestamp", "metadata"."asset_name", "metadata"."asset_property_name", "data"."asset_property_value", "metadata"."asset_property_unit", "metadata"."asset_property_alias" FROM ( "iot_sitewise_asset_database".asset_property_updates data INNER JOIN "iot_sitewise_asset_database".asset_metadata metadata ON ( ("data"."asset_id" = "metadata"."asset_id") AND ("data"."asset_property_id" = "metadata"."asset_property_id") ) );

    此查询连接与资产 ID 和属性 ID 相关的资产属性数据和元数据表以创建视图。您可以多次运行此查询,如果视图已存在,它将替换现有视图。

  5. 要添加新查询,请选择 + 图标。

  6. 要查看资产数据示例,请输入以下查询,然后选择 Run query (运行查询)。将时间戳替换为存储桶包含数据的时间间隔。

    SELECT * FROM "iot_sitewise_asset_database"."iot_sitewise_asset_data" WHERE "timestamp" BETWEEN TIMESTAMP '2020-05-14 12:00:00.000' AND TIMESTAMP '2020-05-14 13:00:00.000' ORDER BY "timestamp" DESC LIMIT 50;

    此查询在两个时间戳之间输出多达 50 个数据点,先显示最近的条目。

    您的查询输出可能与以下结果类似。

    
              Athena “查询编辑器” 屏幕截图,高亮显示 “运行查询”。

您现在可以运行对 Amazon IoT SiteWise 应用程序很有用的查询。有关更多信息,请参阅亚马逊 Athena 用户指南中的亚马逊 Athena 的 SQL 参考