保存在冷层中的文件路径和数据架构 - 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 运行查询时,您可以使用分区进行细粒度分区以提高查询性能。

seriesBucket并且timeSeriesBucket在资产元数据中是相同的数字。

startYear

与时间序列数据相关的专有开始时间的年份。

startMonth

与时间序列数据相关的专有开始时间的月份。

startDay

与时间序列数据相关的专属开始时间当月的某一天。

fileName

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

  • raw缀。

  • timeSeriesId价值。

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

  • 数据的质量。有效值:GOODBAD、和UNCERTAIN。有关更多信息,请参阅《Amazon IoT SiteWise API 参考》中的 AssetPropertyValue

使用 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

double 或者 null

null

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

stringValue

string 或者 null

null

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

integerValue

int 或者 null

null

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

booleanValue

boolean 或者 null

null

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

jsonValue

string 或者 null

null

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

recordVersion

long 或者 null

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 运行查询时,您可以使用分区进行细粒度分区以提高查询性能。

seriesBucket并且timeSeriesBucket在资产元数据中是相同的数字。

startYear

与时间序列数据相关的专有开始时间的年份。

startMonth

与时间序列数据相关的专有开始时间的月份。

startDay

与时间序列数据相关的专属开始时间当月的某一天。

fileName

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

  • raw缀。

  • timeSeriesId价值。

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

  • 数据的质量。有效值:GOODBAD、和UNCERTAIN。有关更多信息,请参阅《Amazon IoT SiteWise API 参考》中的 AssetPropertyValue

使用 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

double 或者 null

null

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

average

double 或者 null

null

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

min

double 或者 null

null

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

max

boolean 或者 null

null

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

sum

string 或者 null

null

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

recordVersion

long 或者 null

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 IoT SiteWise s 存储配置中指定的 Amazon S3 前缀。Amazon S3 存储桶中使用前缀作为文件夹的名称。

asset_metadata

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

fileName

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

  • asset缀。

  • assetId价值。

文件以以下.ndjson格式保存。

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

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

字段

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

字段名称 描述

assetId

资产的 ID。

assetName

资产的名称。

assetModelId

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

assetModelName

资产模型的名称。

assetPropertyId

资产属性的 ID。

assetPropertyName

资产属性的名称。

assetPropertyDataType

资产属性的数据类型。

assetPropertyUnit

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

assetPropertyAlias

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

timeSeriesId

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

timeSeriesBucket

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

timeSeriesBucket并且seriesBucket在原始数据的文件路径中是相同的数字。

assetCompositeModelDescription

复合模型的描述。

assetCompositeModelName

复合模型的名称。

assetCompositeModelType

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

assetCreationDate

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

assetLastUpdateDate

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

assetStatusErrorCode

错误代码。

assetStatusErrorMessage

错误消息。

assetStatusState

资产的当前状态。

例 冷层中的资产元数据
{"assetId":"7020c8e2-e6db-40fa-9845-ed0dddd4c77d","assetName":"Wind Turbine Asset 2","assetModelId":"ec1d924f-f07d-444f-b072-e2994c165d35","assetModelName":"Wind Turbine Asset Model","assetPropertyId":"95e63da7-d34e-43e1-bc6f-1b490154b07a","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,"assetCreationDate":1619466323,"assetLastUpdateDate":1623859856,"assetStatusErrorCode":null,"assetStatusErrorMessage":null,"assetStatusState":"ACTIVE"} {"assetId":"7020c8e2-e6db-40fa-9845-ed0dddd4c77d","assetName":"Wind Turbine Asset 2","assetModelId":"ec1d924f-f07d-444f-b072-e2994c165d35","assetModelName":"Wind Turbine Asset Model","assetPropertyId":"c706d54d-4c11-42dc-9a01-63662fc697b4","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,"assetCreationDate":1619466323,"assetLastUpdateDate":1623859856,"assetStatusErrorCode":null,"assetStatusErrorMessage":null,"assetStatusState":"ACTIVE"} {"assetId":"7020c8e2-e6db-40fa-9845-ed0dddd4c77d","assetName":"Wind Turbine Asset 2","assetModelId":"ec1d924f-f07d-444f-b072-e2994c165d35","assetModelName":"Wind Turbine Asset Model","assetPropertyId":"8cf1162f-dead-4fbe-b468-c8e24cde9f50","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,"assetCreationDate":1619466323,"assetLastUpdateDate":1623859856,"assetStatusErrorCode":null,"assetStatusErrorMessage":null,"assetStatusState":"ACTIVE"}

资产层次结构元数据

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

文件路径

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. 在导航窗格中,选择 Bket,然后选择您的 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