feat(metabase): auto-commit con 17 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
---
|
||||
name: metabase_smartscalar_anothercolumn_viz
|
||||
kind: function
|
||||
lang: py
|
||||
domain: infra
|
||||
version: "1.0.0"
|
||||
purity: pure
|
||||
signature: "def metabase_smartscalar_anothercolumn_viz(*, main_column: str, compare_column: str, label: str = 'vs N-1', number_style: str = 'percent', decimals: int = 2, currency: str = 'EUR', comparison_id: str = 'cmp_n1') -> dict"
|
||||
description: "Construye el dict completo de visualization_settings para una card display=smartscalar con comparacion tipo anotherColumn (misma fila, columna diferente). Incluye scalar.field, scalar.comparisons y column_settings para ambas columnas con el mismo formato. Internamente reutiliza metabase_viz_column_format."
|
||||
tags: [metabase, visualization, smartscalar, anothercolumn, scalar, comparison, pure, builder]
|
||||
uses_functions:
|
||||
- metabase_viz_column_format_py_infra
|
||||
uses_types: []
|
||||
returns: []
|
||||
returns_optional: false
|
||||
error_type: ""
|
||||
imports: []
|
||||
params:
|
||||
- name: main_column
|
||||
desc: "Nombre de la columna mostrada como valor principal en el smartscalar. Debe coincidir exactamente con el nombre de columna en el resultado del query"
|
||||
- name: compare_column
|
||||
desc: "Nombre de la columna usada como valor de comparacion en la misma fila del query"
|
||||
- name: label
|
||||
desc: "Etiqueta mostrada bajo el delta de comparacion. Default 'vs N-1'"
|
||||
- name: number_style
|
||||
desc: "Estilo de formato para ambas columnas: 'percent', 'currency', 'decimal', '' (default Metabase). Default 'percent'"
|
||||
- name: decimals
|
||||
desc: "Numero de decimales para ambas columnas. Default 2"
|
||||
- name: currency
|
||||
desc: "Codigo ISO de moneda ('EUR', 'USD', ...). Solo relevante cuando number_style='currency'. Default 'EUR'"
|
||||
- name: comparison_id
|
||||
desc: "Identificador interno de la comparacion dentro del array scalar.comparisons. Default 'cmp_n1'"
|
||||
output: "Dict con visualization_settings completo: {'scalar.field': str, 'scalar.comparisons': [{'id', 'type': 'anotherColumn', 'column', 'label'}], 'column_settings': {key_main: fmt, key_compare: fmt}}. Listo para usar como visualization_settings en el payload de la card."
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
file_path: "python/functions/metabase/metabase_smartscalar_anothercolumn_viz.py"
|
||||
---
|
||||
|
||||
## Por que existe
|
||||
|
||||
El patron ``anotherColumn`` de Metabase smartscalar muestra un delta entre
|
||||
dos columnas de la misma fila (en lugar del patron ``previousValue`` que
|
||||
usa dos filas temporales). Util cuando el query ya calcula el valor actual
|
||||
y el valor comparativo directamente (tipico en queries con CTEs que calculan
|
||||
n-1 en una sola pasada).
|
||||
|
||||
La combinacion ``scalar.field`` + ``scalar.comparisons[anotherColumn]`` +
|
||||
``column_settings`` para ambas columnas con formato identico requiere varios
|
||||
campos que Metabase silenciosamente ignora si faltan o estan mal formateados.
|
||||
|
||||
## Ejemplo
|
||||
|
||||
```python
|
||||
from metabase import metabase_smartscalar_anothercolumn_viz, metabase_create_card_raw
|
||||
|
||||
# Smartscalar de margen (porcentaje) vs columna n-1
|
||||
viz = metabase_smartscalar_anothercolumn_viz(
|
||||
main_column="Margen",
|
||||
compare_column="MargenN1",
|
||||
label="vs N-1",
|
||||
number_style="percent",
|
||||
decimals=2,
|
||||
)
|
||||
|
||||
# Smartscalar de venta (moneda) vs columna n-1
|
||||
viz = metabase_smartscalar_anothercolumn_viz(
|
||||
main_column="Venta",
|
||||
compare_column="VentaN1",
|
||||
label="vs ano anterior",
|
||||
number_style="currency",
|
||||
decimals=0,
|
||||
currency="EUR",
|
||||
)
|
||||
|
||||
# Integrar en un payload completo de card
|
||||
payload = {
|
||||
"name": "Margen actual",
|
||||
"type": "question",
|
||||
"display": "smartscalar",
|
||||
"dataset_query": { ... },
|
||||
"visualization_settings": viz,
|
||||
}
|
||||
card = metabase_create_card_raw(client, payload)
|
||||
```
|
||||
|
||||
## Notas
|
||||
|
||||
- Aplica el mismo formato (``number_style``, ``decimals``, ``currency``) a
|
||||
ambas columnas (``main_column`` y ``compare_column``). Si necesitas formatos
|
||||
distintos, construye ``column_settings`` manualmente con
|
||||
``metabase_viz_column_format`` y monta el dict a mano.
|
||||
- Cuando ``number_style="currency"`` se agrega automaticamente
|
||||
``currency_in_header=False`` en ambas columnas.
|
||||
- El ``comparison_id`` solo necesita ser unico dentro del array
|
||||
``scalar.comparisons`` de esa card — no es un ID global.
|
||||
- Para el patron de 2 filas temporales (``previousValue``) usar
|
||||
``metabase_smartscalar_kpi_payload`` en su lugar.
|
||||
Reference in New Issue
Block a user