Compartir a través de


Modelo de datos del centro de FinOps

Los centros de FinOps son una plataforma para el análisis de costos, la información y la optimización. Aunque el núcleo de los centros de FinOps es una canalización de datos que ingiere, limpia y normaliza los datos, la eficacia de los centros de FinOps procede del modelo de datos estandarizado basado en la especificación de uso y costo abierto (FOCUS) de FinOps.

En este artículo se explica el modelo de datos de Centros de FinOps, desde carpetas de almacenamiento, tablas y funciones de Azure Data Explorer y tablas y funciones de Power BI, para prepararle para crear sus propias consultas, informes y paneles personalizados. Para obtener la compatibilidad más flexible y escalable, se recomienda implementar centros de FinOps con Data Explorer.


Prerrequisitos

Antes de empezar, debe disponer de lo siguiente:

Este tutorial no incurre en ningún costo; sin embargo, las lecturas de almacenamiento incurren en un cargo nominal y el mantenimiento de un clúster de Data Explorer activo conlleva costos.


Resumen del modelo de datos

Los centros de FinOps abarcan el almacenamiento, Data Factory, el Explorador de datos y Power BI. En función de la configuración, puede interactuar con uno o varios de estos.

Cuando los datos se ingieren en los centros de FinOps, en última instancia llega al contenedor de almacenamiento de ingesta . Cada carpeta de este contenedor se asigna a un conjunto de datos administrado en FinOps Hubs. Cuando se implementa data Explorer, estos nombres de carpeta se asignan a las tablas del contenedor de ingesta . Para obtener más información sobre estas carpetas y el proceso de ingesta de datos general, consulte How data is processed in FinOps hubs (Cómo se procesan los datos en los centros de FinOps). No trataremos estas carpetas ni canalizaciones aquí.

Si configuró un nombre de clúster de Data Explorer como parte de la implementación del centro de FinOps, encontrará una serie de tablas y funciones en las bases de datos de concentrador e ingesta . Las consultas en los paneles de Power BI y Data Explorer amplían estas tablas y funciones. Si usa Power BI para conectarse a los datos de la cuenta de almacenamiento, encontrará un conjunto diferente de funciones y tablas en Power BI.

En las secciones siguientes se describirá:

  • Conjuntos de datos administrados
  • Funciones del Explorador de datos
  • Funciones de Power BI
  • Tablas de Power BI

Conjuntos de datos administrados en Centros de FinOps

Un conjunto de datos administrado es un conjunto de datos lógico respaldado por una carpeta de almacenamiento, una tabla del Explorador de datos, varias funciones del Explorador de datos y una tabla de Power BI. Los conjuntos de datos administrados también proporcionan funciones con versiones en el Explorador de datos que permiten la compatibilidad con versiones anteriores a lo largo del tiempo. Los recursos exactos detrás de un conjunto de datos administrado dependen de si la instancia de FinOps Hub usa el almacenamiento o el Explorador de datos.

Los conjuntos de datos administrados incluyen los siguientes recursos para los centros de FinOps con almacenamiento:

  • Carpeta del contenedor de almacenamiento de ingesta (por ejemplo, ingesta/costos).
  • Una tabla en el almacenamiento de Power BI informa que se asigna a la carpeta de almacenamiento correspondiente.

Los conjuntos de datos administrados también incluyen los siguientes recursos para los centros de FinOps con Data Explorer:

  • Una tabla "sin procesar" en la base de datos de ingesta del Explorador de datos (por ejemplo, Costs_raw).
  • Función "transform" con versión en la base de datos de ingesta del Explorador de datos, que se usa para transformar datos sin procesar (por ejemplo, Costs_transform_v1_0()).
  • Una tabla "final" con versiones en la base de datos de ingesta del Explorador de datos (por ejemplo, Costs_final_v1_0).
  • Una función con versiones en la base de datos del centro de data Explorer (por ejemplo, Costs_v1_0()).
  • Una función sin inversión en la base de datos del centro de Data Explorer (por ejemplo, Costos()).
  • Una tabla de informes de KQL de Power BI que encapsula la función con versiones correspondiente.

Al consultar datos en centros de FinOps, use siempre la base de datos del concentrador y evite trabajar con las tablas y funciones de la base de datos de ingesta . Para más información sobre el proceso de ingesta de datos, consulte How data is processed in FinOps hubs (Cómo se procesan los datos en los centros de FinOps). Use funciones sin inversión para el análisis ad hoc o los informes que no requieren compatibilidad con versiones anteriores a largo plazo. Use las funciones con versiones para informes o sistemas que requieren compatibilidad con versiones anteriores y no quiere verse afectado por las actualizaciones de FinOps Hub, que pueden introducir nuevas versiones focus.

Las funciones sin versión llaman a la función con versión más reciente, que a su vez consulta los datos de todas las tablas finales con versiones de la base de datos de ingesta . Por ejemplo, Costs() llama a Costs_v1_0(), que consulta Costs_final_v1_0 tabla. Cuando FinOps Hubs agrega compatibilidad con una nueva versión de FOCUS, como FOCUS 1.1, todos los datos nuevos se ingerirán en la tabla de Costs_final_v1_1 y la función Costs() llama a Costs_v1_1(), que consulta las tablas Costs_final_v1_0 y Costs_final_v1_1 , transformando los datos FOCUS 1.0 para que se parezcan a FOCUS 1.1. Del mismo modo, la función Costs_v1_0() consulta ambas tablas, transformando los datos FOCUS 1.1 en FOCUS 1.0 para admitir sistemas que no pueden trabajar con columnas más recientes.

Este mismo enfoque se usa para las actualizaciones del conjunto de datos que cambian las columnas dentro de la misma versión de FOCUS. Estas tablas y funciones usarán una versión de r# , como Costs_final_v1_2r3, lo que significará la tercera versión (r3) de la especificación FOCUS 1.2. Este enfoque ayuda a evitar cambios que pueden afectar a las consultas e informes personalizados.

Esto se aplica a todos los conjuntos de datos administrados descritos en las secciones siguientes.


Funciones de Power BI

El almacenamiento de Power BI y los informes de KQL incluyen un subconjunto de las siguientes funciones. Cada una de estas funciones está pensada para ser interna y no garantizamos la compatibilidad con versiones anteriores entre versiones.

  • ftk_DatetimeToJulianDate(Date inputDate)
    Asistente de conversión de fecha y hora.
  • ftk_DemoFilter()
    Filtro usado para minimizar los datos incluidos en los informes de demostración. Se puede personalizar para filtrar las suscripciones de Resource Graph, pero no diseñadas para la escala. Si se necesita el filtrado, cree una solicitud de característica.
  • ftk_ImpalaToJulianDate(datos de objeto)
    Asistente de conversión de fecha y hora.
  • ftk_Metadata(object fileContents, text dateColumn)
    Asistente de análisis de archivos Parquet para admitir la actualización incremental en informes de almacenamiento de Power BI.
  • ftk_ParseResourceId(text resourceId, bool getName)
    Asistente de análisis del identificador de recurso de Azure. Puede analizar el nombre de recurso jerárquico o el tipo de recurso.
  • ftk_ParseResourceName(text resourceId)
    Analiza el nombre de recurso jerárquico de un identificador de recurso de Azure mediante una llamada a la función ftk_ParseResourceId .
  • ftk_ParseResourceType(text resourceId)
    Analiza el tipo de recurso jerárquico de un identificador de recurso de Azure mediante una llamada a la función ftk_ParseResourceId .
  • ftk_Storage([datasetType])
    Lee datos de Azure DataLake Storage. El parámetro datasetType puede ser un conjunto de datos de exportación de Cost Management o un conjunto de datos administrado de FinOps Hubs. Esta función controla las diferencias entre los tipos de exportación de Cost Management y las versiones de Finops Hubs, que pueden usar diferentes jerarquías de carpetas.

Tabla AdvisorRecommendations

La tabla AdvisorRecommendations de informes de Power BI que consulta las recomendaciones de Azure Advisor desde Azure Resource Graph.


arraystring() KQL (función)

La función arraystring(arr: dynamic) del Explorador de datos devuelve una cadena delimitada por comas para los elementos de matriz.

Ejemplos:

  • arraystring(dynamic(['x'])) = "x"
  • arraystring(dynamic([1, 2, 3])) = "1, 2, 3"
  • arraystring(dynamic(['a', 'b', 'c'])) = "a, b, c"

Conjunto de datos administrado de CommitmentDiscountUsage

El conjunto de datos administrado CommitmentDiscountUsage incluye:

  • carpeta de almacenamiento ingestion/CommitmentDiscountUsage.
  • CommitmentDiscountUsage_raw tabla de la base de datos de ingesta .
  • CommitmentDiscountUsage_transform_v1_0() de la base de datos de ingesta .
  • CommitmentDiscountUsage_final_v1_0 tabla de la base de datos de ingesta .
  • CommitmentDiscountUsage_v1_0() función en la base de datos del concentrador .
  • Función CommitmentDiscountUsage() en la base de datos del concentrador .
  • Tabla CommitmentDiscountUsage en informes de Power BI.

La tabla CommitmentDiscountUsage_raw admite los esquemas de exportación de detalles de reserva de Microsoft Cost Management para las cuentas de EA y MCA. Los datos se transforman en un conjunto de datos alineado con FOCUS cuando se ingieren en la tabla final. Este conjunto de datos no admite explícitamente otras nubes.


Tabla de cálculo de cumplimiento

La tabla virtual cálculo de cumplimiento de los informes de Power BI que combina las tablas PolicyAssignments y PolicyStates para resumir el cumplimiento de directivas.


Conjunto de datos administrado de costos

El conjunto de datos administrado de costos incluye:

  • ingesta/carpeta de almacenamiento de costos .
  • Costs_raw tabla de la base de datos de ingesta .
  • Costs_transform_v1_0() de la base de datos de ingesta .
  • Costs_final_v1_0 tabla de la base de datos de ingesta .
  • Costs_v1_0() función en la base de datos del concentrador .
  • Función Costs() en la base de datos del concentrador .
  • Tabla de costos en informes de Power BI.

La tabla Costs_raw admite la ingesta de datos FOCUS 1.0 de Microsoft, Amazon Web Services (AWS), Google Cloud Platform (GCP) y Oracle Cloud Infrastructure (OCI). FinOps Hubs no admite la extracción directa de datos de otras nubes, pero si los datos se agregan al contenedor de almacenamiento de ingesta , se ingerirán con todas las columnas personalizadas.


Función datestring() KQL

La función datestring(start: datetime, [end: datetime]) del Explorador de datos devuelve una fecha o intervalo de fechas con formato (por ejemplo, 1 de enero al 3 de febrero). Las fechas con formato son el valor más corto posible en función de la fecha actual.

Ejemplos:

  • datestring(datetime(2025-01-01)) = "1 de enero"
  • datestring(datetime(2024-01-01)) = "1 de enero de 2024"
  • datestring(datetime(2025-01-01), datetime(2025-01-01)) = "1 de enero"
  • datestring(datetime(2025-01-01), datetime(2025-01-15)) = "1-15 de enero"
  • datestring(datetime(2025-01-01), datetime(2025-01-31)) = "Enero de 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)) = "1 de enero al 15 de febrero"
  • datestring(datetime(2024-07-01), datetime(2025-06-31)) = "Jul 2024-Jun 2025"
  • datestring(datetime(2024-12-16), datetime(2025-01-15)) = "16 de dic, 2024-Jan 15, 2025"
  • datestring(datetime(2025-01-01), datetime(2025-12-31)) = "2025"
  • datestring(datetime(2024-01-01), datetime(2025-12-31)) = "2024-2025"

función delta() KQL

La función delta(oldValue: double, newValue: double) del Explorador de datos compara 2 valores y devuelve el cambio porcentual de oldValue a newValue.

Ejemplos:

  • delta(1, 2.5) = 1,5
  • delta(2, 1.5) = -0,5

función KQL deltastring()

La función deltastring(oldValue: double, newValue: double, [places: int], [useArrows: bool]) del Explorador de datos devuelve la diferencia porcentual entre dos números como una cadena con el número especificado de posiciones decimales. El parámetro useArrows indica si se deben usar flechas para cambios positivos y negativos.

Ejemplos:

  • 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"

función de KQL diffstring()

La función diffstring(oldValue: double, newValue: double, [places: int]) del Explorador de datos devuelve la diferencia entre dos números como una cadena con un signo más o menos y, opcionalmente, lo redondea a un número especificado de lugares.

Ejemplos:

  • plusminus(1.2, 3.4) = "+2.2"
  • plusminus(3.4567, 1.2345, 2) = "-2.22"

Tabla Disks

La tabla Discos de Power BI informa de que consulta discos administrados de máquinas virtuales de Azure desde Azure Resource Graph.


Tabla HubScopes

En Power BI, la tabla HubScopes resume los ámbitos que se han ingerido en centros de FinOps. Esta tabla se deriva del archivo config/settings.json en el almacenamiento.

En el Explorador de datos, la función HubScopes resume los ámbitos identificados en la función HubSettings.


Tabla HubSettings

En Power BI, la tabla HubSettings extrae los valores de configuración del archivo config/settings.json en el almacenamiento de la instancia de FinOps Hub.

En el Explorador de datos, la tabla HubSettingsLog contiene un historial de todas las actualizaciones de archivos settings.json. La función HubSettings() del Explorador de datos devuelve la entrada de configuración más reciente de la tabla HubSettingsLog .


función ifempty() KQL

La función ifempty(value: dynamic, defaultValue: dynamic) del Explorador de datos devuelve defaultValue si el valor especificado está vacío.

Ejemplos:

  • ifempty('', '(empty)') = "(empty)"
  • ifempty(null, '(empty)') = "(empty)"
  • ifempty(123, '(empty)') = 123

Tabla ManagementGroups

La tabla ManagementGroups de informes de Power BI que consulta grupos de administración de Azure desde Azure Resource Graph.


función KQL monthstring()

La función monthstring(date: datetime, [length: int]) del Explorador de datos devuelve el nombre del mes para la fecha especificada (por ejemplo, "Jan" o "Enero"). El parámetro length indica cuántos caracteres debe tener el nombre del mes. De forma predeterminada, se usará el nombre completo.

Ejemplos:

  • monthstring(datetime(2025-01-01)) = "Enero"
  • monthstring(datetime(2025-01-01), 3) = "Jan"
  • monthstring(datetime(2025-01-01), 1) = "J"

Tabla NetworkInterfaces

La tabla NetworkInterfaces en informes de Power BI que consulta las interfaces de red de Azure desde Azure Resource Graph.


Tabla NetworkSecurityGroups

La tabla NetworkSecurityGroups de Informes de Power BI que consulta los grupos de seguridad de red de Azure desde Azure Resource Graph.


función numberstring() KQL

La función numberstring(num: double, [abbrev: bool]) del Explorador de datos convierte un número en una cadena con formato y, opcionalmente, abreviada.

Ejemplos:

  • 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"

función KQL de parse_resourceid()

La función parse_resourceid(resourceId: string) analiza el identificador de recurso de Azure especificado para extraer atributos de recurso como el nombre, el tipo, el grupo de recursos y el identificador de subcuenta.

Ejemplo:

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 (función)

La función percent(table: (Count: long)) de Data Explorer calcula el porcentaje de cada registro en función de una columna Count necesaria.

{ let total = todouble(toscalar(t | summarize sum(Count))); percentOfTotal(t, total) }


función KQL percentOfTotal()

La función percentOfTotal(table: (Count: long), total: long) del Explorador de datos calcula el porcentaje de cada registro en función de una columna Count necesaria. Esta función agrega una nueva columna Percent que divide la columna Count por el valor total especificado.


percentstring KQL (función)

La función percentstring(num: double, [total: double], [places: int]) del Explorador de datos devuelve el número especificado como un porcentaje del total como una cadena, utilizando el número especificado de posiciones decimales. Si no se especifica el parámetro total , 1.0 se usa como el total predeterminado.

Ejemplos:

  • percentstring(0.5) = "50%"
  • percentstring(0.5, 2) = "25%"
  • percentstring(0.5, 3, 2) = "16,67%"

función KQL plusminus()

La función KQL de ***plusminus en el Explorador de datos un inicio de sesión +/- en función de la dirección del número. plusminus(val: string) { let neg = substring(val, 0, 1) == '-'; iff(neg, val, strcat('+', val)) }


Tabla PolicyAssignments

La tabla PolicyAssignments de informes de Power BI que consulta las asignaciones de Azure Policy desde Azure Resource Graph.


Tabla PolicyDefinitions

La tabla PolicyDefinitions en informes de Power BI que consulta las definiciones de Azure Policy desde Azure Resource Graph.


Tabla PolicyStates

La tabla PolicyStates de los informes de Power BI que consulta los estados de Azure Policy desde Azure Resource Graph.


Conjunto de datos administrado de precios

El conjunto de datos administrado Precios incluye:

  • carpeta de almacenamiento ingestion/Prices.
  • Prices_raw tabla de la base de datos de ingesta .
  • Prices_transform_v1_0() de la base de datos de ingesta .
  • Prices_final_v1_0 tabla de la base de datos de ingesta .
  • Prices_v1_0() función en la base de datos del concentrador .
  • Función Prices() en la base de datos del concentrador .
  • Tabla de precios en informes de Power BI.

La tabla Prices_raw admite esquemas de exportación de Microsoft Cost Management para cuentas ea y MCA. Los datos se transforman en un conjunto de datos alineado con FOCUS cuando se ingieren en la tabla final. Este conjunto de datos no admite explícitamente otras nubes.


Tabla PricingUnits

La tabla PricingUnits de Power BI y data Explorer se rellena desde el archivo de datos de apertura de unidades de precios. Esta tabla se usa para normalizar precios.


Tabla PublicIPAddresses

La tabla PublicIPAddresses de los informes de Power BI que consulta las direcciones IP públicas de Azure desde Azure Resource Graph.


Conjunto de datos administrado de recomendaciones

El conjunto de datos administrado Recommendations incluye:

  • carpeta de almacenamiento ingestion/Recommendations.
  • Recommendations_raw tabla de la base de datos de ingesta .
  • Recommendations_transform_v1_0() de la base de datos de ingesta .
  • Recommendations_final_v1_0 tabla de la base de datos de ingesta .
  • Recommendations_v1_0() función en la base de datos del concentrador .
  • Función Recommendations() en la base de datos del concentrador .
  • Tabla de recomendaciones en informes de Power BI.

La tabla Recommendations_raw admite esquemas de exportación de recomendaciones de reserva de Microsoft Cost Management para cuentas ea y MCA. Los datos se transforman en un conjunto de datos alineado con FOCUS cuando se ingieren en la tabla final. Este conjunto de datos no admite explícitamente otras nubes.


Tabla Regions

La tabla Regiones de Power BI y data Explorer se rellena desde el archivo de datos abierto Regiones. Esta tabla se usa para facilitar la limpieza de datos.


Tabla ReservationRecommendations

La tabla ReservationRecommendations de Power BI extrae datos del conjunto de datos administrado recomendaciones, pero filtrada solo a recomendaciones de reserva.


Tabla de recursos

La tabla Resources de Power BI informa de que consulta recursos de Azure desde Azure Resource Graph.


función KQL de resource_type()

La función resource_type(resourceType: string) del Explorador de datos devuelve un objeto con detalles sobre el tipo de recurso de Azure especificado.

Ejemplos:

  • resource_type('Microsoft.Compute/virtualMachines') = { "SingularDisplayName": "Máquina virtual" }
  • resource_type('Microsoft.Billing/billingAccounts') = { "SingularDisplayName": "Billing account" }

Tabla ResourceTypes

La tabla ResourceTypes de Power BI y data Explorer se rellena desde el archivo de datos abiertos tipos de recursos. Esta tabla se usa para facilitar la limpieza de datos.


Tabla SqlDatabases

La tabla SqlDatabases en informes de Power BI que consulta las bases de datos de SQL Azure desde Azure Resource Graph.


Tabla de servicios

La tabla Services del Explorador de datos se rellena desde el archivo de datos abierto Services. Esta tabla se usa para facilitar la limpieza de datos.


Tabla StorageData

La tabla StorageData de Power BI se rellena a partir de todos los archivos detectados en la cuenta de Azure Data Lake Storage. Esta tabla se usa para identificar errores de ingesta de datos en el informe de ingesta de datos.


Tabla StorageErrors

La tabla StorageErrors de Power BI se deriva de la tabla StorageData. Esta tabla se usa para resumir los errores de ingesta de datos en el informe de ingesta de datos.


Tabla Suscripciones

La tabla Suscripciones de Power BI informa de que consulta las suscripciones de Azure desde Azure Resource Graph.


Conjunto de datos administrado de transacciones

El conjunto de datos administrado transacciones incluye:

  • carpeta de almacenamiento de ingesta/transacciones.
  • Transactions_raw tabla de la base de datos de ingesta .
  • Transactions_transform_v1_0() de la base de datos de ingesta .
  • Transactions_final_v1_0 tabla de la base de datos de ingesta .
  • Transactions_v1_0() función en la base de datos del concentrador .
  • Función Transactions() en la base de datos del concentrador .
  • Tabla de transacciones en informes de Power BI.

La tabla Transactions_raw admite los esquemas de exportación de transacciones de reserva de Microsoft Cost Management para cuentas ea y MCA. Los datos se transforman en un conjunto de datos alineado con FOCUS cuando se ingieren en la tabla final. Este conjunto de datos no admite explícitamente otras nubes.


función updown() KQL

La función updown(value: string) del Explorador de datos devuelve una flecha hacia arriba o hacia abajo en función de si el valor especificado es positivo o negativo.

Ejemplos:

  • updown(1) = "↑"
  • updown(-1) = "↓"

Tabla VirtualMachines

La tabla VirtualMachines en informes de Power BI que consulta máquinas virtuales de Azure desde Azure Resource Graph.


Proporcionar comentarios

Déjanos saber cómo lo estamos haciendo con una breve revisión. Usamos estas revisiones para mejorar y expandir herramientas y recursos de FinOps.

Si busca algo específico, vote por una idea existente o cree una idea nueva. Comparta ideas con otros usuarios para obtener más votos. Nos centramos en las ideas con la mayoría de los votos.