Files
fn_registry/python/functions/metabase/metabase_smartscalar_anothercolumn_viz.md
egutierrez 47fac22230 chore: auto-commit (799 archivos)
- .claude/CLAUDE.md
- .claude/commands/subagentes.md
- .claude/rules/INDEX.md
- .mcp.json
- bash/functions/cybersecurity/analyze_dns.md
- bash/functions/cybersecurity/audit_http_headers.md
- bash/functions/cybersecurity/audit_ssh_config.md
- bash/functions/cybersecurity/check_firewall.md
- bash/functions/cybersecurity/detect_suspicious_users.md
- bash/functions/cybersecurity/encrypt_file.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 00:28:20 +02:00

4.2 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
metabase_smartscalar_anothercolumn_viz function py infra 1.0.0 pure 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 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.
metabase
visualization
smartscalar
anothercolumn
scalar
comparison
pure
builder
pendiente-usar
metabase_viz_column_format_py_infra
false
name desc
main_column 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 desc
compare_column Nombre de la columna usada como valor de comparacion en la misma fila del query
name desc
label Etiqueta mostrada bajo el delta de comparacion. Default 'vs N-1'
name desc
number_style Estilo de formato para ambas columnas: 'percent', 'currency', 'decimal', '' (default Metabase). Default 'percent'
name desc
decimals Numero de decimales para ambas columnas. Default 2
name desc
currency Codigo ISO de moneda ('EUR', 'USD', ...). Solo relevante cuando number_style='currency'. Default 'EUR'
name desc
comparison_id Identificador interno de la comparacion dentro del array scalar.comparisons. Default 'cmp_n1'
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. false
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

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.