如何在 FinOps 中心处理数据

FinOps 中心执行许多数据处理活动,以清理、规范化和优化数据。 以下部分演示了数据如何从成本管理流向中心实例。


范围设置

范围是云资源和帐户层次结构中的一个级别,提供对成本、使用情况和碳数据的访问权限。 对于 FinOps 中心,我们通常建议使用企业协议(EA)计费帐户或Microsoft 客户协议(MCA)计费配置文件,但任何云范围都足以用于基本分析。 主要关注的是是否需要价格和预留数据,因为成本管理仅公开 EA 计费帐户和 MCA 计费配置文件的数据。

FinOps 中心支持通过手动配置成本管理导出或授予 FinOps 中心代表你管理范围的权限来配置范围。 托管范围是在中心存储的 config/settings.json 文件中配置的。 该信息描述了将新的托管范围添加到此文件中时会发生什么情况。 手动配置成本管理导出的非托管范围不需要其他设置。

  1. 更新settings.json文件时,将运行config_SettingsUpdated触发器。
  2. config_ConfigureExports管道为添加的任何新范围创建新的导出。

数据引入

下面描述了 FinOps 中心内的端到端数据引入过程:

  1. (可选)如果使用托管导出:
    1. config_DailyScheduleconfig_MonthlySchedule触发器按各自的计划运行,以启动数据引入。
    2. config_StartExportProcess管道获取正在运行的计划适用的导出。
    3. config_RunExportJobs管道执行每个所选导出。
  2. 成本管理将 原始成本详细信息导出到 msexports 容器。 了解详细信息
  3. 当文件添加到 msexports 容器时,msexports_ExecuteETL 管道会对提取-转换-加载 (ETL) 管道进行排队。
  4. msexports_ETL_ingestion管道将数据转换为 parquet 格式,并使用可缩放的文件结构将其移动到引入容器。 了解详细信息
  5. (可选)如果使用 Azure 数据资源管理器:
    1. 当 manifest.json 文件添加到 ingestion 容器时,ingestion_ExecuteETL 管道会对数据资源管理器引入管道进行排队。
      • 如果在成本管理导出之外导入自定义数据集,请在所有其他文件完全准备就绪后,在目标导入文件夹中创建一个空的 manifest.json 文件(仅当所有文件都准备就绪时,不要在文件仍在上传时添加此文件)。 manifest.json 文件未分析,可以为空。 唯一的目的在于表明所有用于此导入任务的文件已被添加。
    2. ingestion_ETL_dataExplorer 管道将数据引入数据资源管理器中的 {dataset}_raw 表中。
      • 数据集名称是 导入 容器中的第一个文件夹。
      • 所有原始表都位于数据资源管理器中的 引入 数据库中。
    3. 将数据引入到数据资源管理器中的原始表中时,更新策略使用 {dataset}_transform_v1_0() 函数将数据复制到相应的 {dataset}_final_v1_0 表中,以规范化所有数据,使其与 FOCUS 1.0 保持一致。
    4. 引入后,ingestion_ETL_dataExplorer 管道会执行一些清理操作,包括清除最终表中超过数据保留期的数据。
      • 从 0.7 开始,原始表中的数据保留由数据资源管理器自动应用,但最终表中的数据保留仅在运行引入时应用。 如果数据引入停止,则不会清除历史数据。
      • 可以在模板部署期间配置数据保留,也可以在存储中的 配置/settings.json 文件中手动配置数据保留。
  6. 报表和其他工具(例如 Power BI)从数据资源管理器或 ingestion 容器读取数据。
    • 可以从 Hub 数据库读取数据资源管理器中的数据。
      • 使用 {dataset}() 函数充分利用最新的架构。
        • 更新 FinOps 中心实例时可能会引入重大更改,但这对于快速探索非常有用。
      • 使用 {dataset}_v1_0() 函数来使用 FOCUS 1.0 架构。
        • 版本化函数模式不应随时间改变,但如果数据源更改这些值,值可能会更改。
      • 避免使用 Ingestion 数据库进行查询。 虽然没有明确禁止,但应主要被视为暂存和数据准备的内部区域。
    • 可以从 ingestion/<dataset>/<year>/<month>/<scope-path>读取存储中的数据。
      • 应以递归方式从数据集文件夹读取数据,并在需要时增加更多以提高特异性。
      • 每个数据集文件夹中的文件可能具有不同的架构,具体取决于数据源和帐户类型。 如果在其他系统(例如 Microsoft Fabric)中进行引入,请准备好进行数据转换。
      • 由于性能原因,通常不建议从存储中读取。

关于数据资源管理器引入

当数据引入到数据资源管理器中时,Ingestion 数据库中相关的 {dataset}_transform_v1_0() 函数中会进行多项转换。 每个数据集都有一组不同的转换规则,这些规则在以下部分中进行了介绍。

有关所请求更改的列表、正在考虑中的想法以及关于基础成本管理数据集的公开问题,请参阅 问题 #1111。 如果你发现有机会解决任何其他问题或表达你对任何特定问题的支持,请就此问题留下评论。

成本数据转换

支持的数据集:

  • Microsoft FocusCost:1.0r21.01.0-preview(v1)

在设计中考虑了以下数据集,但尚未进行测试。 若要引入这些数据集,请创建一个数据管道(或外部流程),将 Parquet 文件推送到存储中的 ingestion/Costs/yyyy/mm/{scope-path} 文件夹中。 {scope-path} 可以是任何唯一的路径,例如 aws/123gcp/projects/foo。 唯一的要求是确保每个范围都位于单独的文件夹中。 复制外部内容后,还创建一个 manifest.json 文件以触发数据资源管理器引入。

  • AWS FOCUS 1.0
  • GCP FOCUS 1.0
  • OCI FOCUS 1.0

转换:

  1. 使列名与 FOCUS 1.0 一致。
    • 包括将 FOCUS 1.0 预览版转换为 1.0。
  2. 添加 x_IngestionTime 以指示上次更新行的时间。
  3. 添加 x_SourceChanges 以标识行中的数据何时已在中心中发生更改。
  4. 未指定时更新 ProviderNamePublisherName
  5. 添加 x_SourceNamex_SourceProviderx_SourceTypex_SourceVersion 以标识原始引入的数据集。
  6. 基于价目表填充缺失的 ListCostListUnitPriceContractedCostContractedUnitPrice 值。
    • 此过程要求在成本之前导出价格。 这可能会导致当月第一天的价格缺失,直到价格被引入。
  7. 修复由于成本管理中的 bug 导致其设置错误的 ContractedCost
  8. ResourceNamex_ResourceGroupName 换为小写以解决中断分组和筛选的大小写一致性问题。
  9. 根据帐户类型添加 x_BillingAccountAgreement

价格数据转换

支持的数据集:

  • Microsoft PriceSheet:2023-05-01(EA 和 MCA)

转换:

  1. 使列名与 FOCUS 1.0 一致。
    • 包括强制实施 EA 和 MCA 列名一致性。
    • 不会更改基础值,这些值可能因 EA 和 MCA 而异。
  2. x_SkuTerm ISO 持续时间转换成月数以匹配成本明细。
    • 我们正在等待 FOCUS 确定如何定义持续时间格式,然后再将其更改为 ISO 或其他格式。
  3. 将节省计划使用情况的 ContractedUnitPrice 替换为按需等效项。
  4. 将节省计划使用情况的 ListUnitPrice 设置为按需等效项。
  5. SkuPriceIdv2 添加为比当前成本详细信息更准确的 SkuPriceId 值。
  6. 添加 x_IngestionTime 以指示上次更新行的时间。
  7. 添加 x_CommitmentDiscountSpendEligibilityx_CommitmentDiscountUsageEligibility
  8. x_PricingUnitDescription 扩展到 PricingUnitx_PricingBlockSize
  9. 根据帐户类型添加 x_BillingAccountAgreement
  10. x_EffectivePeriodEnd 更改为独占结束日期。
  11. 添加 x_EffectiveUnitPriceDiscountx_ContractedUnitPriceDiscountx_TotalUnitPriceDiscount,以汇总每个 SKU 的可用折扣。
  12. 添加 x_EffectiveUnitPriceDiscountPercentx_ContractedUnitPriceDiscountPercentx_TotalUnitPriceDiscountPercent,以汇总每个 SKU 的折扣百分比。
  13. 添加 x_SourceNamex_SourceProviderx_SourceTypex_SourceVersion 以标识原始引入的数据集。

建议数据转换

支持的数据集:

  • Microsoft ReservationRecommendations:2023-05-01(EA 和 MCA)

转换:

  1. 使列名与 FOCUS 1.0 一致。
    • 包括强制实施 EA 和 MCA 列名一致性。
    • 不会更改基础值,这些值可能因 EA 和 MCA 而异。
  2. 添加 x_SourceNamex_SourceProviderx_SourceTypex_SourceVersion 以标识原始引入的数据集。

事务数据转换

支持的数据集:

  • Microsoft ReservationTransactions:2023-05-01(EA 和 MCA)

转换:

  1. 使列名与 FOCUS 1.0 一致。
    • 包括强制实施 EA 和 MCA 列名一致性。
    • 不会更改基础值,这些值可能因 EA 和 MCA 而异。
  2. 添加 x_SourceNamex_SourceProviderx_SourceTypex_SourceVersion 以标识原始引入的数据集。

承诺折扣使用情况数据转换

支持的数据集:

  • Microsoft ReservationDetails:2023-03-01(EA 和 MCA)

转换:

  1. 使列名与 FOCUS 1.0 一致。
    • 包括强制实施 EA 和 MCA 列名一致性。
    • 不会更改基础值,这些值可能因 EA 和 MCA 而异。
  2. 添加具有资源类型显示名称的 ResourceType 列。
  3. 添加 ServiceNameServiceCategoryx_ServiceModel 列。
  4. 替换“NA”将使 x_CommitmentDiscountNormalizedGroup 为空。
  5. 基于 FOCUS 1.1 添加 x_CommitmentDiscountQuantity

关于 ingestion 容器

FinOps 中心依赖于 ingestion 存储容器中的特定文件夹路径和文件名格式:

ingestion/{dataset}/{date-folder-path}/{scope-id-path}/{ingestion-id}__{original-file-name}.parquet
  • ingestion 是数据管道保存数据的容器。
  • {dataset} 是导出的数据集类型。 如果引入到 Azure 数据资源管理器中,则必须存在一个匹配的、区分大小写的“_raw”表(例如“Costs_raw”)。 FinOps 中心在此版本中支持以下数据集:
    • CommitmentDiscountUsage - 成本管理预留详细信息导出。
    • Costs - FOCUS 成本和使用情况数据。
    • Prices - 成本管理价目表导出。
    • Recommendations - 成本管理预留建议导出。
    • Transactions - 成本管理预留事务导出。
    • 若要引入自定义数据集,请在 Ingestion 数据库中创建匹配的 {dataset}_raw 表和 Parquet 引入映射。
  • {date-folder-path} 可以是一个或多个文件夹,指示应保留多少个引入的数据集。 例子:
    • all(或任何占位符)以不跟踪数据集的历史记录。 每次引入都将替换以前的数据。 在基于存储的 Power BI 报表中不受支持。
    • {yyyy} 为导出数据集 4 位数的年份,表示仅保留每年最新的引入。 在基于存储的 Power BI 报表中不受支持。
    • {yyyy}/{mm} 为导出数据集 4 位数的年份和 2 位数的月份,表示仅保留每月最新的引入。
    • {yyyy}/{mm}/{dd} 为导出数据集 4 位数的年份、2 位数的月份和 2 位数的日,表示保留每天最新的引入。 在基于存储的 Power BI 报表中不受支持。
  • {scope-id-path} 是数据来源范围的完全限定资源 ID。 如果引入非 Azure 数据,建议根据数据范围(例如“aws/{account-id}”、“gcp/{project-name}”、“oci/{component-id}/{component-id}”)使用逻辑层次结构。
  • {ingestion-id} 是导入数据集的唯一 ID。 这可以是 GUID、时间戳或任何值,只要它在引入的数据集的所有文件中保持一致即可。 此值用于删除以前在同一文件夹路径中引入的数据。
  • {original-file-name} 应为原始文件名或其他标识符,以指示文件中数据的来源。 此值仅用于故障排除目的。

完整文件夹路径和引入 ID 都用于确保数据不会在存储或 Azure 数据资源管理器中重复。 原始文件名称将添加到 Azure 数据资源管理器区以进行故障排除,但不由 FinOps 中心跟踪或使用。

如果需要使用中心来监视非 Azure 数据,请使用上述指南将数据转换为 FOCUS 并将其放入 ingestion 容器中。 请注意,这尚未在最新版本中经过明确的测试。 如果遇到任何问题,请提交问题


关于导出

在 FinOps 中心,充分利用成本管理导出的信息来获取成本数据。 成本管理控制 msexports 存储容器中导出数据的文件夹结构。 典型的路径如下所示:

{container}/{path}/{date-range}/{export-name}/{export-time}/{guid}/{file}

FinOps 中心利用清单文件来标识范围、数据集、月份等。中心路径的唯一重要部分是容器,该容器必须 msexports

警告

请勿将数据导出到 ingestion 容器。 导出的 CSV 必须 发布到 msexports 容器,才能由中心引擎处理。

若要引入自定义数据,请将 FOCUS 对齐的 parquet 文件保存在引入容器中,以便 FinOps 工具包 Power BI 报表按预期工作。

导出清单可以使用 API 版本更改。 下面是 API 版本 2023-07-01-preview的示例:

{
  "exportConfig": {
    "exportName": "<export-name>",
    "resourceId": "/<scope>/providers/Microsoft.CostManagement/exports/<export-name>",
    "dataVersion": "<dataset-version>",
    "apiVersion": "<api-version>",
    "type": "<dataset-type>",
    "timeFrame": "OneTime|TheLastMonth|MonthToDate",
    "granularity": "Daily"
  },
  "deliveryConfig": {
    "partitionData": true,
    "dataOverwriteBehavior": "CreateNewReport|OverwritePreviousReport",
    "fileFormat": "Csv",
    "containerUri": "<storage-resource-id>",
    "rootFolderPath": "<path>"
  },
  "runInfo": {
    "executionType": "Scheduled",
    "submittedTime": "2024-02-03T18:33:03.1032074Z",
    "runId": "af754a8e-30fc-4ef3-bfc6-71bd1efb8598",
    "startDate": "2024-01-01T00:00:00",
    "endDate": "2024-01-31T00:00:00"
  },
  "blobs": [
    {
      "blobName": "<path>/<export-name>/<date-range>/<export-time>/<guid>/<file-name>.csv",
      "byteCount": ###
    }
  ]
}

FinOps 中心利用以下属性:

  • eportConfig.resourceId 以标识范围。
  • eportConfig.type 标识数据集类型。
  • eportConfig.dataVersion 标识数据集版本。
  • runInfo.startDate 标识导出的月份。

FinOps 中心支持以下数据集类型、版本和 API 版本:

  • FocusCost:1.0r21.01.0-preview(v1)
  • PriceSheet: 2023-05-01
  • ReservationDetails: 2023-03-01
  • ReservationRecommendations: 2023-05-01
  • ReservationTransactions: 2023-05-01
  • API 版本: 2023-07-01-preview

FinOps 中心 0.6 版

以下部分介绍 FinOps hubs 0.6 中的数据过程。

v0.6 中的范围设置

将新的托管范围添加到中心实例时,将执行以下步骤。 非托管范围(手动配置成本管理导出)不需要在中心进行任何设置。

  1. 更新settings.json文件时,将运行config_SettingsUpdated触发器。
  2. config_ConfigureExports管道为添加的任何新范围创建新的导出。

0.6 版中的数据引入

数据引入可以分为两个部分:

  1. 将数据导出到存储。
  2. 中心处理和引入数据。

对于托管范围,中心执行以下步骤:

  1. config_DailyScheduleconfig_MonthlySchedule触发器按各自的计划运行,以启动数据引入。
  2. config_StartExportProcess管道获取正在运行的计划适用的导出。
  3. config_RunExportJobs管道执行每个所选导出。
  4. 成本管理将 原始成本详细信息导出到 msexports 容器。 了解详细信息
  5. 当文件添加到 msexports 容器时,msexports_ExecuteETL 管道会对提取-转换-加载 (ETL) 管道进行排队。
  6. msexports_ETL_ingestion管道将数据转换为 parquet 格式,并使用可缩放的文件结构将其移动到引入容器。 了解详细信息
  7. Power BI 或其他工具从 引入 容器读取数据。

    注意

    Power BI 对 Azure 数据资源管理器的支持即将在将来的更新中推出。

运行导出后,无论托管还是非托管,中心都执行以下步骤:

  1. 文件添加到存储时,msexports_ExecuteETL 管道将启动提取-转换加载(ETL)过程。
  2. msexports_ETL_ingestion管道将数据转换为 parquet 格式,并使用可缩放的文件结构将其移动到引入容器。 了解详细信息
  3. Power BI 或其他工具从 引入 容器读取数据。

关于 0.6 版中的引入

FinOps 中心依赖于 ingestion 容器中的特定文件夹路径和文件名格式:

ingestion/{dataset}/{date-folder-path}/{scope-id-path}/{ingestion-id}__{original-file-name}.parquet
  • ingestion 是数据管道保存数据的容器。
  • {dataset} 是导出的数据集类型。 如果引入到 Azure 数据资源管理器中,则必须存在一个匹配的、区分大小写的“_raw”表(例如“Costs_raw”)。 FinOps 中心在此版本中支持以下数据集:
    • CommitmentDiscountUsage - 成本管理预留详细信息导出。
    • Costs - FOCUS 成本和使用情况数据。
    • Prices - 成本管理价目表导出。
    • Recommendations - 成本管理预留建议导出。
    • Transactions - 成本管理预留事务导出。
    • 若要引入自定义数据集,请在 Ingestion 数据库中创建匹配的 {dataset}_raw 表和 Parquet 引入映射。
  • {date-folder-path} 可以是一个或多个文件夹,指示应保留多少个引入的数据集。 例子:
    • all(或任何占位符)以不跟踪数据集的历史记录。 每次引入都将替换以前的数据。 在基于存储的 Power BI 报表中不受支持。
    • {yyyy} 为导出数据集 4 位数的年份,表示仅保留每年最新的引入。 在基于存储的 Power BI 报表中不受支持。
    • {yyyy}/{mm} 为导出数据集 4 位数的年份和 2 位数的月份,表示仅保留每月最新的引入。
    • {yyyy}/{mm}/{dd} 为导出数据集 4 位数的年份、2 位数的月份和 2 位数的日,表示保留每天最新的引入。 在基于存储的 Power BI 报表中不受支持。
  • {scope-id-path} 是数据来源范围的完全限定资源 ID。 如果引入非 Azure 数据,建议根据数据范围(例如“aws/{account-id}”、“gcp/{project-name}”、“oci/{component-id}/{component-id}”)使用逻辑层次结构。
  • {ingestion-id} 是引入数据集的唯一 ID。 这可以是一个 GUID、时间戳,或其他任何值,只要它在导入数据集的所有文件中保持统一即可。 此值用于删除以前在同一文件夹路径中引入的数据。
  • {original-file-name} 应为原始文件名或其他标识符,以指示文件中数据的来源。 此值仅用于故障排除目的。

完整文件夹路径和引入 ID 都用于确保数据不会在存储或 Azure 数据资源管理器中重复。 原始文件名称将添加到 Azure 数据资源管理器区以进行故障排除,但不由 FinOps 中心跟踪或使用。

如果需要使用集线器监视非 Azure 数据,请按照上述指南将数据转换为 FOCUS,并将其放入 引入 容器。 请注意,这尚未在最新版本中经过明确的测试。 如果遇到任何问题,请创建问题


关于 0.6 版中的导出

FinOps 中心使用成本管理导出来获取成本数据。 成本管理控制 msexports 容器中导出数据的文件夹结构。 典型的路径如下所示:

{container}/{path}/{date-range}/{export-name}/{export-time}/{guid}/{file}

从 0.4 起,FinOps 中心不依赖于文件路径。 中心利用清单文件来标识范围、数据集、月份等。中心路径的唯一重要部分是容器,该容器必须是 msexports

警告

  • 不要将数据导出到 引入 容器。 导出的 CSV 必须 发布到 msexports 容器,才能由中心引擎处理。
  • 若要引入自定义数据,请将 FOCUS 对齐的 parquet 文件保存在引入容器中,以便 FinOps 工具包 Power BI 报表按预期工作。

导出清单可以使用 API 版本更改。 下面是 API 版本 2023-07-01-preview的示例:

{
  "exportConfig": {
    "exportName": "<export-name>",
    "resourceId": "/<scope>/providers/Microsoft.CostManagement/exports/<export-name>",
    "dataVersion": "<dataset-version>",
    "apiVersion": "<api-version>",
    "type": "<dataset-type>",
    "timeFrame": "OneTime|TheLastMonth|MonthToDate",
    "granularity": "Daily"
  },
  "deliveryConfig": {
    "partitionData": true,
    "dataOverwriteBehavior": "CreateNewReport|OverwritePreviousReport",
    "fileFormat": "Csv",
    "containerUri": "<storage-resource-id>",
    "rootFolderPath": "<path>"
  },
  "runInfo": {
    "executionType": "Scheduled",
    "submittedTime": "2024-02-03T18:33:03.1032074Z",
    "runId": "af754a8e-30fc-4ef3-bfc6-71bd1efb8598",
    "startDate": "2024-01-01T00:00:00",
    "endDate": "2024-01-31T00:00:00"
  },
  "blobs": [
    {
      "blobName": "<path>/<export-name>/<date-range>/<export-time>/<guid>/<file-name>.<file-type>",
      "byteCount": ###
    }
  ]
}

FinOps 中心使用以下属性:

  • exportConfig.resourceId 以标识范围。
  • exportConfig.type 标识数据集类型。
  • exportConfig.dataVersion 标识数据集版本。
  • runInfo.startDate 标识导出的月份。

FinOps 中心支持以下数据集类型、版本和 API 版本:

  • FocusCost: 1.01.0-preview(v1)
  • PriceSheet: 2023-05-01
  • ReservationDetails: 2023-03-01
  • ReservationRecommendations: 2023-05-01
  • ReservationTransactions: 2023-05-01
  • API 版本: 2023-07-01-preview

FinOps 中心 v0.4-0.5

以下信息介绍了如何在 FinOps 中心 v0.4 和 v0.5 中处理数据。

v0.4-0.5 中的范围设置

  1. 更新settings.json文件时,将运行config_SettingsUpdated触发器。
  2. config_ConfigureExports管道为添加的任何新范围创建新的导出。

v0.4-0.5 中的数据引入

对于托管范围:

  1. config_DailyScheduleconfig_MonthlySchedule触发器按各自的计划运行,以启动数据引入。
  2. config_ExportData管道获取正在运行的计划适用的导出。
  3. config_RunExports管道执行每个所选导出。
  4. 成本管理将 原始成本详细信息导出到 msexports 容器。 有关详细信息,请参阅 关于 v04-05 中的导出。

导出完成后,对于托管和非托管作用域:

  1. 文件添加到存储时,msexports_ExecuteETL 管道将启动提取-转换加载(ETL)过程。
  2. msexports_ETL_ingestion管道将数据转换为标准架构,并将采用 parquet 格式的原始数据保存到引入容器。 有关详细信息,请参阅 关于 v04-05 中的引入。
  3. Power BI 从 引入 容器读取成本数据。

关于 v0.4-0.5 中的引入

FinOps 中心依赖于引入容器中的特定文件夹路径:

ingestion/{dataset}/{yyyy}/{mm}/{scope-id}
  • ingestion 是数据管道保存数据的容器。
  • {dataset} 是导出的数据集类型。
  • {month} 是格式化为 yyyyMM的导出数据的年份和月份。
  • {scope-id} 应为数据所来自的范围的完全限定资源 ID。

如果需要使用中心监视非 Azure 数据,请将数据 转换为 FOCUS 并将其放入 引入 容器。 在最新版本中未显式测试此过程。 如果遇到任何问题, 请创建问题

关于 v0.4-0.5 中的导出

FinOps 中心使用成本管理导出来获取成本数据。 成本管理控制 msexports 容器中导出数据的文件夹结构。 典型的路径如下所示:

{container}/{path}/{date-range}/{export-name}/{export-time}/{guid}/{file}

从 0.4 起,FinOps 中心不依赖于文件路径。 中心利用清单文件来标识范围、数据集、月份等。 中心路径的唯一重要部分是容器,该容器必须是 msexports

注意

不要将数据导出到 引入 容器。 导出的 CSV 必须 发布到 msexports 容器,才能由中心引擎处理。

若要引入自定义数据,请将 FOCUS 对齐的 parquet 文件保存在引入容器中,以便 FinOps 工具包 Power BI 报表按预期工作。

导出清单可以使用 API 版本更改。 下面是 API 版本 2023-07-01-preview的示例:

{
  "exportConfig": {
    "exportName": "<export-name>",
    "resourceId": "/<scope>/providers/Microsoft.CostManagement/exports/<export-name>",
    "dataVersion": "<dataset-version>",
    "apiVersion": "<api-version>",
    "type": "<dataset-type>",
    "timeFrame": "OneTime|TheLastMonth|MonthToDate",
    "granularity": "Daily"
  },
  "deliveryConfig": {
    "partitionData": true,
    "dataOverwriteBehavior": "CreateNewReport|OverwritePreviousReport",
    "fileFormat": "Csv",
    "containerUri": "<storage-resource-id>",
    "rootFolderPath": "<path>"
  },
  "runInfo": {
    "executionType": "Scheduled",
    "submittedTime": "2024-02-03T18:33:03.1032074Z",
    "runId": "af754a8e-30fc-4ef3-bfc6-71bd1efb8598",
    "startDate": "2024-01-01T00:00:00",
    "endDate": "2024-01-31T00:00:00"
  },
  "blobs": [
    {
      "blobName": "<path>/<export-name>/<date-range>/<export-time>/<guid>/<file-name>.csv",
      "byteCount": ###
    }
  ]
}

FinOps 中心使用以下属性:

  • exportConfig.resourceId 以标识范围。
  • exportConfig.type 标识数据集类型。
  • exportConfig.dataVersion 标识数据集版本。
  • runInfo.startDate 标识导出的月份。

FinOps 中心支持以下数据集类型、版本和 API 版本:

  • FocusCost: 1.01.0-preview(v1)
  • PriceSheet: 2023-05-01
  • ReservationDetails: 2023-03-01
  • ReservationRecommendations: 2023-05-01
  • ReservationTransactions: 2023-05-01
  • API 版本: 2023-07-01-preview

FinOps hubs v0.2-0.3

以下步骤概述了使用 FinOps 中心版本 0.2-0.3 导出和处理成本数据的过程:

  1. 成本管理将 原始成本详细信息导出到 msexports 容器。
  2. 文件添加到存储时,msexports_ExecuteETL 管道将启动提取-转换加载(ETL)过程。
  3. msexports_ETL_ingestion管道在引入容器中以 parquet 格式保存导出的数据。
  4. Power BI 从 引入 容器读取成本数据。

FinOps hubs 0.2-0.3 使用导出路径来确定导出的范围和月份。 这一点很重要,因为路径的更新可能会中断数据管道。 为了避免此问题,建议更新到 FinOps hubs 0.4。 预期路径应模拟:

msexports/{scope-id}/{export-name}/{date-range}/{export-time}/{guid}/{file}
  • msexports 是导出中指定的容器。
  • {scope-id} 是导出中指定的文件夹路径。

    中心 0.3 及更早版本使用此标识数据的来源范围。 建议使用范围 ID,但可以使用任何值。 示例范围 ID 包括:

    作用域类型 示例值
    订阅 /subscriptions/###
    资源组 /subscriptions/###/resourceGroups/###
    计费帐户 /providers/Microsoft.Billing/billingAccounts/###
    计费配置文件 /providers/Microsoft.Billing/billingAccounts/###/billingProfiles/###
  • {export-name} 是导出的名称。

    中心将忽略此文件夹。

  • {date-range} 是正在导出的日期范围数据。

    中心 0.3 及更早版本使用此标识月份。 此文件夹的格式为 yyyyMMdd-yyyyMMdd. Hubs 0.4 改用清单。

  • {export-time} 是导出运行时的时间戳。

    中心将忽略此情况。 此文件夹的格式为 yyyyMMddHHmm.

  • {guid} 是唯一的 GUID,并不总是存在。

    中心将忽略此情况。 成本管理并不总是包含此文件夹。 是否包含它取决于用于创建导出的 API 版本。

  • {file} 是清单或导出的数据。

    版本 0.3 及更早版本忽略清单文件,仅监视 *.csv 文件。 在将来的版本中,中心将监视清单。


FinOps 中心 v0.1

以下步骤概述了使用 FinOps 中心版本 0.1 导出和处理成本数据的过程:

  1. 成本管理将 原始成本详细信息导出到 msexports 容器。
  2. msexports_transform管道将 parquet 格式的原始数据保存到引入容器。
  3. Power BI 从 引入 容器读取成本数据。