Aspectos básicos de DAX en Power BI DesktopDAX basics in Power BI Desktop

Este artículo está destinado a usuarios sin experiencia en Power BI Desktop.This article is for users new to Power BI Desktop. Su objetivo es proporcionar una introducción rápida y fácil al uso de expresiones de análisis de datos (DAX) para solucionar una variedad de problemas de análisis de datos y cálculo básico.It’s meant to give you a quick and easy introduction on how you can use Data Analysis Expressions (DAX) to solve a number of basic calculation and data analysis problems. Abordaremos información conceptual, una serie de tareas que puede completar y algunos cuestionarios para probar lo que ha aprendido.We’ll go over some conceptual information, a series of tasks you can complete, and a few quizzes to test what you’ve learned. Al finalizar este artículo, debe tener una buena comprensión de los conceptos fundamentales más importantes en DAX.After completing this article, you should have a good understanding of the most important fundamental concepts in DAX.

¿Qué es DAX?What is DAX?

DAX es una colección de funciones, operadores y constantes que se pueden usar en una fórmula o expresión, para calcular y devolver uno o más valores.DAX is a collection of functions, operators, and constants that can be used in a formula, or expression, to calculate and return one or more values. En pocas palabras, DAX le ayuda a crear información nueva a partir de datos ya incluidos en un modelo.Stated more simply, DAX helps you create new information from data already in your model.

¿Por qué es tan importante DAX?Why is DAX so important?

Crear un archivo de Power BI Desktop nuevo e importar algunos datos en él es bastante fácil.It’s quite easy to create a new Power BI Desktop file and import some data into it. Incluso puede crear informes que muestren información valiosa sin usar las fórmulas DAX en absoluto.You can even create reports that show valuable insights without using any DAX formulas at all. Pero, ¿qué ocurre si necesita analizar el porcentaje de crecimiento por categorías de producto y para intervalos de fechas diferentes?But, what if you need to analyze growth percentage across product categories and for different date ranges? ¿O bien, si debe calcular el crecimiento interanual en comparación con las tendencias del mercado?Or, you need calculate year-over-year growth compared to market trends? Las fórmulas DAX proporcionan esta y muchas otras capacidades igual de importantes.DAX formulas provide this capability and many other important capabilities as well. Obtener información sobre cómo crear fórmulas DAX eficaces le ayudará a aprovechar los datos al máximo.Learning how to create effective DAX formulas will help you get the most out of your data. Cuando obtiene la información que necesita, puede empezar a resolver problemas empresariales reales que afectan los resultados finales.When you get the information you need, you can begin to solve real business problems that affect your bottom line. Ese es el potencial de Power BI y DAX le ayuda a alcanzarlo.This is the power in Power BI, and DAX will help you get there.

Requisitos previosPrerequisites

Posiblemente ya esté familiarizado con la creación de fórmulas en Microsoft Excel.You might already be familiar with creating formulas in Microsoft Excel. Esa información será útil para comprender DAX, pero incluso si no tiene ninguna experiencia con las fórmulas de Excel, los conceptos descritos aquí le ayudarán a empezar a crear fórmulas de DAX y solucionar problemas de inteligencia empresarial del mundo real inmediatamente.That knowledge will be helpful in understanding DAX, but even if you have no experience with Excel formulas, the concepts described here will help you get started creating DAX formulas and solving real-world BI problems right away.

Nos centraremos en comprender las fórmulas DAX que se usan en los cálculos, más específicamente, en columnas calculadas y medidas.We’re going to focus on understanding DAX formulas used in calculations, more specifically, in measures and calculated columns. Debe estar familiarizado con Power BI Desktop, la importación de datos y la incorporación de campos a un informe. También debe estar familiarizado con los conceptos fundamentales de medidas y columnas calculadas.You should already be familiar with Power BI Desktop, importing data, adding fields to a report, and you should also be familiar with fundamental concepts of Measures and Calculated columns.

Libro de trabajo de ExcelExample Workbook

La mejor manera de aprender a usar DAX es crear algunas fórmulas básicas, usar las expresiones con algunos datos reales y comprobar los resultados con sus propios ojos.The best way to learn DAX is to create some basic formulas, use it with some actual data, and see the results for yourself. Los ejemplos y tareas que se exponen aquí utilizan el archivo de ventas de muestra de Contoso para Power BI Desktop Preview.The examples and tasks here use the Contoso Sales Sample for Power BI Desktop Preview file. Este es el mismo archivo de ejemplo usado en el artículo Tutorial: Crear sus propias medidas en Power BI Desktop.This is the same sample file used in the Tutorial: Create your own measures in Power BI Desktop article. Puede descargarlo aquí.You can download it here.

¡Comencemos!Let's begin!

Ceñiremos nuestro estudio de DAX en torno a tres conceptos fundamentales: sintaxis, funciones y contexto.We will frame our understanding of DAX around three fundamental concepts: Syntax, Functions, and Context. Por supuesto, hay otros conceptos importantes en DAX, pero la comprensión de estos tres conceptos le proporcionará una base óptima para desarrollar sus habilidades de DAX.Of course, there are other important concepts in DAX, but understanding these three concepts will provide the best foundation on which to build your DAX skills.

SintaxisSyntax

Antes de crear sus propias fórmulas, echemos un vistazo a la sintaxis de las fórmulas DAX.Before you create your own formulas, let’s take a look at DAX formula syntax. La sintaxis incluye los distintos elementos que componen una fórmula, o en términos más simples, cómo se escribe la fórmula.Syntax includes the various elements that make up a formula, or more simply, how the formula is written. Por ejemplo, echemos un vistazo a una medida de la fórmula DAX simple.For example, let’s look at a simple DAX formula for a measure.

Esta fórmula incluye los siguientes elementos de sintaxis:This formula includes the following syntax elements:

A.A. El nombre de medida Total Sales.The measure name Total Sales.

B.B. El operador signo igual (=) indica el principio de la fórmula.The equals sign operator (=) indicates the beginning of the formula. Al calcular, devolverá un resultado.When calculated, it will return a result.

C.C. La función DAX SUM suma todos los números en la columna Sales[SalesAmount].The DAX function SUM adds up all of the numbers in the Sales[SalesAmount] column. Aprenderá más acerca de las funciones más adelante.You’ll learn more about functions later.

D.D. Los paréntesis () envuelven una expresión que contiene uno o más argumentos.Parenthesis () surround an expression containing one or more arguments. Todas las funciones requieren al menos un argumento.All functions require at least one argument. Un argumento pasa un valor a una función.An argument passes a value to a function.

E.E. La tabla referenciada Sales.The referenced table Sales.

F.F. La columna referenciada [SalesAmount] en la tabla Sales.The referenced column [SalesAmount] in the Sales table. Con este argumento, la función SUM detecta en qué columna se agrega una suma.With this argument, the SUM function knows on which column to aggregate a SUM.

Al tratar de comprender una fórmula DAX, a menudo resulta útil descomponer cada uno de los elementos en un lenguaje común.When trying to understand a DAX formula, it is often helpful to break down each of the elements into a language you think and speak every day. Por ejemplo, puede leer esta fórmula como:For example, you can read this formula as:

Para la medida denominada Total Sales, calcular (=) la SUMA de los valores de la columna [SalesAmount] en la tabla Sales.For the measure named Total Sales, calculate (=) the SUM of values in the [SalesAmount ] column in the Sales table.

Cuando se agrega a un informe, esta medida calcula y devuelve valores que resulten de sumar los importes de las ventas de cada uno de los demás campos que se incluyen, por ejemplo, el de teléfonos móviles de Estados Unidos.When added to a report, this measure calculates and returns values by summing up sales amounts for each of the other fields we include, for example, Cell Phones in the USA.

Quizás se pregunte "¿Esta medida no está hace lo mismo que si simplemente agregara el campo SalesAmount a mi informe?"You might be thinking ‘Isn’t this measure doing the same thing as if I were to just add the SalesAmount field to my report?’ Bueno, sí.Well, yes. Pero hay una buena razón para crear nuestra propia medida que suma los valores del campo SalesAmount: podemos usarla como argumento en otras fórmulas.But, there’s a good reason to create our own measure that sums up values from the SalesAmount field: We can use it as an argument in other formulas. Esto puede parecer un poco confuso ahora, pero a medida que desarrolle sus habilidades con las fórmulas DAX, saber esto hará sus fórmulas y modelos más eficientes.This may seem a little confusing now, but as your DAX formula skills grow, knowing this will make your formulas and your model more efficient. De hecho, verá que la medida Ventas totales aparece como argumento en otras fórmulas más adelante.In-fact, you’ll see the Total Sales measure showing up as an argument in other formulas later on.

Veamos algunos otros aspectos de esta fórmula.Let’s go over a few more things about this formula. En concreto, introdujimos una función, SUM.In particular, we introduced a function, SUM. Las funciones son fórmulas previamente escritas que facilitan el realizar cálculos complejos y manipulaciones con números, fechas, horas, texto y mucho más.Functions are pre-written formulas that make it easier to do complex calculations and manipulations with numbers, dates, time, text, and more. Aprenderá más acerca de las funciones más adelante.You will learn more about functions later.

También puede ver que la columna [SalesAmount] estaba precedida de la tabla Sales a la que pertenece la columna.You also see the column [SalesAmount] was preceded by the table Sales in which the column belongs. Esto se conoce como un nombre de columna completo porque incluye el nombre de la columna precedido por el nombre de la tabla.This is known as a fully qualified column name in that it includes the column name preceded by the table name. Las columnas a las que se hace referencia en la misma tabla no requieren que el nombre de la tabla se incluya en la fórmula.Columns referenced in the same table do not require the table name be included in the formula. De esta manera, las fórmulas largas que hacen referencia a muchas columnas se vuelven más cortas y fáciles de leer.This can make long formulas that reference many columns shorter and easier to read. Sin embargo, es recomendable incluir el nombre de la tabla en las fórmulas de medida, incluso cuando estén en la misma tabla.However, it's good practice to include the table name in your measure formulas, even when in the same table.

Nota

Si un nombre de tabla contiene espacios, palabras clave reservadas o caracteres no permitidos, necesitará incluir el nombre de la tabla entre comillas simples.If a table name contains spaces, reserved keywords, or disallowed characters, you’ll need to enclose the table name in single quotation marks. También deberá escribir los nombres de tabla entre comillas si el nombre contiene algún carácter fuera del rango de caracteres alfanuméricos ANSI, independientemente de si la configuración regional es compatible con el conjunto de caracteres o no.You’ll also need to enclose table names in quotation marks if the name contains any characters outside the ANSI alphanumeric character range, regardless of whether your locale supports the character set or not.

Es importante que las fórmulas tengan la sintaxis correcta.It’s important your formulas have the correct syntax. En la mayoría de los casos, si la sintaxis no es correcta, se devolverá un error de sintaxis.In most cases, if the syntax is not correct, a syntax error will be returned. En otros casos, la sintaxis puede ser correcta, pero los valores devueltos podrían no ser los que esperaba.In other cases, the syntax may be correct, but the values returned might not be what you are expecting. El editor de DAX en Power BI Designer incluye sugerencias; una característica que lo ayuda a seleccionar los elementos correctos para crear fórmulas sintácticamente correctas.The DAX editor in Power BI Desktop includes suggestions; a feature used to create syntactically correct formulas by helping you select the correct elements.

Vamos a crear una fórmula simple.Let’s create a simple formula. Esta tarea le ayudará a entender mejor la sintaxis de fórmulas y la utilidad de la característica de sugerencias en la barra de fórmulas.This task will help you further understand formula syntax and how the suggestions feature in the formula bar can help you.

Tarea: Crear una fórmula de medidaTask: Create a measure formula

Para completar esta tarea, deberá abrir el archivo de muestra de ventas de Contoso de Power BI Desktop.To complete this task, you’ll need to open the Contoso Sales Sample Power BI Desktop file.

  1. En la vista Informes, en la lista de campos, haga clic con el botón derecho en la tabla Sales y, a continuación, haga clic en Nueva medida.In Report view, in the field list, right-click on the Sales table, and then click New Measure.

  2. En la barra de fórmulas, reemplace Medida con un nuevo nombre de medida: Ventas del trimestre anterior.In the formula bar, replace Measure by typing a new measure name, Previous Quarter Sales.

  3. Después del signo igual, escriba SUM seguido de un paréntesis de apertura.After the equals sign, type SUM followed by an opening parenthesis.

    En su lugar de escribir un nombre de columna para sumar inmediatamente, vamos a escribir a otra función, para filtrar los datos que deseamos sumar.Rather than type a column name to sum up right away, we’re going to enter another function, to filter the data we want to sum up.

  4. Entre paréntesis, escriba CALCULATE, seguido de un paréntesis de apertura.Between the parentheses, type CALCULATE, followed by an opening parenthesis.

    Usará la función CALCULATE para filtrar los importes que deseamos sumar mediante un argumento que pasamos a la función CALCULATE.You’ll use the CALCULATE function to filter the amounts we want to sum by an argument we pass to the CALCULATE function. Esto es lo que se conoce como funciones anidadas.This is what’s referred to as nesting functions. La función CALCULATE tiene al menos dos argumentos.The CALCULATE function has at least two arguments. El primero es la expresión que se evalúa y el segundo, un filtro.The first is the expression to be evaluated, and second, a filter.

  5. Entre los paréntesis () de la función CALCULATE escriba Sales[SalesAmount].Between the parenthesis () for the CALCULATE function, type Sales[SalesAmount]. Este es el primer argumento de expresión de nuestra función CALCULATE.This is the first expression argument for our CALCULATE function.

  6. Escriba una coma (,) para especificar el primer filtro y, después, escriba PREVIOUSQUARTER seguido de un paréntesis de apertura.Type a comma (,) to specify the first filter, then type PREVIOUSQUARTER followed by an opening parenthesis..

    Utilizará la función de inteligencia de tiempo PREVIOUSQUARTER para filtrar los resultados de la suma para el trimestre anterior.You’ll use the PREVIOUSQUARTER time intelligence function to filter our SUM results by the previous quarter.

  7. Entre los paréntesis () para la función PREVIOUSQUARTER, escriba Calendar[DateKey].Between the parenthesis () for the PREVIOUSQUARTER function, type Calendar[DateKey].

    La función PREVIOUSQUARTER tiene un argumento, una columna que contiene un intervalo de fechas contiguas.The PREVIOUSQUARTER function has one argument, a column containing a contiguous range of dates. >

  8. Asegúrese de que los dos argumentos que se pasan a la función PREVIOUSQUARTER y a la función CALCULATE se cierran con dos paréntesis de cierre )).Make sure both the arguments being passed to the PREVIOUSQUARTER function and the CALCULATE function are closed by two closing parentheses )).

    La fórmula debe tener el siguiente aspecto:Your formula should now look like this:

    Previous Quarter Sales = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))Previous Quarter Sales = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))

  9. Haga clic en la marca de verificación en la barra de fórmulas o presione Entrar para validar la fórmula y agregarla al modelo.Click the checkmark in the formula bar or press Enter to validate the formula and add it to the model.

¡Lo logró!You did it! Acaba de crear una medida usando DAX (¡y no una de las fáciles!).You just created a measure using DAX, and not an easy one at that. Lo que hará esta fórmula es calcular el total de ventas del trimestre anterior, según los filtros aplicados en un informe.What this formula will do is calculate the total sales for the previous quarter, depending on the filters applied in a report. Por ejemplo, si incluimos SalesAmount y nuestra nueva medida de ventas del trimestre anterior en un gráfico y, a continuación, agregamos Year y QuarterOfYear como segmentaciones de datos, obtendríamos algo parecido a esto:For example, if we put SalesAmount and our new Previous Quarter Sales measure in a chart, and then added Year and QuarterOfYear as Slicers, we’d get something like this:

Le acabamos de presentar varios aspectos importantes de las fórmulas DAX.You were just introduced to several important aspects of DAX formulas. En primer lugar, esta fórmula incluye dos funciones.First, this formula included two functions. Observe que PREVIOUSQUARTER, una función de inteligencia de tiempo, se anida como un argumento pasado a la función de filtro CALCULATE.Notice PREVIOUSQUARTER, a time intelligence, function is nested as an argument passed to CALCULATE, a filter function. Las fórmulas DAX pueden contener hasta 64 funciones anidadas.DAX formulas can contain up to 64 nested functions. Es poco probable que una fórmula llegue a contener tantas funciones anidadas.It’s unlikely a formula would ever contain so many nested functions. De hecho, una fórmula tal sería muy difícil de crear y depurar, probablemente tampoco sería muy rápida.In fact, such a formula would be very difficult to create and debug, and it probably wouldn’t be very fast either.

En esta fórmula, también usó filtros.In this formula, you also used filters. Los filtros limitan lo que se calculará.Filters narrow down what will be calculated. En este caso, se seleccionó un filtro como argumento, que es, de hecho, el resultado de otra función.In this case, you selected one filter as an argument, which is actually the result of another function. Aprenderá más acerca de los filtros más adelante.You will learn more about filters later.

Por último, usó la función CALCULATE.Finally, you used the CALCULATE function. Esta es una de las funciones más potentes de DAX.This is one of the most powerful functions in DAX. A medida que cree modelos y fórmulas más complejas, seguramente volverá a usar esta función muchas veces.As you author models and create more complex formulas, you will likely use this function many times. Profundizar en la función CALCULATE está fuera del ámbito de este artículo, pero le recomendamos prestar especial atención a esta función conforme aumente sus conocimientos de DAX.Discussing the CALCULATE function is outside the scope of this article, but as your knowledge of DAX grows, pay special attention to this one.

Cuestionario rápido sobre sintaxisSyntax QuickQuiz

  1. ¿Qué hace este botón de la barra de fórmulas?What does this button on the formula bar do?

  2. ¿Qué rodea siempre a un nombre de columna en una fórmula DAX?What always surrounds a column name in a DAX formula?

Encontrará las respuestas al final de este artículo.Answers are provided at the end of this article.

FuncionesFunctions

Las funciones son fórmulas predefinidas que realizan cálculos por medio de valores específicos, denominados argumentos, en un orden o estructura determinados.Functions are predefined formulas that perform calculations by using specific values, called arguments, in a particular order or structure. Los argumentos pueden ser otras funciones, otra fórmula, una expresión, referencias de columna, números, texto, valores lógicos como TRUE o FALSE, o constantes.Arguments can be other functions, another formula, expression, column references, numbers, text, logical values such as TRUE or FALSE, or constants.

DAX incluye las siguientes categorías de funciones: Fecha y hora, Inteligencia de tiempo,Información, Lógicas,Matemáticas, Estadísticas, Texto, Primarias/Secundarias y Otras.DAX includes the following categories of functions: Date and Time, Time Intelligence,Information, Logical,Mathematical, Statistical, Text, Parent/Child and Other functions. Si está familiarizado con las funciones en las fórmulas de Excel, muchas de las funciones DAX le parecerán semejantes; sin embargo, las funciones DAX son únicas de las maneras siguientes:If you’re familiar with functions in Excel formulas, many of the functions in DAX will appear similar to you; however, DAX functions are unique in the following ways:

  • Una función DAX siempre hace referencia a una columna o tabla completa.A DAX function always references a complete column or a table. Si desea usar solo determinados valores de una tabla o columna, puede agregar filtros a la fórmula.If you want to use only particular values from a table or column, you can add filters to the formula.
  • Si necesita personalizar los cálculos fila por fila, DAX ofrece funciones para usar el valor de la fila actual o un valor relacionado como un tipo de argumento, lo que permite realizar cálculos que varían según el contexto.If you need to customize calculations on a row-by-row basis, DAX provides functions that let you use the current row value or a related value as a kind of argument, to perform calculations that vary by context. Aprenderá más acerca del contexto más adelante.You will learn more about context later.
  • DAX incluye muchas funciones que devuelven una tabla en lugar de un valor.DAX includes many functions that return a table rather than a value. La tabla no se muestra, pero se usa para proporcionar datos para otras funciones.The table is not displayed, but is used to provide input to other functions. Por ejemplo, puede recuperar una tabla y después contar los diferentes valores que contenga o calcular sumas dinámicas en tablas o columnas filtradas.For example, you can retrieve a table and then count the distinct values in it, or calculate dynamic sums across filtered tables or columns.
  • DAX incluye una variedad de funciones de inteligencia de tiempo.DAX includes a variety of time intelligence functions. Estas funciones permiten definir o seleccionar intervalos de fechas y realizar cálculos dinámicos con base en ellos.These functions let you define or select date ranges, and perform dynamic calculations based on them. Por ejemplo, puede comparar sumas de períodos paralelos.For example, you can compare sums across parallel periods.
  • Excel tiene una función muy popular, BUSCARV.Excel has a very popular function, VLOOKUP. Las funciones DAX no toman una celda o rango de celdas como una referencia como BUSCARV en Excel.DAX functions don’t take a cell or cell range as a reference like VLOOKUP does in Excel. Las funciones DAX toman una columna o una tabla como referencia.DAX functions take a column or a table as a reference. Tenga en cuenta que, en Power BI Desktop, está trabajando con un modelo de datos relacionales.Keep in-mind, in Power BI Desktop, you’re working with a relational data model. Buscar valores en otra tabla es verdaderamente fácil y en la mayoría de los casos no es necesario crear ninguna fórmula.Looking up values in another table is really quite easy, and in most cases you don’t need to create any formula at all.

    Como puede ver, las funciones de DAX pueden ayudarle a crear fórmulas muy eficaces.As you can see, functions in DAX can help you create very powerful formulas. En realidad, solo hemos tratado los conceptos básicos de las funciones.We really only touched on the basics of functions. A medida que desarrolle sus habilidades de DAX, podrá crear fórmulas con muchas funciones diferentes.As your DAX skills grow, you'll create formulas using many different functions. Uno de los mejores lugares para obtener información detallada sobre cada una de las funciones de DAX está en la referencia de funciones de DAX.One of the best places to learn details about each of DAX functions is in the DAX Function Reference.

Cuestionario rápido sobre funcionesFunctions QuickQuiz

  1. Una función siempre hace referencia a...What does a function always reference?
  2. ¿Puede una fórmula contener más de una función?Can a formula contain more than one function?
  3. ¿Qué categoría de funciones usaría para concatenar dos cadenas de texto en una sola cadena?What category of functions would you use to concatenate two text strings into one string?

Encontrará las respuestas al final de este artículo.Answers are provided at the end of this article.

ContextoContext

El contexto es uno de los conceptos de DAX más importantes.Context is one of the most important DAX concepts to understand. Hay dos tipos de contexto en DAX; contexto de fila y contexto de filtro.There are two types of context in DAX; row context and filter context. En primer lugar, examinaremos el contexto de fila.We’ll first look at row context.

Contexto de filaRow context

Es más fácil pensar en el contexto de fila como la fila actual.Row context is most easily thought of as the current row. Se aplica siempre que una fórmula tiene una función use filtros para identificar una fila individual en una tabla.It applies whenever a formula has a function that applies filters to identify a single row in a table. De manera inherente, la función aplicará un contexto de fila para cada fila de la tabla que está filtrando.The function will inherently apply a row context for each row of the table over which it is filtering. Este tipo de contexto de fila se aplica con mayor frecuencia en medidas.This type of row context most often applies to measures.

Contexto de filtroFilter context

El contexto de filtro es un poco más difícil de entender que el contexto de fila.Filter context is a little more difficult to understand than row context. Para simplificarlo, piense en el contexto de filtro como uno o varios filtros aplicados en un cálculo que determina un resultado o valor.You can most easily think of filter context as: One or more filters applied in a calculation that determines a result or value.

El contexto de filtro no existe en lugar del contexto de fila; más bien, se aplica además del contexto de fila.Filter context doesn’t exist in-place of row context; rather, it applies in addition to row context. Por ejemplo, para restringir aún más los valores que desea incluir en un cálculo, puede aplicar un contexto de filtro que no solo especifique el contexto de fila, sino que también especifique únicamente un valor determinado (filtro) en ese contexto de fila.For example, to further narrow down the values to include in a calculation, you can apply a filter context which not only specifies the row context, but also specifies only a particular value (filter) in that row context.

El contexto de filtro se puede identificar fácilmente en los informes.Filter context is easily seen in your reports. Por ejemplo, cuando agrega el costo total a una visualización y, a continuación, el año y región, define un contexto de filtro que selecciona un subconjunto de datos basándose en un año y región determinados.For example, when you add TotalCost to a visualization, and then add Year and Region, you are defining a filter context that selects a subset of data based on a given year and region.

¿Por qué es tan importante para DAX el contexto de filtro?Why is filter context so important to DAX? Porque aunque el contexto de filtro se puede aplicar más fácilmente agregando campos a una visualización, también puede aplicarse en una fórmula DAX al definir un filtro mediante funciones como ALL, RELATED, FILTER, CALCULATE, por relaciones, así como por otras medidas y columnas.Because while filter context can most easily be applied by adding fields to a visualization, filter context can also be applied in a DAX formula by defining a filter using functions such as ALL, RELATED, FILTER, CALCULATE, by relationships, and by other measures and columns. Por ejemplo, echemos un vistazo a la siguiente fórmula en una medida denominada Store Sales:For example, let’s look at the following formula in a measure named Store Sales:

Para entender mejor esta fórmula, podemos desglosarla, similar a como podemos hacerlo otras fórmulas.To better understand this formula, we can break it down, much like with other formulas.

Esta fórmula incluye los siguientes elementos de sintaxis:This formula includes the following syntax elements:

A.A. El nombre de medida Store Sales.The measure name Store Sales.

B.B. El operador signo igual (=) indica el principio de la fórmula.The equals sign operator (=) indicates the beginning of the formula.

C.C. La función CALCULATE evalúa una expresión, como argumento, en un contexto modificado por los filtros especificados.The CALCULATE function evaluates an expression, as an argument, in a context that is modified by the specified filters.

D.D. Los paréntesis () envuelven una expresión que contiene uno o más argumentos.Parenthesis () surround an expression containing one or more arguments.

E.E. Una medida [Total Sales] en la misma tabla como una expresión.A measure [Total Sales] in the same table as an expression. La medida Total Sales tiene la fórmula: =SUM(Sales[SalesAmount]).The Total Sales measure has the formula: =SUM(Sales[SalesAmount]).

F.F. Una coma (,) separa el primer argumento de expresión del argumento de filtro.A comma (,) separates the first expression argument from the filter argument.

G.G. La columna completa a la que se hace referencia, Channel[ChannelName].The fully qualified referenced column, Channel[ChannelName]. Se trata de nuestro contexto de fila.This is our row context. Cada fila de esta columna especifica un canal: Store, Online, etc.Each row in this column specifies a channel: Store, Online, etc.

H.H. El valor concreto Store como filtro.The particular value, Store as a filter. Este es el contexto de filtro.This is our filter context.

Esta fórmula garantiza que únicamente se calculen los valores de ventas definidos por la medida Total Sales y solamente para las filas de la columna Channel[ChannelName] con el valor "Store" como filtro.This formula ensures only sales values defined by the Total Sales measure are calculated only for rows in the Channel[ChannelName] column with the value “Store”, as a filter.

Como puede imaginar, la posibilidad de definir el contexto de filtro dentro de una fórmula ofrece grandes y potentes capacidades.As you can imagine, being able to define filter context within a formula has immense and powerful capabilities. La capacidad de hacer referencia solamente a un valor determinado en una tabla relacionada es solo un ejemplo.Being able to reference only a particular value in a related table is just one such example. No se preocupe si no comprende por completo el concepto de contexto inmediatamente.Don’t worry if you do not completely understand context right away. A medida que cree sus propias fórmulas, comprenderá mejor el contexto y por qué es tan importante en DAX.As you create your own formulas, you will better understand context and why it’s so important in DAX.

Cuestionario rápido sobre el contextoContext QuickQuiz

  1. ¿Cuáles son los dos tipos de contexto?What are the two types of context?
  2. ¿Qué es el contexto de filtro?What is filter context?
  3. ¿Qué es el contexto de fila?What is row context?

Encontrará las respuestas al final de este artículo.Answers are provided at the end of this article.

ResumenSummary

Ahora que tiene conocimientos básicos de los conceptos más importantes en DAX, puede empezar a crear fórmulas DAX para medidas por su cuenta.Now that you have a basic understanding of the most important concepts in DAX, you can begin creating DAX formulas for measures on your own. En efecto, las expresiones DAX pueden ser un poco complicadas de aprender, pero hay muchos recursos a su disposición.DAX can indeed be a little tricky to learn, but there are many resources available to you. Después de leer este artículo y experimentar con algunas de fórmulas propias, puede obtener más información acerca de otros conceptos y fórmulas de DAX que le ayudarán a solucionar sus problemas de negocios.After reading through this article and experimenting with a few of your own formulas, you can learn more about other DAX concepts and formulas that can help you solve your own business problems. Existen muchos recursos de DAX disponibles; el más importante es la Referencia de expresiones de análisis de datos (DAX).There are many DAX resources available to you; most important is the Data Analysis Expressions (DAX) Reference.

DAX se usa desde hace varios años en otras herramientas de Microsoft BI, como los modelos tabulares de Power Pivot y Analysis Services, por lo que hay una gran cantidad de información disponible.DAX has been around for several years in other Microsoft BI tools such as Power Pivot and Analysis Services Tabular models, so there’s a lot of great information out there. Puede encontrar más información en libros, notas de producto y blogs tanto de Microsoft como de profesionales líderes de BI.You can find more information in books, whitepapers, and blogs from both Microsoft and leading BI professionals. El Wiki del Centro de recursos de DAX de TechNet también es un excelente punto de partida.The DAX Resource Center Wiki on TechNet is also a great place to start.

Respuestas de los cuestionarios rápidosQuickQuiz answers

Sintaxis:Syntax:

  1. Valida e introduce la medida en el modelo.Validates and enters the measure into the model.
  2. Corchetes [].Brackets [].

Funciones:Functions:

  1. Una tabla y una columna.A table and a column.
  2. Sí.Yes. Una fórmula puede contener hasta 64 funciones anidadas.A formula can contain up to 64 nested functions.
  3. Funciones de texto.Text functions.

Contexto:Context:

  1. Contexto de fila y contexto de filtro.Row context and filter context.
  2. Uno o más filtros en un cálculo que determina un valor único.One or more filters in a calculation that determines a single value.
  3. La fila actual.The current row.