FinOps 中心是一个用于成本分析、见解和优化的平台。 虽然 FinOps 中心的核心是引入、清理和规范化数据的数据管道,但 FinOps 中心的强大功能来自基于 FinOps 开放成本和使用规范(FOCUS)构建的标准化数据模型。
本文介绍 FinOps 中心数据模型(从存储文件夹、Azure 数据资源管理器表和函数以及 Power BI 表和函数)准备生成自己的自定义查询、报表和仪表板。 对于最灵活且可缩放的支持,我们建议使用数据资源管理器部署 FinOps 中心。
先决条件
在开始之前,必须:
- 部署了 FinOps 中心实例(理想情况下使用数据资源管理器)。
- 配置的范围 和引入的数据成功。
- 让数据库查看器访问数据资源管理器 中心 和 引入 数据库。
本演练不会产生任何费用;但是,存储读取会产生名义费用,维护活动数据资源管理器群集会产生费用。
汇总数据模型
FinOps 中心跨越存储、数据工厂、数据资源管理器和 Power BI。 根据你的设置,你可以与其中一个或多个设置进行交互。
将数据引入到 FinOps 中心时,它最终会降落在 引入 存储容器中。 此容器中的每个文件夹映射到 FinOps 中心中的托管数据集。 部署数据资源管理器后,这些文件夹名称将映射到 引入 容器中的表。 有关这些文件夹和总体数据引入过程的详细信息,请参阅 如何在 FinOps 中心处理数据。 此处不会介绍这些文件夹和管道。
如果将数据资源管理器群集名称配置为 FinOps 中心部署的一部分,则会在 中心 中找到多个表和函数,并 引入 数据库。 Power BI 和数据资源管理器仪表板中的查询扩展了这些表和函数。 如果使用 Power BI 连接到存储帐户中的数据,可以在 Power BI 中找到一组不同的函数和表。
以下部分将概述:
- 托管数据集
- 数据资源管理器函数
- Power BI 函数
- Power BI 表
FinOps 中心中的托管数据集
托管数据集 是一个逻辑数据集,由存储文件夹、数据资源管理器表、多个数据资源管理器函数和一个 Power BI 表提供支持。 托管数据集还在数据资源管理器中提供版本控制函数,可随时间推移实现向后兼容性。 托管数据集背后的确切资源取决于 FinOps 中心实例是使用存储还是数据资源管理器。
托管数据集包括以下包含存储的 FinOps 中心资产:
- 引入 存储容器中的文件夹(例如,引入/成本)。
- Power BI 存储报表中映射到相应存储文件夹的表。
托管数据集还包括以下包含数据资源管理器的 FinOps 中心资产:
- 数据资源管理器中的“原始”表 引入 数据库(例如,Costs_raw)。
- 数据资源管理器中的版本控制“转换”函数 引入 数据库,用于转换原始数据(例如,Costs_transform_v1_0())。
- 数据资源管理器中的版本控制“final”表 引入 数据库(例如,Costs_final_v1_0)。
- 数据资源管理器中的版本控制函数 中心 数据库(例如,Costs_v1_0())。
- 数据资源管理器 中心 数据库(例如,成本())中的未反转函数。
- Power BI KQL 报表中的一个表,用于包装相应的版本控制函数。
在 FinOps 中心查询数据时,请始终使用 中心 数据库,避免在 引入 数据库中使用表和函数。 若要详细了解数据引入过程,请参阅 如何在 FinOps 中心处理数据。 对不需要长期向后兼容性的临时分析或报表使用非版本化函数。 对需要向后兼容性的报表或系统使用版本控制函数,并且你不希望受到 FinOps 中心更新的影响,这可能会引入新的 FOCUS 版本。
未转换的函数调用最新版本的函数,后者反过来会查询来自 引入 数据库中所有版本控制的最终表的数据。 例如,Costs() 调用 Costs_v1_0(),该调用查询 Costs_final_v1_0 表。 当 FinOps 中心添加对新的 FOCUS 版本(如 FOCUS 1.1)的支持时,所有新数据都将引入到 Costs_final_v1_1 表中,成本() 函数调用 Costs_v1_1()()查询 Costs_final_v1_0 表和 Costs_final_v1_1 表, 将 FOCUS 1.0 数据转换为 FOCUS 1.1。 同样,Costs_v1_0() 函数查询这两个表,将 FOCUS 1.1 数据转换为 FOCUS 1.0 以支持无法与较新的列配合使用的系统。
此方法用于更改同一 FOCUS 版本中的列的数据集更新。 这些表和函数将使用 r# 版本(如 Costs_final_v1_2r3),表示 FOCUS 1.2 规范的第三个版本(r3)。 此方法有助于避免可能影响自定义查询和报表的更改。
这适用于以下部分中讨论的所有托管数据集。
Power BI 函数
Power BI 存储和 KQL 报表包括以下函数的子集。 其中每个函数都是内部函数,我们不能保证跨版本实现向后兼容性。
-
ftk_DatetimeToJulianDate(Date inputDate)
日期/时间转换帮助程序。 -
ftk_DemoFilter()
用于最小化演示报表中包含的数据的筛选器。 可以自定义以筛选 Resource Graph 订阅,但不能用于缩放。 如果需要筛选,创建功能请求。 -
ftk_ImpalaToJulianDate(对象数据)
日期/时间转换帮助程序。 -
ftk_Metadata(object fileContents、 text dateColumn)
Parquet 文件分析帮助程序,以支持 Power BI 存储报表中的增量刷新。 -
ftk_ParseResourceId(text resourceId, bool getName)
Azure 资源 ID 分析帮助程序。 可以分析分层资源名称或资源类型。 -
ftk_ParseResourceName(text resourceId)
通过调用 ftk_ParseResourceId 函数从 Azure 资源 ID 分析分层资源名称。 -
ftk_ParseResourceType(text resourceId)
通过调用 ftk_ParseResourceId 函数从 Azure 资源 ID 分析分层资源类型。 -
ftk_Storage([datasetType])
从 Azure DataLake 存储读取数据。 datasetType 参数可以是成本管理导出数据集或 FinOps 中心托管数据集。 此函数处理成本管理导出类型和 Finops 中心版本之间的差异,这些版本可以使用不同的文件夹层次结构。
AdvisorRecommendations 表
Power BI 报表中的 AdvisorRecommendations 表,用于从 Azure Resource Graph 查询 Azure 顾问建议。
arraystring() KQL 函数
数据资源管理器中的 arraystring(arr: dynamic) 函数返回数组元素的逗号分隔字符串。
例子:
-
arraystring(dynamic(['x']))
= “x” -
arraystring(dynamic([1, 2, 3]))
= “1, 2, 3” -
arraystring(dynamic(['a', 'b', 'c']))
= “a, b, c”
CommitmentDiscountUsage 托管数据集
CommitmentDiscountUsage 托管数据集包括:
- 引入/CommitmentDiscountUsage 存储文件夹。
- 引入 数据库中的 CommitmentDiscountUsage_raw 表。
- CommitmentDiscountUsage_transform_v1_0()引入 数据库中的函数。
- 引入 数据库中的 CommitmentDiscountUsage_final_v1_0 表。
- 中心 数据库中的 CommitmentDiscountUsage_v1_0() 函数。
- 中心 数据库中的 CommitmentDiscountUsage() 函数。
- 在 Power BI 报表中 CommitmentDiscountUsage 表。
CommitmentDiscountUsage_raw 表支持Microsoft成本管理预留详细信息的 EA 和 MCA 帐户导出架构。 引入到最终表中时,数据将转换为 FOCUS 对齐的数据集。 此数据集不显式支持其他云。
符合性计算表
Power BI 报表中的 符合性计算 虚拟表,该表联接 PolicyAssignments,PolicyStates 表来汇总策略符合性。
成本托管数据集
成本 托管数据集包括:
- 引入/成本 存储文件夹。
- 引入 数据库中的 Costs_raw 表。
- 引入 数据库中的 Costs_transform_v1_0() 函数。
- 引入 数据库中的 Costs_final_v1_0 表。
- 中心 数据库中的 Costs_v1_0() 函数。
- 中心 数据库中的 Costs() 函数。
- 在 Power BI 报表中 成本 表。
Costs_raw 表支持从 Microsoft、Amazon Web Services (AWS)、Google Cloud Platform (GCP) 和 Oracle 云基础结构 (OCI) 引入 FOCUS 1.0 数据。 FinOps 中心不支持直接从其他云拉取数据,但如果将数据添加到 引入 存储容器,则会使用所有自定义列引入数据。
datestring() KQL 函数
数据资源管理器中的 datestring(start: datetime, [end: datetime]) 函数返回格式化日期或日期范围(例如 1 月 1 日至 2 月 3 日)。 格式化日期是基于当前日期的最短可能值。
例子:
-
datestring(datetime(2025-01-01))
= “Jan 1” -
datestring(datetime(2024-01-01))
= “Jan 1, 2024” -
datestring(datetime(2025-01-01), datetime(2025-01-01))
= “Jan 1” -
datestring(datetime(2025-01-01), datetime(2025-01-15))
= “Jan 1-15” -
datestring(datetime(2025-01-01), datetime(2025-01-31))
= “Jan 2025” -
datestring(datetime(2025-01-01), datetime(2025-03-31))
= “Jan-Mar” -
datestring(datetime(2024-01-01), datetime(2024-03-31))
= “Jan-Mar 2024” -
datestring(datetime(2025-01-01), datetime(2025-02-15))
= “Jan 1-Feb 15” -
datestring(datetime(2024-07-01), datetime(2025-06-31))
= “Jul 2024-Jun 2025” -
datestring(datetime(2024-12-16), datetime(2025-01-15))
= “2024 年 12 月 16 日- 2025 年 1 月 15 日” -
datestring(datetime(2025-01-01), datetime(2025-12-31))
= “2025” -
datestring(datetime(2024-01-01), datetime(2025-12-31))
= “2024-2025”
delta() KQL 函数
delta(oldValue: double, newValue: double) 函数在数据资源管理器中比较了 2 个值,并返回从 oldValue 更改为 newValue的百分比。
例子:
-
delta(1, 2.5)
= 1.5 -
delta(2, 1.5)
= -0.5
deltastring() KQL 函数
deltastring(oldValue: double, newValue: double, [places: int], [useArrows: bool]) 函数使用指定的小数位数返回两个数字之间的百分比差作为字符串。 useArrows 参数指示是否对正和负变化使用箭头。
例子:
-
deltastring(1.2, 3.4)
= “+2.2” -
deltastring(3.4567, 1.2345, 2)
= “-2.22” -
deltastring(1.2, 3.4, 1, true)
= “^2.2” -
deltastring(3.4567, 1.2345, 2, true)
= “ー 2.22”
diffstring() KQL 函数
差异字符串(oldValue: double, newValue: double, newValue: double, [places: int]) 函数在数据资源管理器中返回两个数字之间的差异,作为一个带加号或减号的字符串,并选择性地将其舍入到指定的位置数。
例子:
-
plusminus(1.2, 3.4)
= “+2.2” -
plusminus(3.4567, 1.2345, 2)
= “-2.22”
磁盘表
Power BI 报表中的 磁盘 表,用于从 Azure Resource Graph 查询 Azure 虚拟机托管磁盘。
HubScopes 表
在 Power BI 中,HubScopes 表汇总了引入到 FinOps 中心的范围。 此表派生自存储中的 配置/settings.json 文件。
在数据资源管理器中,HubScopes 函数汇总了 HubSettings 函数中标识的范围。
HubSettings 表
在 Power BI 中,HubSettings 表从 FinOps 中心实例存储中的 配置/settings.json 文件中拉取配置设置。
在数据资源管理器中,HubSettingsLog 表保留所有 settings.json 文件更新的历史记录。 数据资源管理器中的 HubSettings() 函数从 HubSettingsLog 表中返回最新设置项。
ifempty() KQL 函数
ifempty(value: dynamic, defaultValue: dynamic) 函数在数据资源管理器中返回 defaultValue(如果指定的 值 为空)。
例子:
-
ifempty('', '(empty)')
= “(empty)” -
ifempty(null, '(empty)')
= “(empty)” -
ifempty(123, '(empty)')
= 123
ManagementGroups 表
Power BI 报表中的 ManagementGroups 表,用于从 Azure Resource Graph 查询 Azure 管理组。
monthstring() KQL 函数
数据资源管理器中的 monthstring(date: datetime, [length: int]) 函数返回指定日期(例如“Jan”或“January”)月份的名称。 长度 参数指示月份名称应包含多少个字符。 默认情况下,将使用全名。
例子:
-
monthstring(datetime(2025-01-01))
= “January” -
monthstring(datetime(2025-01-01), 3)
= “Jan” -
monthstring(datetime(2025-01-01), 1)
= “J”
NetworkInterfaces 表
Power BI 报表中的 NetworkInterfaces 表,用于从 Azure Resource Graph 查询 Azure 网络接口。
NetworkSecurityGroups 表
Power BI 报表中的 NetworkSecurityGroups 表,用于从 Azure Resource Graph 查询 Azure 网络安全组。
numberstring() KQL 函数
numberstring(num: double,[abbrev: bool]) 数据资源管理器中的函数将数字转换为带格式的缩写字符串(可选)。
例子:
-
numberstring(1234)
= “1.23K” -
numberstring(12345)
= “12.3K” -
numberstring(1234567)
= “1.23M” -
numberstring(12345678)
= “12.3” -
numberstring(1234567890)
= “1.23B” -
numberstring(12345678901)
= “12.3B” -
numberstring(1234567890123)
= “1.23T” -
numberstring(12345678901234)
= “12.3T” -
numberstring(1234567, false)
= “1,234,567”
parse_resourceid() KQL 函数
parse_resourceid(resourceId: string) 函数分析指定的 Azure 资源 ID,以提取名称、类型、资源组和子帐户 ID 等资源属性。
示例:
parse_resourceid('/subscriptions/###/resourceGroups/foo/providers/Microsoft.Compute/virtualMachines/bar')
{
"ResourceId": "/subscriptions/###/resourceGroups/foo/providers/Microsoft.Compute/virtualMachines/bar",
"ResourceName": "bar",
"SubAccountId": "###",
"x_ResourceGroupName": "foo",
"x_ResourceProvider": "Microsoft.Compute",
"x_ResourceType": "microsoft.compute/virtualmachines"
}
percent() KQL 函数
数据资源管理器中的 百分比(表:(Count: long) 函数根据所需的 Count 列计算每个记录的百分比。
{ let total = todouble(toscalar(t | summarize sum(Count)]; percentOfTotal(t, total) }
percentOfTotal() KQL 函数
percentOfTotal(表:(Count: long),总计:long) 函数根据所需的 计数 列计算每个记录的百分比。 此函数添加了一个新的 百分比 列,该列将 计数 列除以指定的 总 值。
percentstring KQL 函数
数据资源管理器中的 percentstring(num: double、[total: double]、[places: int]) 函数使用指定的小数位数将指定数字作为字符串 总数 的百分比返回。 如果未指定 总 参数,则 1.0
用作默认总计。
例子:
-
percentstring(0.5)
= “50%” -
percentstring(0.5, 2)
= “25%” -
percentstring(0.5, 3, 2)
= “16.67%”
plusminus() KQL 函数
数据资源管理器中的 ****plusminus KQL 函数基于数字方向的 +/- 符号。 plusminus(val: string) { let neg = substring(val, 0, 1) == '-'; iff(neg, val, strcat('+', val)) }
PolicyAssignments 表
Power BI 报表中的 PolicyAssignments 表,用于查询 Azure Resource Graph 中的 Azure Policy 分配。
PolicyDefinitions 表
Power BI 报表中的 PolicyDefinitions 表,用于从 Azure Resource Graph 查询 Azure Policy 定义。
PolicyStates 表
Power BI 报表中的 PolicyStates 表,用于从 Azure Resource Graph 查询 Azure Policy 状态。
价格托管数据集
价格 托管数据集包括:
- 引入/价格 存储文件夹。
- Prices_raw引入 数据库中的表。
- 引入 数据库中的 Prices_transform_v1_0() 函数。
- 引入 数据库中的 Prices_final_v1_0 表。
- Prices_v1_0()中心 数据库中的函数。
- 中心 数据库中的 Prices() 函数。
- 在 Power BI 报表中 价格 表。
Prices_raw 表支持 EA 和 MCA 帐户Microsoft成本管理导出架构。 引入到最终表中时,数据将转换为 FOCUS 对齐的数据集。 此数据集不显式支持其他云。
PricingUnits 表
Power BI 和数据资源管理器中的 PricingUnits 表从 定价单元填充,打开数据文件。 此表用于规范化 价格。
PublicIPAddresses 表
Power BI 报表中的 PublicIPAddresses 表,用于从 Azure Resource Graph 查询 Azure 公共 IP 地址。
建议托管数据集
托管数据集 建议包括:
- 引入/建议 存储文件夹。
- Recommendations_raw引入 数据库中的表。
- 引入 数据库中的 Recommendations_transform_v1_0() 函数。
- Recommendations_final_v1_0引入 数据库中的表。
- 中心 数据库中的 Recommendations_v1_0() 函数。
- 建议()中心 数据库中的函数。
- Power BI 报表中的 建议 表。
Recommendations_raw 表支持MICROSOFT EA 和 MCA 帐户的成本管理预留建议导出架构。 引入到最终表中时,数据将转换为 FOCUS 对齐的数据集。 此数据集不显式支持其他云。
区域表
Power BI 和数据资源管理器中的 区域 表是从 区域打开数据文件填充的。 此表用于促进数据清理。
ReservationRecommendations 表
Power BI 中的 ReservationRecommendations 表从 建议托管数据集拉取数据,但筛选为仅预留建议。
资源表
Power BI 报表中的 资源 表,用于从 Azure Resource Graph 查询 Azure 资源。
resource_type() KQL 函数
数据资源管理器中的 resource_type(resourceType: string) 函数返回一个对象,其中包含指定 Azure 资源类型的详细信息。
例子:
-
resource_type('Microsoft.Compute/virtualMachines')
= { “SingularDisplayName”: “Virtual machine” } -
resource_type('Microsoft.Billing/billingAccounts')
= { “SingularDisplayName”: “Billing account” }
ResourceTypes 表
Power BI 和数据资源管理器中的 ResourceTypes 表是从 资源类型打开数据文件填充的。 此表用于促进数据清理。
SqlDatabases 表
Power BI 报表中的 SqlDatabases 表,用于从 Azure Resource Graph 查询 SQL Azure 数据库。
服务表
数据资源管理器中的 Services 表是从 Services 打开数据文件填充的。 此表用于促进数据清理。
StorageData 表
Power BI 中的 StorageData 表是从 Azure Data Lake Storage 帐户中发现的所有文件中填充的。 此表用于标识数据引入报告中的数据引入错误。
StorageErrors 表
Power BI 中的 StorageErrors 表派生自 StorageData 表。 此表用于汇总数据引入报告中的数据引入错误。
订阅表
Power BI 报表中的 订阅 表,用于从 Azure Resource Graph 查询 Azure 订阅。
事务托管数据集
托管数据集 事务 包括:
- 引入/事务 存储文件夹。
- 引入 数据库中的 Transactions_raw 表。
- 引入 数据库中的 Transactions_transform_v1_0() 函数。
- 引入 数据库中的 Transactions_final_v1_0 表。
- 中心 数据库中的 Transactions_v1_0() 函数。
- 中心 数据库中的 Transactions() 函数。
- 在 Power BI 报表中 事务 表。
Transactions_raw 表支持MICROSOFT EA 和 MCA 帐户的成本管理预留事务导出架构。 引入到最终表中时,数据将转换为 FOCUS 对齐的数据集。 此数据集不显式支持其他云。
updown() KQL 函数
数据资源管理器中的 updown(value: string) 函数根据指定的值是正值还是负值返回向上或向下箭头。
例子:
-
updown(1)
= “^” -
updown(-1)
= “~”
VirtualMachines 表
Power BI 报表中的 VirtualMachines 表,用于从 Azure Resource Graph 查询 Azure 虚拟机。
提供反馈
让我们了解我们在快速评审中是如何完成的。 我们将使用这些评审来改进和扩展 FinOps 工具和资源。
如果要查找特定内容,请投票寻找现有内容或创建新想法。 与他人分享想法,以获得更多的选票。 我们专注于拥有最多选票的想法。