
DAX es el lenguaje nativo de Power BI cuya naturaleza es funcional, lo que indica que cada expresión es una llamada a una función. Tiene la particularidad de que el contexto de evaluación de las consultas es como el corazón del funcionamiento de dicho lenguaje.
El contexto de evaluación puede hacer referencia al contexto del filtro o al contexto de la fila. El contexto de filtro se le llama al que filtra los datos, mientras que el contexto de la fila, es un contexto que itera la tabla. Es importante anotar que cuando DAX itera, no filtra la tabla. Por eso no son lo mismo.
Justo por esta razón, al iniciar a codificar código utilizando DAX en los informes de Power BI, resulta en ocasiones confuso si se debe utilizar una columna calculada o una medida. Si optamos por crear una columna calculada, esta se puede realizar de dos maneras, una es por medio del panel de Datos que se ubica a la izquierda de la aplicación de Power BI Desktop tal y como se muestra en la Figura No.1:

Otra forma de realizar la misma acción es desde el panel de “Fields” de la derecha, al seleccionar una tabla y darle clic derecho + “New column” como se visualiza en la Figura No.2:

Por otra parte, cuando hablamos de medidas, estas son creadas desde el panel de “Fields” o “Campos” ubicado al lado derecho de la aplicación, y donde se habilita la opción de crear nuevas medidas tal y como se muestra en la Figura No.3:

Aunque parecen muy similares, la columna calculada se basa en datos cargados en el modelo. Aplica la fórmula individualmente a cada fila. Se evalúa en su definición y se almacena en el modelo (implica memoria RAM y espacio). La columna calculada aplica en un contexto de fila (en inglés llamado “Row Context”).
Por otro lado, una medida se calcula en el tiempo de consulta, es guardada como código fuente, pero se calcula solamente cuando se utiliza en el informe y aplica en contexto de filtro (en inglés llamado “Filter Context”).
En resumen, se podrían comparar de la siguiente forma:
| Columna Calculada | Medida |
| Se almacena, ocupa espacio | No se almacena, solo el código fuente de la fórmula |
| Consume memoria RAM | Consume CPU |
| Se calcula cuando se refresca el reporte | Se calcula en tiempo de ejecución de la consulta |
| CONTEXTO: ROW (fila por fila) | CONTEXTO: Filtro |
Por ejemplo, supóngase que tenemos la siguiente formula:
| Sales[Quantity] * (Sales[Net Price] – Sales[Unit Cost]) |
¿Considera usted que puede ser usada como columna calculada, como medida o ambas?
Para responder la pregunta, véase la Figura No.4 donde es utilizada como una columna calculada de la tabla llamada “Sales”:

Sin embargo, si colocamos la misma fórmula en el código de una medida de “Sales” obtendremos la siguiente advertencia luego de codificarla, como se muestra a continuación en la Figura No.5:

En este caso, el código es el mismo que se utiliza para la columna calculada, sin embargo, lo que afecta en uno u otro cálculo es el contexto. En el caso de la columna calculada, mostrada en la Figura No.4, tiene un comportamiento predeterminado de contexto de fila, los datos de cada fila determinan su contexto. Por otro lado, la medida, correspondiente a la Figura No.5, no posee dicho contexto, no tiene visibilidad de las filas de los datos, por ende, genera el error que no puede determinar las columnas utilizadas en la fórmula. Es por este motivo que, para poder utilizarlas, se requiere de iteraciones y funciones que utilicen agregación, como por ejemplo SUMX entre otras.
Para finalizar, recuerde tener presente cuál es el objetivo del cálculo que desea agregar a su informe, para definir si requiere hacerlo fila por fila, o si es de tipo de agregación o iteración sobre todo el conjunto de datos, eso le ayudara de antemano a tener claro si usa una medida o una columna calculada.
Bibliografía
Russo, M., & Ferrari, A. (2020). The Definitive Guide to DAX. Pearson Education , Inc.