冷层中保存的数据的文件路径和架构 - Amazon IoT SiteWise
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

冷层中保存的数据的文件路径和架构

Amazon IoT SiteWise 通过复制时间序列(包括度量、指标、变换和聚合,以及资产和资产模型定义)将您的数据存储在冷层中。下面介绍发送到冷层的数据的文件路径和架构。

设备数据(测量)

Amazon IoT SiteWise 每六小时将设备数据(测量值)导出到冷层一次。原始数据以 Apache AVRO (.avro) 格式保存在冷层中。

文件路径

Amazon IoT SiteWise 使用以下模板将设备数据(测量值)存储在冷层中。

{keyPrefix}/raw/startYear={startYear}/startMonth={startMonth}/startDay={startDay}/seriesBucket={seriesBucket}/raw_{timeseriesId}_{startTimestamp}_{quality}.avro

Amazon S3 中原始数据的每个文件路径都包含以下组件。

路径组件 描述

keyPrefix

您在 Amazon IoT SiteWise 存储配置中指定的 Amazon S3 前缀。Amazon S3 使用前缀作为存储桶中的文件夹名称。

raw

存储设备(测量)中的时间序列数据的文件夹。raw 文件夹保存在前缀文件夹中。

seriesBucket

介于 00 和 ff 之间的十六进制数。此数字派生自 timeSeriesId。此分区用于在 Amazon IoT SiteWise 写入冷层时增加吞吐量。当您使用 Amazon Athena 运行查询时,您可以使用该分区进行精细分区以提高查询性能。

资产元数据中的 seriesBuckettimeSeriesBucket 是相同的数字。

startYear

与时间序列数据关联的独占开始时间的年份。

startMonth

与时间序列数据关联的独占开始时间的月份。

startDay

与时间序列数据关联的独占开始时间的月份中的某一天。

fileName

文件名使用下划线 (_) 字符作为分隔符来分隔以下内容:

  • raw 前缀。

  • timeSeriesId 值。

  • 与时间序列数据关联的独占开始时间的纪元时间戳。

  • 数据质量。有效值:GOODBADUNCERTAIN。有关更多信息,请参阅 Amazon IoT SiteWise API 参考中的AssetProperty值

该文件通过使用 Snappy 压缩以 .avro 格式保存。

例 冷层中原始数据的文件路径

keyPrefix/raw/startYear=2021/startMonth=1/startDay=2/seriesBucket=a2/raw_7020c8e2-e6db-40fa-9845-ed0dddd4c77d_95e63da7-d34e-43e1-bc6f-1b490154b07a_1609577700_GOOD.avro

字段

导出到冷层的原始数据的架构包含以下字段。

字段名称 支持的类型 默认 类型 描述

seriesId

string

不适用

标识设备(度量)中的时间序列数据的 ID。您可以使用此字段在查询中联接原始数据和资产元数据。

timeInSeconds

long

不适用

采用 Unix 纪元时间格式的时间戳日期(以秒为单位)。分数纳秒数据由 offsetInNanos 提供。

offsetInNanos

long

不适用

timeInSeconds 的纳秒偏移量。

quality

string

不适用

时间序列值的质量。

doubleValue

doublenull

null

双精度(浮点数)类型的时间序列数据。

stringValue

stringnull

null

字符串类型(字符序列)的时间序列数据。

integerValue

intnull

null

整数类型(整数)的时间序列数据。

booleanValue

booleannull

null

布尔类型的时间序列数据(true 或 false)。

jsonValue

stringnull

null

JSON 类型的时间序列数据(存储为字符串的复杂数据类型)。

recordVersion

longnull

null

记录的版本号。您可以使用版本号来选择最新记录。较新的记录具有较大的版本号。

例 冷层中的原始数据
{"seriesId":"e9687d2a-0dbe-4f65-9ed6-6f443cba41f7_95e63da7-d34e-43e1-bc6f-1b490154b07a","timeInSeconds":1625675887,"offsetInNanos":0,"quality":"GOOD","doubleValue":{"double":0.75},"stringValue":null,"integerValue":null,"booleanValue":null,"jsonValue":null,"recordVersion":null} {"seriesId":"e9687d2a-0dbe-4f65-9ed6-6f443cba41f7_95e63da7-d34e-43e1-bc6f-1b490154b07a","timeInSeconds":1625675889,"offsetInNanos":0,"quality":"GOOD","doubleValue":{"double":0.69},"stringValue":null,"integerValue":null,"booleanValue":null,"jsonValue":null,"recordVersion":null} {"seriesId":"e9687d2a-0dbe-4f65-9ed6-6f443cba41f7_95e63da7-d34e-43e1-bc6f-1b490154b07a","timeInSeconds":1625675890,"offsetInNanos":0,"quality":"GOOD","doubleValue":{"double":0.66},"stringValue":null,"integerValue":null,"booleanValue":null,"jsonValue":null,"recordVersion":null} {"seriesId":"e9687d2a-0dbe-4f65-9ed6-6f443cba41f7_95e63da7-d34e-43e1-bc6f-1b490154b07a","timeInSeconds":1625675891,"offsetInNanos":0,"quality":"GOOD","doubleValue":{"double":0.92},"stringValue":null,"integerValue":null,"booleanValue":null,"jsonValue":null,"recordVersion":null} {"seriesId":"e9687d2a-0dbe-4f65-9ed6-6f443cba41f7_95e63da7-d34e-43e1-bc6f-1b490154b07a","timeInSeconds":1625675892,"offsetInNanos":0,"quality":"GOOD","doubleValue":{"double":0.73},"stringValue":null,"integerValue":null,"booleanValue":null,"jsonValue":null,"recordVersion":null}

指标、转换和聚合

Amazon IoT SiteWise 每六小时将指标、转换和聚合导出到冷层一次。指标、转换和聚合以 Apache AVRO (.avro) 格式保存在冷层中。

文件路径

Amazon IoT SiteWise 使用以下模板将指标、转换和聚合存储在冷层中。

{keyPrefix}/agg/startYear={startYear}/startMonth={startMonth}/startDay={startDay}/seriesBucket={seriesBucket}/agg_{timeseriesId}_{startTimestamp}_{quality}.avro

Amazon S3 中指标、转换和聚合的每个文件路径都包含以下组件。

路径组件 描述

keyPrefix

您在 Amazon IoT SiteWise 存储配置中指定的 Amazon S3 前缀。Amazon S3 使用前缀作为存储桶中的文件夹名称。

agg

用于存储来自指标的时间序列数据的文件夹。agg 文件夹保存在前缀文件夹中。

seriesBucket

介于 00 和 ff 之间的十六进制数。此数字派生自 timeSeriesId。此分区用于在 Amazon IoT SiteWise 写入冷层时增加吞吐量。当您使用 Amazon Athena 运行查询时,您可以使用该分区进行精细分区以提高查询性能。

资产元数据中的 seriesBuckettimeSeriesBucket 是相同的数字。

startYear

与时间序列数据关联的独占开始时间的年份。

startMonth

与时间序列数据关联的独占开始时间的月份。

startDay

与时间序列数据关联的独占开始时间的月份中的某一天。

fileName

文件名使用下划线 (_) 字符作为分隔符来分隔以下内容:

  • raw 前缀。

  • timeSeriesId 值。

  • 与时间序列数据关联的独占开始时间的纪元时间戳。

  • 数据质量。有效值:GOODBADUNCERTAIN。有关更多信息,请参阅 Amazon IoT SiteWise API 参考中的AssetProperty值

该文件通过使用 Snappy 压缩以 .avro 格式保存。

例 冷层中指标的文件路径

keyPrefix/agg/startYear=2021/startMonth=1/startDay=2/seriesBucket=a2/agg_7020c8e2-e6db-40fa-9845-ed0dddd4c77d_95e63da7-d34e-43e1-bc6f-1b490154b07a_1609577700_GOOD.avro

字段

导出到冷层的指标、转换和聚合的架构包含以下字段。

字段名称 支持的类型 默认 类型 描述

seriesId

string

不适用

标识来自设备、指标或转换的时序数据的 ID。您可以使用此字段在查询中联接原始数据和资产元数据。

timeInSeconds

long

不适用

采用 Unix 纪元时间格式的时间戳日期(以秒为单位)。分数纳秒数据由 offsetInNanos 提供。

offsetInNanos

long

不适用

timeInSeconds 的纳秒偏移量。

quality

string

不适用

筛选资产数据所依据的质量。

resolution

string

不适用

聚合数据的时间间隔。

count

doublenull

null

给定变量在当前时间间隔内的数据点总数。

average

doublenull

null

给定变量在当前时间间隔内的平均值。

min

doublenull

null

给定变量在当前时间间隔内的最小值。

max

booleannull

null

给定变量在当前时间间隔内的最大值。

sum

stringnull

null

给定变量在当前时间间隔内的值总和。

recordVersion

longnull

null

记录的版本号。您可以使用版本号来选择最新记录。较新的记录具有较大的版本号。

例 冷层中的指标数据
{"seriesId":"f74c2828-5317-4df3-ba16-6d41b5bcb531","timeInSeconds":1637334060,"offsetInNanos":0,"quality":"GOOD","resolution":"PT1M","count":31.0,"average":{"double":16.0},"min":{"double":1.0},"max":{"double":31.0},"sum":{"double":496.0},"recordVersion":null} {"seriesId":"f74c2828-5317-4df3-ba16-6d41b5bcb531","timeInSeconds":1637334120,"offsetInNanos":0,"quality":"GOOD","resolution":"PT1M","count":29.0,"average":{"double":46.0},"min":{"double":32.0},"max":{"double":60.0},"sum":{"double":1334.0},"recordVersion":null} {"seriesId":"f74c2828-5317-4df3-ba16-6d41b5bcb531","timeInSeconds":1637334540,"offsetInNanos":0,"quality":"GOOD","resolution":"PT1M","count":31.0,"average":{"double":16.0},"min":{"double":1.0},"max":{"double":31.0},"sum":{"double":496.0},"recordVersion":null} {"seriesId":"f74c2828-5317-4df3-ba16-6d41b5bcb531","timeInSeconds":1637334600,"offsetInNanos":0,"quality":"GOOD","resolution":"PT1M","count":29.0,"average":{"double":46.0},"min":{"double":32.0},"max":{"double":60.0},"sum":{"double":1334.0},"recordVersion":null} {"seriesId":"f74c2828-5317-4df3-ba16-6d41b5bcb531","timeInSeconds":1637335020,"offsetInNanos":0,"quality":"GOOD","resolution":"PT1M","count":31.0,"average":{"double":16.0},"min":{"double":1.0},"max":{"double":31.0},"sum":{"double":496.0},"recordVersion":null}

资产元数据

首次启用 Amazon IoT SiteWise 将数据导出到冷层时,资产元数据将导出到冷层。初始配置完成后,只有在您更改资产模型定义或资产定义时,才会将资产元数据 Amazon IoT SiteWise 导出到该层。资产元数据以换行符分隔的 JSON (.ndjson) 格式保存在冷层中。

文件路径

Amazon IoT SiteWise 使用以下模板将资产元数据存储在冷层中。

{keyPrefix}/asset_metadata/asset_{assetId}.ndjson

冷层中资产元数据的每个文件路径都包含以下组件。

路径组件 描述

keyPrefix

您在的存储配置中指定的 Amazon Amazon IoT SiteWise S3 前缀。Amazon S3 使用前缀作为存储桶中的文件夹名称。

asset_metadata

存储资产元数据的文件夹。asset_metadata 文件夹保存在前缀文件夹中。

fileName

文件名使用下划线 (_) 字符作为分隔符来分隔以下内容:

  • asset 前缀。

  • assetId 值。

该文件以 .ndjson 格式保存。

例 较冷层中资产元数据的文件路径

keyPrefix/asset_metadata/asset_35901915-d476-4dca-8637-d9ed4df939ed.ndjson

字段

导出到冷层的资产元数据的模式包含以下字段。

字段名称 描述

assetId

资产的 ID。

assetName

资产的名称。

assetExternalId

资产的外部 ID。

assetModelId

用于创建该资产的资产模型的 ID。

assetModelName

资产模型的名称。

assetModelExternalId

资产模型的外部 ID。

assetPropertyId

资产属性的 ID。

assetPropertyName

资产属性的名称。

assetPropertyExternalId

资产属性的外部 ID。

assetPropertyDataType

资产属性的数据类型。

assetPropertyUnit

资产属性的单位(例如,NewtonsRPM)。

assetPropertyAlias

标识资产属性的别名,例如 OPC-UA 服务器数据流路径(例如,/company/windfarm/3/turbine/7/temperature)。

timeSeriesId

标识来自设备、指标或转换的时序数据的 ID。您可以使用此字段在查询中联接原始数据和资产元数据。

timeSeriesBucket

介于 00 和 ff 之间的十六进制数。此数字派生自 timeSeriesId。此分区用于在 Amazon IoT SiteWise 写入冷层时增加吞吐量。当您使用 Amazon Athena 运行查询时,您可以使用该分区进行精细分区以提高查询性能。

原始数据的文件路径中的 timeSeriesBucketseriesBucket 是相同的数字。

assetCompositeModelId

复合模型的 ID。

assetCompositeModelExternalId

复合模型的外部 ID。

assetCompositeModelDescription

复合模型的描述。

assetCompositeModelName

复合模型的名称。

assetCompositeModelType

复合模型的类型。对于警报复合模型,这种类型是 AWS/ALARM

assetCreationDate

资产的创建日期,以 Unix 纪元时间为单位。

assetLastUpdateDate

资产上次更新的日期,以 Unix 纪元为单位。

assetStatusErrorCode

错误代码。

assetStatusErrorMessage

错误消息。

assetStatusState

资产的当前状态。

例 冷层中的资产元数据
{"assetId":"7020c8e2-e6db-40fa-9845-ed0dddd4c77d","assetExternalId":null,"assetName":"Wind Turbine Asset 2","assetModelId":"ec1d924f-f07d-444f-b072-e2994c165d35","assetModelExternalId":null,"assetModelName":"Wind Turbine Asset Model","assetPropertyId":"95e63da7-d34e-43e1-bc6f-1b490154b07a","assetPropertyExternalId":null,"assetPropertyName":"Temperature","assetPropertyDataType":"DOUBLE","assetPropertyUnit":"Celsius","assetPropertyAlias":"USA/Washington/Seattle/WT2/temp","timeSeriesId":"7020c8e2-e6db-40fa-9845-ed0dddd4c77d_95e63da7-d34e-43e1-bc6f-1b490154b07a","timeSeriesBucket":"f6","assetArn":null,"assetCompositeModelDescription":null,"assetCompositeModelName":null,"assetCompositeModelType":null,"assetCompositeModelId":null,"assetCompositeModelExternalId":null,"assetCreationDate":1619466323,"assetLastUpdateDate":1623859856,"assetStatusErrorCode":null,"assetStatusErrorMessage":null,"assetStatusState":"ACTIVE"} {"assetId":"7020c8e2-e6db-40fa-9845-ed0dddd4c77d","assetExternalId":null,"assetName":"Wind Turbine Asset 2","assetModelId":"ec1d924f-f07d-444f-b072-e2994c165d35","assetModelExternalId":null,"assetModelName":"Wind Turbine Asset Model","assetPropertyId":"c706d54d-4c11-42dc-9a01-63662fc697b4","assetPropertyExternalId":null,"assetPropertyName":"Pressure","assetPropertyDataType":"DOUBLE","assetPropertyUnit":"KiloPascal","assetPropertyAlias":"USA/Washington/Seattle/WT2/pressure","timeSeriesId":"7020c8e2-e6db-40fa-9845-ed0dddd4c77d_c706d54d-4c11-42dc-9a01-63662fc697b4","timeSeriesBucket":"1e","assetArn":null,"assetCompositeModelDescription":null,"assetCompositeModelName":null,"assetCompositeModelType":null,"assetCompositeModelId":null,"assetCompositeModelExternalId":null,"assetCreationDate":1619466323,"assetLastUpdateDate":1623859856,"assetStatusErrorCode":null,"assetStatusErrorMessage":null,"assetStatusState":"ACTIVE"} {"assetId":"7020c8e2-e6db-40fa-9845-ed0dddd4c77d","assetExternalId":null,"assetName":"Wind Turbine Asset 2","assetModelId":"ec1d924f-f07d-444f-b072-e2994c165d35","assetModelExternalId":null,"assetModelName":"Wind Turbine Asset Model","assetPropertyId":"8cf1162f-dead-4fbe-b468-c8e24cde9f50","assetPropertyExternalId":null,"assetPropertyName":"Max Temperature","assetPropertyDataType":"DOUBLE","assetPropertyUnit":null,"assetPropertyAlias":null,"timeSeriesId":"7020c8e2-e6db-40fa-9845-ed0dddd4c77d_8cf1162f-dead-4fbe-b468-c8e24cde9f50","timeSeriesBucket":"d7","assetArn":null,"assetCompositeModelDescription":null,"assetCompositeModelName":null,"assetCompositeModelType":null,"assetCompositeModelId":null,"assetCompositeModelExternalId":null,"assetCreationDate":1619466323,"assetLastUpdateDate":1623859856,"assetStatusErrorCode":null,"assetStatusErrorMessage":null,"assetStatusState":"ACTIVE"} {"assetId":"3a5f2a22-3b37-4332-9c1c-404ea1d73fab","assetExternalId":null,"assetName":"BatchAssetDouble1","assetModelId":"814bdfd8-24db-4a33-8d9b-ebc75e75e827","assetModelExternalId":null,"assetModelName":"FlashTestAssetModelDouble","assetPropertyId":"6b7e1532-175b-4c02-b410-ab401a9176ed","assetPropertyExternalId":null,"assetPropertyName":"measurementProperty","assetPropertyDataType":"DOUBLE","assetPropertyUnit":"u","assetPropertyAlias":null,"timeSeriesId":"ab19f4fa-7e7b-4247-ae89-ff316f5ff8aa","timeSeriesBucket":"af","assetArn":null,"assetCompositeModelDescription":null,"assetCompositeModelName":null,"assetCompositeModelType":null,"assetCompositeModelId":null,"assetCompositeModelExternalId":null,"assetCreationDate":1646960106,"assetLastUpdateDate":1646960106,"assetStatusErrorCode":null,"assetStatusErrorMessage":null,"assetStatusState":"ACTIVE"}

资产层次结构元数据

当您首次启用 Amazon IoT SiteWise 在冷层中保存数据时,资产层次结构元数据将导出到冷层。初始配置完成后,只有在对资产模型或资产定义进行更改时,才会将资产层次结构元数据 Amazon IoT SiteWise 导出到冷层。资产层次结构元数据以换行符分隔的 JSON (.ndjson) 格式保存在冷层中。

通过调用 DescribeAssetAPI 可以检索层次结构、目标资产或源资产的外部标识符。

文件路径

Amazon IoT SiteWise 使用以下模板将资产层次结构元数据存储在冷层中。

{keyPrefix}/asset_hierarchy_metadata/{parentAssetId}_{hierarchyId}.ndjson

冷层中资产层次结构元数据的每个文件路径都包含以下组件。

路径组件 描述

keyPrefix

您在 Amazon IoT SiteWise 存储配置中指定的 Amazon S3 前缀。Amazon S3 使用前缀作为存储桶中的文件夹名称。

asset_hierarchy_metadata

存储资产层次结构元数据的文件夹。asset_hierarchy_metadata 文件夹保存在前缀文件夹中。

fileName

文件名使用下划线 (_) 字符作为分隔符来分隔以下内容:

  • parentAssetId 值。

  • hierarchyId 值。

该文件以 .ndjson 格式保存。

例 冷层中资产层次结构元数据的文件路径

keyPrefix/asset_hierarchy_metadata/35901915-d476-4dca-8637-d9ed4df939ed_c5b3ced8-589a-48c7-9998-cdccfc9747a0.ndjson

字段

导出到冷层的资产层次结构元数据的架构包含以下字段。

字段名称 描述

sourceAssetId

此资产关系中源资产的 ID。

targetAssetId

此资产关系中目标资产的 ID。

hierarchyId

层次结构的 ID。

associationType

此资产关系的关联类型。

值必须为 CHILD。目标资产是源资产的子资产。

例 冷层中的资产层次结构元数据
{"sourceAssetId":"80388e72-2284-44fb-9c89-bfbaf0dfedd2","targetAssetId":"2b866c25-0c74-4750-bdf5-b73683c8a2a2","hierarchyId":"bbed9f59-0412-4585-a61d-6044db526aee","associationType":"CHILD"} {"sourceAssetId":"80388e72-2284-44fb-9c89-bfbaf0dfedd2","targetAssetId":"6b51246e-984d-460d-bc0b-470ea47d1e31","hierarchyId":"bbed9f59-0412-4585-a61d-6044db526aee","associationType":"CHILD"}
若要在冷层中查看您的数据
  1. 导航到 Amazon S3 控制台

  2. 在导航窗格中,选择存储桶,然后选择您的 Amazon S3 存储桶。

  3. 导航到包含原始数据、资产元数据或资产层次结构元数据的文件夹。

  4. 选择文件,然后从操作中选择下载

存储数据索引文件

Amazon IoT SiteWise 使用这些文件来优化数据查询性能。它们显示在您的 Amazon S3 存储桶中,但您不需要使用它们。

文件路径

Amazon IoT SiteWise 使用以下模板将数据索引文件存储在冷层中。

keyPrefix/index/series=timeseriesId/startYear=startYear/startMonth=startMonth/startDay=startDay/index_timeseriesId_startTimestamp_quality
例 数据存储索引文件的文件路径

keyPrefix/index/series=7020c8e2-e6db-40fa-9845-ed0dddd4c77d_95e63da7-d34e-43e1-bc6f-1b490154b07a/startYear=2022/startMonth=02/startDay=03/index_7020c8e2-e6db-40fa-9845-ed0dddd4c77d_95e63da7-d34e-43e1-bc6f-1b490154b07a_1643846400_GOOD