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

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

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

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

raw

存储来自设备(测量)的时间序列数据的文件夹。这些区域有:raw文件夹保存在前缀文件夹中。

seriesBucket

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

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

startYear

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

startMonth

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

startDay

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

fileName

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

  • 这些区域有:rawprefix.

  • 这些区域有:timeSeriesId值。

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

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

该文件保存在.avro使用格式化Snappy压缩。

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

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

agg

存储来自指标的时间序列数据的文件夹。这些区域有:agg文件夹保存在前缀文件夹中。

seriesBucket

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

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

startYear

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

startMonth

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

startDay

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

fileName

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

  • 这些区域有:rawprefix.

  • 这些区域有:timeSeriesId值。

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

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

该文件保存在.avro使用格式化Snappy压缩。

例 冷层中指标的文件路径

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

asset_metadata

存储资产元数据的文件夹。这些区域有:asset_metadata文件夹保存在前缀文件夹中。

fileName

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

  • 这些区域有:assetprefix.

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

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

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 S3 前缀Amazon IoT SiteWise存储配置。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