TABLAS DINAMICAS
FILTROS AVANZADOS
FORMULAS DAX Y FUNCION NARRATIVA INTELIGENTE
ALL
La función ALL en Power
BI (lenguaje DAX) es una función de tabla que devuelve todas las filas de una
tabla o todos los valores de una columna, ignorando cualquier filtro que se
haya aplicado. Se utiliza comúnmente para crear cálculos porcentuales o para
comparar un subconjunto con el total general.
EJEMPLO:
ventas_totales =
CALCULATE(SUM(TRABAJADORES[salarios]), ALL(TRABAJADORES))
ALLSELECTED
Devuelve todas las filas
de una tabla o todos los valores de una columna, ignorando los filtros que se
podrían haber aplicado dentro de la consulta, pero manteniendo los filtros que
proceden de fuera.
La función ALLSELECTED
obtiene el contexto que representa todas las filas y columnas de la consulta, a
la vez que mantiene filtros y contextos explícitos distintos de los filtros de
fila y columna. Esta función se puede usar para obtener totales visuales en
consultas.
ALLSELECTED([<tableName>
| <columnName>[, <columnName>[, <columnName>[,…]]]] )
EJEMPLO:
ventas_totales2 =
CALCULATE(SUM(TRABAJADORES[salarios]), ALLSELECTED(TRABAJADORES[AREA]))
ALLEXCEPT:
La
función ALLEXCEPT en DAX se usa para eliminar todos los filtros de una tabla,
excepto en las columnas específicas que decidas conservar. Es un modificador de
CALCULATE muy útil para calcular porcentajes sobre un total general o aplicar
medidas a nivel de categoría ignorando otros filtros del reporte.
Sintaxis
ALLEXCEPT(Tabla,
Columna1, Columna2...)
Tabla: La tabla base de la que deseas
limpiar los filtros.
Columnas: La columna o columnas cuyos
filtros deseas mantener activos en el contexto.
EJEMPLO:
ventas_totales3 =
CALCULATE(SUM(TRABAJADORES[salarios]),
ALLEXCEPT(TRABAJADORES,TRABAJADORES[AREA]))
DATATABLE
La función DATATABLE en DAX se usa
para crear tablas estáticas directamente en el modelo de datos sin importar
fuentes externas. Es ideal para tablas desconectadas o de parámetros
EJEMPLO:
EJEMPLO:
Sales
Performance =
DATATABLE(
"Region", STRING,
"Product Category", STRING,
"Marketing Spend", INTEGER,
"Revenue", INTEGER,
"Units Sold", INTEGER,
"Customer Satisfaction", DOUBLE,
{
{"North",
"Electronics", 45000, 280000, 1200, 4.5},
{"North",
"Clothing", 32000, 195000, 2800, 4.2},
{"North", "Home &
Garden", 28000, 165000, 1500, 4.0},
{"North", "Sports",
18000, 98000, 900, 4.3},
{"South",
"Electronics", 52000, 310000, 1400, 4.6},
{"South",
"Clothing", 25000, 142000, 2200, 3.9},
{"South", "Home &
Garden", 35000, 210000, 1800, 4.4},
{"South", "Sports",
22000, 125000, 1100, 4.1},
{"East",
"Electronics", 38000, 245000, 1050, 4.3},
{"East",
"Clothing", 42000, 268000, 3500, 4.5},
{"East", "Home &
Garden", 30000, 178000, 1650, 4.2},
{"East", "Sports",
15000, 82000, 780, 3.8},
{"West",
"Electronics", 60000, 385000, 1650, 4.7},
{"West",
"Clothing", 28000, 158000, 2400, 4.0},
{"West", "Home &
Garden", 22000, 130000, 1200, 3.9},
{"West", "Sports",
35000, 195000, 1450, 4.4}
}
)
RELATED
La función RELATED en DAX permite traer
valores desde el lado “uno” de una relación (tabla de dimensiones) hacia la
tabla actual (lado “muchos” o tabla de hechos). Funciona de manera similar a la
función BUSCARV de Excel, requiriendo obligatoriamente un contexto de fila y
una relación previa entre ambas tablas
Sintaxis
RELATED(Columna_Destino)
Puntos clave sobre
RELATED:
EJEMPLO:
salarios =
RELATED(SALARIO[SUELDO])
RANKX
RANKX es una función
iteradora de DAX que devuelve la posición o el rango de una expresión evaluada
frente a una lista de valores. Su uso más común es crear rankings dinámicos en
Power BI.
RANKX(<table>,
<expression>[, <value>[, <order>[, <ties>]]])
EJEMPLO:
Ranking2 =
RANKX(ALL(TRABAJADORES[AREA]),[total],,DESC,Dense)
NARRATIVA INTELIGENTE
Las narrativas
inteligentes de Power BI utilizan inteligencia artificial para generar
automáticamente resúmenes y explicaciones en lenguaje natural sobre sus datos.
Estos textos se actualizan de forma dinámica y responden a los filtros
aplicados en el informe, facilitando la comprensión y la toma de decisiones
para los usuarios
PARA ACTIVARLO PODEMOS IR
A OPCIONES Y ACTIVAR EN OPCIONES DE LOS OBJETOS VISUALES
USO DE ENCABEZADO EN
OBJETOS VISUALES MODERNOS CON OPCIONES DE ESTILO ACTUALIZADO
PARA ACTIVAR TIENES QUE
IR A ICONOS DE OBJETO VISUAL
MATPLOTLIB
es una de las librerías principales de
Python para la visualización de datos, diseñada para crear gráficos estáticos,
interactivos y animados en 2D y 3D. Funciona de forma natural con estructuras
de datos de NumPy y Pandas, permitiendo generar gráficos con calidad para
publicaciones científicas.
Funciones más importantes:
La librería se utiliza principalmente a través de su módulo matplotlib.pyplot.
Aquí tienes las funciones más utilizadas:
Ejercicio 1: grafico de
líneas
import matplotlib.pyplot
as plt
# 1. Datos para los ejes
X e Y
x = [1, 2, 3, 4, 5]
y = [1, 3, 7, 5, 7]
# 2. Crear el gráfico de
línea
plt.plot(x, y, label='Mi
línea', color='blue', marker='o')
# 3. Personalizar el
gráfico
plt.title('Ejemplo Básico
de Gráfico')
plt.xlabel('Eje X')
plt.ylabel('Eje Y')
plt.legend()
plt.grid(True)
# 4. Mostrar el gráfico
en pantalla
plt.show()
#print("hola
mundo")
2) grafico circular
import matplotlib.pyplot
as plt
# 1. Datos para el
gráfico
categorias = ['Manzanas',
'Plátanos', 'Naranjas', 'Uvas']
cantidades = [30, 45, 15,
10]
colores = ['#ff9999',
'#66b3ff', '#99ff99', '#ffcc99'] # Colores opcionales
# 2. Crear el gráfico
circular
plt.pie(
cantidades,
labels=categorias,
autopct='%1.1f%%', # Muestra el porcentaje con un decimal
startangle=90, # Rota el inicio del gráfico a 90 grados
colors=colores # Aplica la paleta de colores
personalizada
)
# 3. Personalizar y
mostrar
plt.title('Distribución
de Frutas')
plt.show()
3)GRAFICO DE LINEAS 2
import matplotlib.pyplot as plt
#datos
x=[1,2,4,7,10,14,15,17,19]
y=[2,3,5,7,8,9,14,17,14]
#crear el grafico de lineas
plt.plot(x,y)
#añadir titulo y etiquetas
plt.title("evolucion de
produccion")
plt.xlabel("pedidos")
plt.ylabel("tn")
#añadir cuadricula
plt.grid(True)
#mostrar el grafico
plt.plot(x,
y, color="#591A69", linewidth=3)
plt.show()
4) GRAFICOS DE COLUMNAS
import matplotlib.pyplot as plt
# 1. Definir los datos (Categorías y sus
Valores)
categorias = ['A', 'B', 'C', 'D']
valores = [23, 45, 12, 30]
# Opcional: Definir una lista de colores en
código HEX (uno para cada columna)
colores_hex = ['#3498db', '#e74c3c',
'#2ecc71', '#f1c40f']
# 2. Crear el gráfico de columnas
# Si quieres un solo color para todas, usa:
color='#3498db'
plt.bar(categorias, valores,
color=colores_hex, edgecolor='#2c3e50', linewidth=1.5)
# 3. Personalizar el diseño
plt.title('Gráfico de Columnas con Colores
Personalizados', fontsize=14, fontweight='bold')
plt.xlabel('Categorías', fontsize=12)
plt.ylabel('Valores', fontsize=12)
plt.grid(axis='y', linestyle='--',
alpha=0.7) # Cuadrícula solo en el eje Y
# 4. Mostrar el resultado
plt.show()
5) GRAFICO DE PUNTOS
import matplotlib.pyplot as plt
# 1. Generar 50 datos usando las
herramientas nativas de Python
# Creamos una secuencia del 1 al 50 para el
eje X
x = list(range(1, 51))
# Generamos 50 valores para el eje Y usando
una fórmula matemática (ej. una curva con saltos)
y = [(i ** 1.5) + (i * 2 if i % 2 == 0 else
-i * 3) for i in x]
# 2. Crear el gráfico de puntos
plt.scatter(x,
y, color='#2ecc71', s=50, marker='o', edgecolor='#27ae60')
# 3. Personalizar el diseño
plt.title('Gráfico de 50 Puntos ',
fontsize=14)
plt.xlabel('Eje X (Índice)')
plt.ylabel('Eje Y (Valor)')
plt.grid(True,
linestyle='--', alpha=0.5)
# 4. Mostrar el gráfico
plt.show()
7)grafico de colores
import matplotlib.pyplot as plt
# 1. Crear una matriz de datos 5x5 usando
listas nativas de Python
# Cada fila representa una categoría y cada
columna una variable
datos = [
[43, 14, 25, 17, 33],
[44, 81, 72, 18, 32],
[35, 20, 27, 25, 18],
[47, 13, 22, 23, 11],
[40, 85, 25, 60, 30],
]
# Etiquetas para los ejes
ciudades = ['Madrid', 'Barcelona',
'Valencia', 'Sevilla', 'Bilbao']
meses = ['Ene', 'Feb', 'Mar', 'Abr', 'May']
# 2. Crear la figura y el mapa de calor
fig, ax =
plt.subplots(figsize=(6, 5))
# 'cmap' define la paleta de colores (ej:
'viridis', 'coolwarm', 'inferno', 'magma')
# 'interpolation' define si se ven los
pixeles duros o difuminados
im =
ax.imshow(datos, cmap='coolwarm', interpolation='nearest')
# 3. Agregar la barra de color (leyenda de
intensidad)
cbar =
ax.figure.colorbar(im, ax=ax)
cbar.ax.set_ylabel("Escala de
Valores", rotation=-90, va="bottom")
# 4. Personalizar los ejes con sus nombres
de filas y columnas
ax.set_xticks(range(len(meses)))
ax.set_xticklabels(meses)
ax.set_yticks(range(len(ciudades)))
ax.set_yticklabels(ciudades)
# 5. Opcional: Agregar el número exacto
dentro de cada celda
for i in range(len(ciudades)):
for j in range(len(meses)):
# Si el valor
es muy alto o bajo, puedes cambiar el color del texto para que se lea bien
color_texto =
"white" if datos[i][j] > 70 or datos[i][j] < 25 else
"black"
ax.text(j, i,
str(datos[i][j]), ha="center", va="center",
color=color_texto, fontweight='bold')
# 6. Títulos y ajustes finales
plt.title('Mapa de Calor - Datos de Ventas
por Ciudad', fontsize=14, pad=15)
plt.tight_layout()
# 7. Mostrar el gráfico
plt.show()
8) grafico tridimensional
from
mpl_toolkits.mplot3d import Axes3D
fig=plt.figure()
ax=fig.add_subplot(111,projection="3d")
ax.plot([0,1],[0,4],[0,7])
plt.show()
SENTENCIAS
CREATECODIGO
create database ventas;
use ventas;
create table clientes(
id_cliente int auto_increment,
nombre varchar(33),
email varchar(40),
fecha DATE,
id_zona varchar(10),
primary key(id_cliente));
-- foreign key(id_zona) references zona(id_zona));
insert into clientes(nombre,email,fecha,id_zona)
values
('carlos','carlos@gmail.com','2026-05-14','z1');
select * from clientes;
insert into clientes(nombre,email,fecha,id_zona)
values
('vanesa','vane@gmail.com','2026-05-14','z1'),
('tadeo','tade@gmail.com','2026-05-14','z1'),
('julian','jul@gmail.com','2026-05-14','z1'),
('javier','jav@gmail.com','2026-05-14','z1'),
('renato','rena@gmail.com','2026-05-14','z1'),
('alfredo','alfre@gmail.com','2026-05-14','z1'),
('susana','susa@gmail.com','2026-05-14','z1');
use sakila;
select * from actor;
select actor_id, first_name from actor;
select * from actor where last_name='chase';
select distinct last_name from actor;
select * from actor limit 5;
select * from payment;
select * from payment order by amount desc;
select * from payment order by amount asc;