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

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

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

Amazon IoT SiteWise通过复制时间序列将数据存储在冷层中,包括测量、指标、转换和聚合以及资产和资产模型定义。以下内容描述了发送到冷层的数据的文件路径和架构。

设备数据(测量)

Amazon IoT SiteWise每六小时将设备数据(测量值)导出到冷层。原始数据以 A pache 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每六小时导出一次指标、转换和聚合到冷层。指标、转换和聚合以 A pache 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 S3 前缀。Amazon IoT SiteWiseAmazon 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

层次结构。

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. 在导航窗格中,选择 S3 ,然后选择您的 Amazon S3 存储桶,然后选择您的 Amazon

  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