🗞 News Personales

📅 5 de junio de 2026

Inteligencia Artificial

Ciencia de Datos

Power BI


💡 DAX del día — RELATEDTABLE

RELATEDTABLE()

Ejemplo:

CantPedidos = COUNTROWS(RELATEDTABLE(Pedidos))

Devuelve la tabla relacionada filtrada por el contexto actual (lado muchos). Útil en columnas calculadas para contar filas relacionadas.


🐍 Python del día — collections.Counter

from collections import Counter Counter(iterable)

Ejemplo:

from collections import Counter
texto = 'abracadabra'
c = Counter(texto)
print(c.most_common(3)) # [('a',5),('b',2),('r',2)]

Cuenta elementos de cualquier iterable. Soporta operaciones aritméticas entre contadores y el método most_common(n).


🗄️ SQL del día — RANK() / DENSE_RANK()

RANK() OVER (ORDER BY col DESC) DENSE_RANK() OVER (ORDER BY col DESC)

Ejemplo:

SELECT nombre, puntaje,
RANK() OVER (ORDER BY puntaje DESC) AS rank_con_huecos,
DENSE_RANK() OVER (ORDER BY puntaje DESC) AS rank_continuo
FROM jugadores;

RANK() deja huecos ante empates (1,1,3). DENSE_RANK() no los deja (1,1,2). Elige según si los huecos tienen sentido en tu contexto de negocio.

📅 4 de junio de 2026

Inteligencia Artificial

Ciencia de Datos

Power BI


💡 DAX del día — RELATED

RELATED()

Ejemplo:

Categoría = RELATED(Productos[Categoría])

Trae un valor de una tabla relacionada (lado 1 de la relación). Solo funciona en columnas calculadas, no en medidas.


🐍 Python del día — f-strings avanzados

f'{valor:formato}' / f'{valor!r}' / f'{valor = }'

Ejemplo:

pi = 3.14159
print(f'{pi:.2f}') # 3.14
print(f'{pi = }') # pi = 3.14159
print(f'{"hola"!r}') # 'hola'

Los f-strings admiten formato numérico, repr (!r), str (!s) y el modo debug (variable = ) que muestra nombre y valor (Python 3.8+).


🗄️ SQL del día — ROW_NUMBER()

ROW_NUMBER() OVER (PARTITION BY col ORDER BY col)

Ejemplo:

SELECT nombre, ventas,
ROW_NUMBER() OVER (PARTITION BY region ORDER BY ventas DESC) AS ranking
FROM vendedores;

Asigna un número único y consecutivo por fila dentro de cada partición. A diferencia de RANK, no deja huecos ante empates. Ideal para obtener el top 1 por grupo.

📅 3 de junio de 2026

Inteligencia Artificial

Ciencia de Datos

Power BI


💡 DAX del día — ALLEXCEPT

ALLEXCEPT(, , )

Ejemplo:

CALCULATE(SUM(Ventas[Monto]), ALLEXCEPT(Ventas, Ventas[Vendedor]))

Elimina todos los filtros de la tabla excepto los de las columnas indicadas. Útil para mantener un contexto parcial.


🐍 Python del día — Walrus operator :=

variable := expresión

Ejemplo:

import re
if m := re.search(r'\d+', texto):
print('Número encontrado:', m.group())

Asigna y evalúa en la misma expresión (Python 3.8+). Evita calcular un valor dos veces en condiciones o while loops.


🗄️ SQL del día — Alias de columna en ORDER BY

SELECT expresión AS alias FROM tabla ORDER BY alias; -- o por número de columna

Ejemplo:

SELECT region, SUM(monto) AS total_ventas
FROM ventas
GROUP BY region
ORDER BY total_ventas DESC
LIMIT 5;

En la mayoría de los motores puedes ordenar por el alias definido en SELECT (o por número de posición). No puedes usar el alias en WHERE o HAVING, solo en ORDER BY.

📅 2 de junio de 2026

Inteligencia Artificial

Ciencia de Datos

Power BI


💡 DAX del día — ALL

ALL()

Ejemplo:

% Total = DIVIDE(SUM(Ventas[Monto]), CALCULATE(SUM(Ventas[Monto]), ALL(Ventas)))

Elimina todos los filtros de una tabla o columna. Clave para calcular porcentajes sobre el total global.


🐍 Python del día — zip()

for a, b in zip(lista1, lista2):

Ejemplo:

nombres = ['Ana', 'Luis']
notas = [90, 85]
for n, nota in zip(nombres, notas):
print(f'{n}: {nota}')

Itera dos o más iterables en paralelo. Se detiene en el más corto. Usa zip_longest de itertools si necesitas el más largo.


🗄️ SQL del día — HAVING vs WHERE

SELECT col, AGG(col) FROM tabla WHERE condición_filas GROUP BY col HAVING condición_sobre_agregado;

Ejemplo:

SELECT region, COUNT(*) AS clientes
FROM clientes
WHERE activo = 1 -- filtra antes de agrupar
GROUP BY region
HAVING COUNT(*) > 50; -- filtra después de agrupar

WHERE filtra filas individuales antes de la agregación. HAVING filtra grupos después de la agregación. Nunca uses HAVING para condiciones que no involucren funciones de agregación.

📅 1 de junio de 2026

Inteligencia Artificial

Ciencia de Datos

Power BI


💡 DAX del día — FILTER

FILTER(, )

Ejemplo:

CALCULATE(SUM(Ventas[Monto]), FILTER(Ventas, Ventas[Monto] > 1000))

Devuelve una tabla filtrada. Se usa dentro de CALCULATE u otras funciones iteradoras para aplicar condiciones complejas.


🐍 Python del día — enumerate()

for índice, valor in enumerate(iterable, start=0):

Ejemplo:

frutas = ['manzana', 'pera', 'uva']
for i, f in enumerate(frutas, 1):
print(i, f)

Evita usar range(len(...)). Devuelve índice y valor simultáneamente. El parámetro start define el valor inicial del índice.


🗄️ SQL del día — FULL OUTER JOIN

FROM tabla1 FULL OUTER JOIN tabla2 ON condición

Ejemplo:

SELECT COALESCE(a.mes, b.mes) AS mes,
a.ventas, b.objetivo
FROM ventas_reales a
FULL OUTER JOIN objetivos b ON a.mes = b.mes;

Devuelve todas las filas de ambas tablas, con NULL donde no hay coincidencia. Útil para comparar dos conjuntos y encontrar lo que existe en uno pero no en el otro.

📅 31 de mayo de 2026

Inteligencia Artificial

Ciencia de Datos

Power BI


💡 DAX del día — SUMX

SUMX(, )

Ejemplo:

Total = SUMX(Ventas, Ventas[Cantidad] * Ventas[PrecioUnit])

Itera fila por fila en una tabla y acumula el resultado. Ideal cuando el cálculo necesita operar columna a columna antes de sumar.


🐍 Python del día — Dict comprehension

{clave: valor for item in iterable if condición}

Ejemplo:

cuadrados = {x: x**2 for x in range(1, 6)}
# {1:1, 2:4, 3:9, 4:16, 5:25}

Construye diccionarios de forma concisa. Ideal para transformar listas en mapas clave-valor.


🗄️ SQL del día — Subconsulta correlacionada

SELECT col FROM tabla_ext WHERE col operador ( SELECT AGG(col) FROM tabla_int WHERE tabla_int.clave = tabla_ext.clave );

Ejemplo:

-- Empleados que ganan más que el promedio de su departamento
SELECT nombre, salario, depto
FROM empleados e1
WHERE salario > (
SELECT AVG(salario) FROM empleados e2
WHERE e2.depto = e1.depto
);

Subconsulta que referencia la tabla externa. Se ejecuta una vez por fila — puede ser lenta en tablas grandes. Considera reemplazarla por JOIN con CTE cuando el rendimiento importa.

📅 30 de mayo de 2026

Inteligencia Artificial

Ciencia de Datos

Power BI


💡 DAX del día — CALCULATE

CALCULATE(, , )

Ejemplo:

Ventas_USA = CALCULATE(SUM(Ventas[Monto]), Clientes[País] = "USA")

La función más poderosa de DAX. Evalúa una expresión modificando el contexto de filtro activo. Casi toda medida compleja la usa.


🐍 Python del día — List comprehension

[expresión for item in iterable if condición]

Ejemplo:

pares = [x**2 for x in range(20) if x % 2 == 0]

Crea listas en una sola línea. Más rápido y legible que un for + append. La condición al final es opcional.


🗄️ SQL del día — JSON_VALUE / JSON_QUERY

JSON_VALUE(columna_json, '$.clave') JSON_QUERY(columna_json, '$.objeto')

Ejemplo:

-- SQL Server
SELECT JSON_VALUE(payload, '$.nombre') AS nombre,
JSON_VALUE(payload, '$.edad') AS edad
FROM eventos
WHERE JSON_VALUE(payload, '$.tipo') = 'registro';

JSON_VALUE extrae un valor escalar del JSON. JSON_QUERY extrae un objeto o array. Permiten consultar columnas de tipo JSON/NVARCHAR con formato JSON sin deserializar en la app.

📅 29 de mayo de 2026

Inteligencia Artificial

Ciencia de Datos

Power BI


💡 DAX del día — KEEPFILTERS

KEEPFILTERS()

Ejemplo:

CALCULATE([TotalVentas], KEEPFILTERS(Productos[Categoría] = "Electrónica"))

Aplica un filtro adicional sin reemplazar el filtro existente en la misma columna. Combina el filtro del visual con el de la medida.


🐍 Python del día — zip() para transponer matrices

transpuesta = list(zip(*matriz))

Ejemplo:

matriz = [[1,2,3],[4,5,6],[7,8,9]]
transpuesta = list(zip(*matriz))
# [(1,4,7), (2,5,8), (3,6,9)]

El operador * desempaqueta la lista de listas y zip las entrelaza columna a columna. Truco clásico para transponer sin NumPy en matrices pequeñas.


🗄️ SQL del día — Índices — cuándo y para qué

CREATE INDEX idx_nombre ON tabla (columna); CREATE INDEX idx_comp ON tabla (col1, col2);

Ejemplo:

-- Índice compuesto: el orden importa
-- (region, fecha) acelera filtros por region o region+fecha,
-- pero NO filtros solo por fecha
CREATE INDEX idx_ventas_reg_fecha ON ventas (region, fecha);

Un índice acelera SELECT a costa de INSERT/UPDATE/DELETE más lentos. Crear en columnas usadas en WHERE, JOIN ON y ORDER BY. El orden en índices compuestos es crucial.

📅 28 de mayo de 2026

Inteligencia Artificial

Ciencia de Datos

Power BI


💡 DAX del día — EARLIER

EARLIER(, [número])

Ejemplo:

RankVentas = COUNTROWS(FILTER(Ventas, Ventas[Monto] > EARLIER(Ventas[Monto]))) + 1

Accede al valor de la columna en un contexto de fila externo. Usado en columnas calculadas con iteraciones anidadas; VAR suele ser preferible.


🐍 Python del día — __slots__

class MiClase: __slots__ = ('attr1', 'attr2')

Ejemplo:

class Punto:
__slots__ = ('x', 'y')
def __init__(self, x, y):
self.x = x
self.y = y
# Reduce uso de memoria hasta 50% en clases con muchas instancias

Reemplaza el __dict__ de instancia por un array fijo. Reduce consumo de memoria y acelera el acceso a atributos. Impide agregar atributos no declarados.


🗄️ SQL del día — EXPLAIN / EXPLAIN ANALYZE

EXPLAIN SELECT ...; EXPLAIN ANALYZE SELECT ...; -- PostgreSQL: ejecuta y mide

Ejemplo:

EXPLAIN ANALYZE
SELECT * FROM ventas v
JOIN clientes c ON v.id_cliente = c.id
WHERE v.fecha >= '2026-01-01';

Muestra el plan de ejecución de la query. Identifica table scans costosos, joins ineficientes y columnas que necesitan índice. El primer paso al optimizar una consulta lenta.

📅 27 de mayo de 2026

Inteligencia Artificial

Ciencia de Datos

Power BI


💡 DAX del día — USERELATIONSHIP

USERELATIONSHIP(, )

Ejemplo:

Ventas x FechaEnvío = CALCULATE([TotalVentas], USERELATIONSHIP(Ventas[FechaEnvío], Calendario[Fecha]))

Activa una relación inactiva temporalmente dentro de CALCULATE. Esencial cuando el modelo tiene múltiples relaciones entre tablas.


🐍 Python del día — operator.itemgetter / attrgetter

from operator import itemgetter, attrgetter

Ejemplo:

from operator import itemgetter
datos = [{'nombre':'Ana','nota':90}, {'nombre':'Luis','nota':85}]
ordena = sorted(datos, key=itemgetter('nota'), reverse=True)

Alternativa más rápida a lambda para extraer claves o atributos. itemgetter funciona con dicts y tuplas; attrgetter con objetos. Más eficiente que lambda en ordenamientos masivos.


🗄️ SQL del día — GROUP BY con ROLLUP

GROUP BY ROLLUP(col1, col2, ...)

Ejemplo:

SELECT region, producto, SUM(ventas)
FROM ventas
GROUP BY ROLLUP(region, producto);
-- Incluye subtotales por región y total general

Genera subtotales automáticos para cada nivel de agrupación, más un total general. CUBE genera todas las combinaciones posibles. GROUPING() identifica las filas de totales.

📅 26 de mayo de 2026

Inteligencia Artificial

Ciencia de Datos

Power BI


💡 DAX del día — VAR ... RETURN

VAR = RETURN

Ejemplo:

Margen = VAR Venta = SUM(Ventas[Monto])
VAR Costo = SUM(Costos[Monto])
RETURN DIVIDE(Venta - Costo, Venta)

Guarda resultados intermedios en variables. Hace las medidas más legibles, evita recalcular expresiones y facilita el debug.


🐍 Python del día — typing — Type hints

def f(param: Tipo) -> RetornoTipo:

Ejemplo:

from typing import Optional
def buscar(nombre: str, activo: bool = True) -> Optional[dict]:
...

Anotaciones de tipo que mejoran la legibilidad y permiten análisis estático con mypy. No afectan la ejecución. Desde Python 3.10+ usa int | None en vez de Optional[int].


🗄️ SQL del día — GENERATE_SERIES

GENERATE_SERIES(inicio, fin, paso) -- PostgreSQL / BigQuery

Ejemplo:

-- Calendario de fechas del mes
SELECT fecha::date
FROM GENERATE_SERIES('2026-04-01', '2026-04-30', INTERVAL '1 day') AS t(fecha);

Genera una serie de números o fechas. Fundamental para crear tablas de calendario dinámicas o rellenar huecos en series de tiempo. En SQL Server usar un CTE recursivo.

📅 25 de mayo de 2026

Inteligencia Artificial

Ciencia de Datos

Power BI


💡 DAX del día — LOOKUPVALUE

LOOKUPVALUE(, , , ...)

Ejemplo:

Precio = LOOKUPVALUE(Precios[Valor], Precios[Código], Productos[Código])

Busca un valor en una tabla sin necesidad de una relación formal. El equivalente al BUSCARV de Excel en DAX.


🐍 Python del día — Operador de desempaquetado **dict

{**dict1, **dict2, clave: valor}

Ejemplo:

base = {'host': 'localhost', 'port': 5432}
extra = {'db': 'ventas'}
combinado = {**base, **extra, 'timeout': 30}
# {'host':'localhost','port':5432,'db':'ventas','timeout':30}

Fusiona diccionarios en una sola expresión (Python 3.9+ también admite d1 | d2). Las claves duplicadas se resuelven de izquierda a derecha.


🗄️ SQL del día — MERGE (UPSERT)

MERGE INTO destino AS d USING origen AS o ON condición WHEN MATCHED THEN UPDATE ... WHEN NOT MATCHED THEN INSERT ...;

Ejemplo:

MERGE INTO clientes AS d
USING nuevos_clientes AS o ON d.id = o.id
WHEN MATCHED THEN
UPDATE SET d.nombre = o.nombre
WHEN NOT MATCHED THEN
INSERT (id, nombre) VALUES (o.id, o.nombre);

Combina INSERT y UPDATE en una sola operación atómica. Ideal para sincronizar tablas o cargar datos incrementales. Disponible en SQL Server, Oracle, DB2.

📅 24 de mayo de 2026

Inteligencia Artificial

Ciencia de Datos

Power BI


💡 DAX del día — CONCATENATEX

CONCATENATEX(, , [delimitador], [ordenar_por], [orden])

Ejemplo:

Productos = CONCATENATEX(VALUES(Ventas[Producto]), Ventas[Producto], ", ")

Une los valores de una expresión iterando una tabla. Permite construir listas de texto dinámicas dentro de una medida.


🐍 Python del día — dict.get() y dict.setdefault()

d.get(clave, valor_default) d.setdefault(clave, valor_default)

Ejemplo:

config = {'host': 'localhost'}
puerto = config.get('port', 8080) # 8080
lista = config.setdefault('tags', []) # crea la clave si no existe

get() retorna un default sin lanzar KeyError. setdefault() además inserta el default en el dict si la clave no existía — útil para inicializar listas o dicts anidados.


🗄️ SQL del día — UNPIVOT (SQL Server)

SELECT * FROM tabla UNPIVOT ( valor FOR columna IN (col1, col2, col3) ) AS u;

Ejemplo:

SELECT vendedor, mes, ventas
FROM resumen
UNPIVOT (
ventas FOR mes IN (Ene, Feb, Mar)
) AS u;

Operación inversa al PIVOT: transforma columnas en filas. Útil para normalizar tablas anchas antes de análisis. En otros motores usar UNION ALL por columna.

📅 23 de mayo de 2026

Inteligencia Artificial

Ciencia de Datos

Power BI


💡 DAX del día — MAXX / MINX

MAXX(, )

Ejemplo:

VentaMax = MAXX(Ventas, Ventas[Cantidad] * Ventas[PrecioUnit])

Itera una tabla y devuelve el valor máximo (o mínimo con MINX) de la expresión. Útil para el mayor ticket o la venta mínima calculada.


🐍 Python del día — collections.namedtuple

from collections import namedtuple Tipo = namedtuple('Tipo', ['campo1', 'campo2'])

Ejemplo:

from collections import namedtuple
Punto = namedtuple('Punto', ['x', 'y'])
p = Punto(3, 4)
print(p.x, p.y) # 3 4
print(p._asdict()) # {'x':3, 'y':4}

Tupla con campos nombrados. Inmutable, ligera y con acceso por nombre. Ideal como alternativa simple a dataclass cuando no se necesitan métodos.


🗄️ SQL del día — PIVOT (SQL Server)

SELECT * FROM tabla PIVOT ( AGG(valor) FOR columna IN ([v1],[v2],[v3]) ) AS p;

Ejemplo:

SELECT * FROM (
SELECT vendedor, mes, ventas FROM datos
) src
PIVOT (
SUM(ventas) FOR mes IN ([Ene],[Feb],[Mar])
) AS pvt;

Transforma filas en columnas. Requiere conocer los valores de antemano. En PostgreSQL usar crosstab (tablefunc). En otros motores emular con CASE WHEN + GROUP BY.

📅 22 de mayo de 2026

Final Fantasy XIV

Power BI

Inteligencia Artificial

Ciencia de Datos


💡 DAX del día — AVERAGEX

AVERAGEX(, )

Ejemplo:

TicketProm = AVERAGEX(Ventas, Ventas[Cantidad] * Ventas[PrecioUnit])

Calcula el promedio iterando fila por fila. Útil cuando el promedio debe calcularse sobre una expresión, no una columna directa.


🐍 Python del día — match / case (Python 3.10+)

match variable: case patrón1: ... case patrón2: ... case _: ...

Ejemplo:

def clasificar(figura):
match figura:
case {'tipo': 'círculo', 'radio': r}:
return 3.14 * r**2
case {'tipo': 'cuadrado', 'lado': l}:
return l**2
case _:
return 0

Pattern matching estructural. Más potente que un if/elif: puede hacer destructuring de dicts, listas y dataclasses en los patrones.


🗄️ SQL del día — CAST / TRY_CAST

CAST(expresión AS tipo) TRY_CAST(expresión AS tipo) -- SQL Server / Snowflake

Ejemplo:

SELECT CAST('2026-04-26' AS DATE) AS fecha,
TRY_CAST(comentario AS INT) AS numero_o_null
FROM registros;

CAST convierte el tipo y lanza error si falla. TRY_CAST devuelve NULL en vez de error, ideal para datos sucios. En MySQL usar CONVERT(expr, tipo).

📅 21 de mayo de 2026

Final Fantasy XIV

Power BI

Inteligencia Artificial

Ciencia de Datos


💡 DAX del día — COUNTROWS

COUNTROWS()

Ejemplo:

NroPedidos = COUNTROWS(Pedidos)

Cuenta las filas de una tabla. Más eficiente que COUNT o COUNTA para contar registros, especialmente dentro de CALCULATE.


🐍 Python del día — Exception chaining

raise NuevaExcepción('msg') from excepción_original

Ejemplo:

try:
datos = int(input_usuario)
except ValueError as e:
raise TypeError('Se esperaba un número entero') from e

Encadena excepciones preservando el traceback original. Use 'from None' para suprimir el contexto original cuando no es relevante.


🗄️ SQL del día — DATEDIFF / DATE_DIFF

DATEDIFF(parte, fecha_inicio, fecha_fin) -- SQL Server DATE_DIFF(fecha_fin, fecha_inicio, parte) -- BigQuery

Ejemplo:

SELECT nombre,
DATEDIFF(day, fecha_registro, GETDATE()) AS dias_como_cliente
FROM clientes;

Calcula la diferencia entre dos fechas en la unidad indicada (day, month, year, hour). La sintaxis varía por motor; verifica si el resultado es fecha_fin − fecha_inicio.

📅 20 de mayo de 2026

Final Fantasy XIV

Power BI

Inteligencia Artificial

Ciencia de Datos


💡 DAX del día — DISTINCT

DISTINCT()

Ejemplo:

ClientesUnicos = COUNTROWS(DISTINCT(Ventas[IDCliente]))

Similar a VALUES pero excluye la fila BLANK. Preferida para conteos de elementos únicos cuando los blanks no son relevantes.


🐍 Python del día — property decorator

@property def atributo(self): ... @atributo.setter def atributo(self, valor): ...

Ejemplo:

class Temperatura:
def __init__(self, celsius):
self._c = celsius
@property
def fahrenheit(self):
return self._c * 9/5 + 32

t = Temperatura(100)
print(t.fahrenheit) # 212.0

Convierte métodos en atributos calculados. Permite agregar lógica de validación en setters manteniendo la interfaz de acceso simple.


🗄️ SQL del día — DATE_TRUNC / DATETRUNC

DATE_TRUNC('parte', fecha) -- PostgreSQL DATETRUNC('parte', fecha) -- SQL Server 2022+

Ejemplo:

-- Ventas mensuales
SELECT DATE_TRUNC('month', fecha) AS mes,
SUM(monto) AS total
FROM ventas
GROUP BY 1
ORDER BY 1;

Trunca una fecha al inicio del período indicado (month, quarter, year, week, day). La forma más directa de agrupar por período sin convertir a string.