Novedades de SQL Server 2017 Analysis ServicesWhat's new in SQL Server 2017 Analysis Services

Se aplica a: SíSQL Server 2017 Analysis Services ningúnAzure Analysis ServicesAPPLIES TO: yesSQL Server 2017 Analysis Services noAzure Analysis Services

SQL Server 2017 Analysis Services vea algunas de las mejoras más importantes desde SQL Server 2012.SQL Server 2017 Analysis Services see some of the most important enhancements since SQL Server 2012. Cuando se crean en el éxito de modo Tabular (introdujo por primera vez en SQL Server 2012 Analysis Services), esta versión, los modelos tabulares más poderosa que nunca.Building on the success of Tabular mode (first introduced in SQL Server 2012 Analysis Services), this release makes tabular models more powerful than ever.

Modo multidimensional y Power Pivot para el modo de SharePoint son un elemento esencial para muchas implementaciones de Analysis Services.Multidimensional mode and Power Pivot for SharePoint mode are a staple for many Analysis Services deployments. En el ciclo de vida del producto de Analysis Services, están maduros estos modos.In the Analysis Services product lifecycle, these modes are mature. No hay ninguna característica nueva para cada uno de estos modos en esta versión.There are no new features for either of these modes in this release. Sin embargo, se incluyen correcciones de errores y mejoras de rendimiento.However, bug fixes and performance improvements are included.

Las características descritas aquí se incluyen en SQL Server 2017 Analysis Services.The features described here are included in SQL Server 2017 Analysis Services. Pero para sacar provecho de ellas, también debe usar las versiones más recientes de SQL Server Data Tools (SSDT) y SQL Server Management Studio (SSMS).But in order to take advantage of them, you must also use the latest versions of SQL Server Data Tools (SSDT) and SQL Server Management Studio (SSMS). SSDT y SSMS se actualiza mensualmente con nuevas y mejoradas características que normalmente coincidan con la nueva funcionalidad en SQL Server.SSDT and SSMS are updated monthly with new and improved features that typically coincide with new functionality in SQL Server.

Si bien es importante obtener información sobre las nuevas características, también es importante saber lo que se está en desuso y ya no se incluye en esta versión y las versiones futuras.While it's important to learn about all the new features, it's also important to know what is being deprecated and discontinued in this release and future releases. Asegúrese de consultar compatibilidad con versiones anteriores (SQL Server 2017 Analysis Services).Be sure to check out Backward compatibility (SQL Server 2017 Analysis Services).

Echemos un vistazo a algunas de las nuevas características clave en esta versión.Let's take a look at some of the key new features in this release.

Nivel de compatibilidad 1400 para modelos tabulares.1400 Compatibility level for tabular models

Para aprovechar muchas de las nuevas características y funcionalidad que se describe aquí, deben establecerse modelos tabulares nuevos o existentes o actualizar al nivel de compatibilidad 1400.To take advantage of many of the new features and functionality described here, new or existing tabular models must be set or upgraded to the 1400 compatibility level. Los modelos con el nivel de compatibilidad 1400 no pueden implementarse en SQL Server 2016 SP1 o versiones anteriores, ni degradarse a niveles de compatibilidad inferiores.Models at the 1400 compatibility level cannot be deployed to SQL Server 2016 SP1 or earlier, or downgraded to lower compatibility levels. Para obtener más información, consulte nivel de compatibilidad para modelos tabulares de Analysis Services.To learn more, see Compatibility level for Analysis Services tabular models.

En SSDT, puede seleccionar el nuevo nivel de compatibilidad 1400 al crear proyectos de modelos tabulares.In SSDT, you can select the new 1400 compatibility level when creating new tabular model projects.

AS_NewTabular1400Project

Para actualizar un modelo tabular existente en SSDT, en el Explorador de soluciones, haga clic en Model.bimy, a continuación, en propiedades, establezca el ivel propiedad SQL Server 2017 (1400).To upgrade an existing tabular model in SSDT, in Solution Explorer, right-click Model.bim, and then in Properties, set the Compatibility Level property to SQL Server 2017 (1400).

AS_Model_Properties

Es importante tener en cuenta que, una vez que actualice un modelo existente a 1400, no se puede cambiar.It's important to keep in mind, once you upgrade an existing model to 1400, you can't downgrade. No olvide guardar una copia de seguridad de la base de datos del modelo 1200.Be sure to keep a backup of your 1200 model database.

Experiencia moderna de Obtener datosModern Get Data experience

Cuando se trata de importar datos de orígenes de datos en los modelos tabulares, SQL Server Data Tools (SSDT) presenta la versión moderna obtener datos experiencia para los modelos en el nivel de compatibilidad 1400.When it comes to importing data from data sources into your tabular models, SQL Server Data Tools (SSDT) introduces the modern Get Data experience for models at the 1400 compatibility level. Esta característica nueva se basa en una funcionalidad similar de Power BI Desktop y Microsoft Excel 2016.This new feature is based on similar functionality in Power BI Desktop and Microsoft Excel 2016. La experiencia moderna de obtener datos proporciona capacidades de mashup de datos y transformación de datos gran mediante el generador de consultas de obtención de datos y expresiones de M.The modern Get Data experience provides immense data transformation and data mashup capabilities by using the Get Data query builder and M expressions.

La experiencia moderna de obtener datos proporciona compatibilidad para una amplia gama de orígenes de datos.The modern Get Data experience provides support for a wide range of data sources. A partir de ahora, las actualizaciones incluirá compatibilidad para conocer mucho más.Going forward, updates will include support for even more.

AS_Get_Data_in_SSDT

Una interfaz de usuario intuitiva y eficaz facilita la selección de los datos y las capacidades de transformación/mashup de datos más fáciles que nunca.A powerful and intuitive user interface makes selecting your data and data transformation/mashup capabilities easier than ever.

Mashup avanzada

Experimente la moderna de obtener datos y capacidades de mashup de M no se aplican a upraded de modelos tabulares existentes desde el nivel de compatibilidad 1200 1400.The modern Get Data experience and M mashup capabilities do not apply to existing tabular models upraded from the 1200 compatibility level to 1400. La nueva experiencia solo se aplica a los modelos nuevos creados en el nivel de compatibilidad 1400.The new experience only applies to new models created at the 1400 compatibility level.

Sugerencias de codificaciónEncoding hints

Esta versión presenta sugerencias de codificación, una característica avanzada que se usa para optimizar el procesamiento (actualización de datos) de los modelos tabulares en memoria grandes.This release introduces encoding hints, an advanced feature used to optimize processing (data refresh) of large in-memory tabular models. Para entender mejor la codificación, vea Performance Tuning de modelos tabulares en SQL Server 2012 Analysis Services notas del producto para comprender mejor la codificación.To better understand encoding, see Performance Tuning of Tabular Models in SQL Server 2012 Analysis Services whitepaper to better understand encoding.

  • Codificación del valor proporciona un mejor rendimiento de las consultas para las columnas que solo se usan normalmente para las agregaciones.Value encoding provides better query performance for columns that are typically only used for aggregations.

  • Codificación hash es preferible para las columnas de group by (a menudo valores de tabla de dimensiones) y las claves externas.Hash encoding is preferred for group-by columns (often dimension-table values) and foreign keys. Las columnas de cadena siempre son hash codificado.String columns are always hash encoded.

Las columnas numéricas pueden utilizar cualquiera de estos métodos de codificación.Numeric columns can use either of these encoding methods. Cuando Analysis Services empieza a procesar una tabla, si bien la tabla está vacía (con o sin particiones) o se realiza una operación de procesamiento de la tabla completa, se toman valores de ejemplo para que cada columna determinar si se debe aplicar codificación de hash o valor numérico .When Analysis Services starts processing a table, if either the table is empty (with or without partitions) or a full-table processing operation is being performed, samples values are taken for each numeric column to determine whether to apply value or hash encoding. De forma predeterminada, la codificación del valor se elige cuando el ejemplo de valores distintos en la columna es lo suficientemente grande como; en caso contrario, normalmente codificación hash proporciona una mejor compresión.By default, value encoding is chosen when the sample of distinct values in the column is large enough - otherwise hash encoding usually provides better compression. Es posible que Analysis Services cambiar el método de codificación después de la columna se ha procesado parcialmente basándose en más información sobre la distribución de datos y reiniciar el proceso de codificación Sin embargo, esto aumenta el tiempo de procesamiento y es ineficaz.It is possible for Analysis Services to change the encoding method after the column is partially processed based on further information about the data distribution, and restart the encoding process; however, this increases processing time and is inefficient. Las notas del producto de optimización del rendimiento trata de volver a codificar con más detalle y describen cómo detectar mediante SQL Server Profiler.The performance-tuning whitepaper discusses re-encoding in more detail and describes how to detect it using SQL Server Profiler.

Sugerencias de codificación permiten el Modelador especificar una preferencia para el método de codificación tiene conocimiento previo de generación de perfiles de datos o en respuesta a volver a codificar los eventos de seguimiento.Encoding hints allow the modeler to specify a preference for the encoding method given prior knowledge from data profiling and/or in response to re-encoding trace events. Puesto que la agregación con las columnas con codificación hash es más lento de a través de las columnas de valor codificado, valor de codificación puede especificarse como una sugerencia para estas columnas.Since aggregation over hash-encoded columns is slower than over value-encoded columns, value encoding may be specified as a hint for such columns. No se garantiza que se aplica la preferencia.It is not guaranteed that the preference is applied. Es una sugerencia en lugar de una configuración.It is a hint as opposed to a setting. Para especificar una sugerencia de codificación, establezca la propiedad EncodingHint en la columna.To specify an encoding hint, set the EncodingHint property on the column. Los valores posibles son "Default", "Value" y "Hash".Possible values are "Default", "Value" and "Hash". El siguiente fragmento de metadatos basados en JSON desde el archivo Model.bim especifica el valor de codificación para la columna Sales Amount.The following snippet of JSON-based metadata from the Model.bim file specifies value encoding for the Sales Amount column.

{
    "name": "Sales Amount",
    "dataType": "decimal",
    "sourceColumn": "SalesAmount",
    "formatString": "\\$#,0.00;(\\$#,0.00);\\$#,0.00",
    "sourceProviderType": "Currency",
    "encodingHint": "Value"
}

Jerarquías desigualesRagged hierarchies

En los modelos tabulares, puede modelar jerarquías de elementos primarios y secundarios.In tabular models, you can model parent-child hierarchies. Las jerarquías con un número diferente de niveles suelen denominarse jerarquías desiguales.Hierarchies with a differing number of levels are often referred to as ragged hierarchies. De forma predeterminada, las jerarquías desiguales se muestran con espacios en blanco para los niveles situados por debajo del elemento secundario más bajo.By default, ragged hierarchies are displayed with blanks for levels below the lowest child. Este es un ejemplo de una jerarquía desigual en un organigrama:Here's an example of a ragged hierarchy in an organizational chart:

AS_Ragged_Hierarchy

En esta versión se incluye la propiedad Ocultar miembros .This release introduces the Hide Members property. Puede establecer la propiedad Ocultar miembros de una jerarquía en Hide blank members(Ocultar miembros en blanco).You can set the Hide Members property for a hierarchy to Hide blank members.

AS_Hide_Blank_Members

Nota

Los miembros en blanco del modelo se representan mediante un valor DAX en blanco, en lugar de una cadena vacía.Blank members in the model are represented by a DAX blank value, not an empty string.

Cuando se establece en Hide blank members(Ocultar miembros en blanco) y se implementa el modelo, se muestra una versión de la jerarquía más fácil de leer en los clientes de informes, como Excel.When set to Hide blank members, and the model deployed, an easier to read version of the hierarchy is shown in reporting clients like Excel.

AS_Non_Ragged_Hierarchy

Filas de detallesDetail Rows

Ahora puede definir un conjunto de filas personalizado que contribuya a un valor de medida.You can now define a custom row set contributing to a measure value. La opción Filas de detalles es similar a la acción de obtención de detalles predeterminada de los modelos multidimensionales.Detail Rows is similar to the default drillthrough action in multidimensional models. Permite a los usuarios finales ver la información con más detalle que el nivel agregado.This allows end-users to view information in more detail than the aggregated level.

En la siguiente tabla de dinámica se muestran las ventas totales por Internet por año del modelo tabular de ejemplo de Adventure Works.The following PivotTable shows Internet Total Sales by year from the Adventure Works sample tabular model. Para ver las filas de detalles, haga clic con el botón derecho en una celda con un valor agregado de la medida y, después, haga clic en Mostrar detalles .You can right-click a cell with an aggregated value from the measure and then click Show Details to view the detail rows.

AS_Show_Details

De forma predeterminada, se muestran los datos asociados en la tabla de ventas por Internet.By default, the associated data in the Internet Sales table is displayed. Este comportamiento limitado no suele ser significativo para el usuario, ya que la tabla podría no tener las columnas necesarias para mostrar información útil, como el nombre del cliente y la información del pedido.This limited behavior is often not meaningful for the user because the table may not have the necessary columns to show useful information such as customer name and order information. Con Filas de detalles, puede especificar una propiedad Expresión de filas de detalles para las medidas.With Detail Rows, you can specify a Detail Rows Expression property for measures.

Propiedad Expresión de filas de detalles para medidasDetail Rows Expression property for measures

La propiedad Expresión de filas de detalles para las medidas permite a los autores de modelos personalizar las columnas y las filas que se devuelven al usuario final.The Detail Rows Expression property for measures allows model authors to customize the columns and rows returned to the end-user.

AS_Detail_Rows_Expression_Property

El SELECTCOLUMNS función DAX se usa normalmente en una expresión de filas de detalle.The SELECTCOLUMNS DAX function is commonly used in a Detail Rows Expression. En el ejemplo siguiente se definen las columnas que se devuelven para las filas de la tabla de ventas por Internet del modelo tabular de ejemplo de Adventure Works:The following example defines the columns to be returned for rows in the Internet Sales table in the sample Adventure Works tabular model:

SELECTCOLUMNS(
    'Internet Sales',
    "Customer First Name", RELATED( Customer[Last Name]),
    "Customer Last Name", RELATED( Customer[First Name]),
    "Order Date", 'Internet Sales'[Order Date],
    "Internet Total Sales", [Internet Total Sales]
)

Una vez que se ha definido la propiedad y se ha implementado el modelo, se devuelve un conjunto de filas personalizado cuando el usuario selecciona Mostrar detalles.With the property defined and the model deployed, a custom row set is returned when the user selects Show Details. Se respeta automáticamente el contexto de filtro de la celda que se ha seleccionado.It automatically honors the filter context of the cell that was selected. En este ejemplo, solo se muestran las filas del valor 2010:In this example, only the rows for 2010 value are displayed:

AS_Detail_Rows

Propiedad Expresión de filas de detalles predeterminada para tablasDefault Detail Rows Expression property for tables

Además de las medidas, las tablas también tienen una propiedad para definir una expresión de filas de detalles.In addition to measures, tables also have a property to define a detail rows expression. La propiedad Expresión de filas de detalles predeterminada actúa como valor predeterminado para todas las medidas de la tabla.The Default Detail Rows Expression property acts as the default for all measures within the table. Las medidas que no tienen su propia expresión definida hereda de la expresión de la tabla y mostrar el conjunto de filas definido para la tabla.Measures that do not have their own expression defined inherits the expression from the table and show the row set defined for the table. Esto permite reutilizar las expresiones y nuevas medidas que se agregan a la tabla automáticamente más tarde hereda la expresión.This allows reuse of expressions, and new measures added to the table later automatically inherits the expression.

AS_Default_Detail_Rows_Expression

Función DAX DETAILROWSDETAILROWS DAX Function

En esta versión se incluye una nueva función DAX DETAILROWS que devuelve el conjunto de filas definido por la expresión de filas de detalles.Included in this release is a new DETAILROWS DAX function that returns the row set defined by the detail rows expression. Funciona de forma similar a la instrucción DRILLTHROUGH en MDX, que también es compatible con las expresiones de filas de detalles definidas en modelos tabulares.It works similarly to the DRILLTHROUGH statement in MDX, which is also compatible with detail rows expressions defined in tabular models.

La siguiente consulta DAX devuelve el conjunto de filas definido por la expresión de filas de detalles para la medida o su tabla.The following DAX query returns the row set defined by the detail rows expression for the measure or its table. Si no se define ninguna expresión, se devuelven los datos de la tabla de ventas por Internet, ya que es la tabla que contiene la medida.If no expression is defined, the data for the Internet Sales table is returned because it's the table containing the measure.

EVALUATE DETAILROWS([Internet Total Sales])

Seguridad de nivel de objetoObject-level security

Esta versión presenta seguridad de nivel de objeto para tablas y columnas.This release introduces object-level security for tables and columns. Además de restringir el acceso a los datos de tabla y columna, se pueden proteger nombres de tablas y columnas confidenciales.In addition to restricting access to table and column data, sensitive table and column names can be secured. Esto ayuda a impedir que un usuario malintencionado detecte la existencia de una tabla.This helps prevent a malicious user from discovering such a table exists.

Seguridad de nivel de objeto se debe establecer mediante metadatos basados en JSON, Tabular Model Scripting Language (TMSL) o el modelo de objetos tabulares (TOM).Object-level security must be set using the JSON-based metadata, Tabular Model Scripting Language (TMSL), or Tabular Object Model (TOM).

Por ejemplo, el código siguiente ayuda a proteger la tabla Product del modelo tabular de ejemplo de Adventure Works. Para ello, establece la propiedad MetadataPermission de la clase TablePermission en None.For example, the following code helps secure the Product table in the sample Adventure Works tabular model by setting the MetadataPermission property of the TablePermission class to None.

//Find the Users role in Adventure Works and secure the Product table
ModelRole role = db.Model.Roles.Find("Users");
Table productTable = db.Model.Tables.Find("Product");
if (role != null && productTable != null)
{
    TablePermission tablePermission;
    if (role.TablePermissions.Contains(productTable.Name))
    {
        tablePermission = role.TablePermissions[productTable.Name];
    }
    else
    {
        tablePermission = new TablePermission();
        role.TablePermissions.Add(tablePermission);
        tablePermission.Table = productTable;
    }
    tablePermission.MetadataPermission = MetadataPermission.None;
}
db.Update(UpdateOptions.ExpandFull);

Vistas de administración dinámica (DMV)Dynamic Management Views (DMVs)

DMV son consultas en SQL Server Profiler que devuelven información sobre las operaciones del servidor local y el estado del servidor.DMVs are queries in SQL Server Profiler that return information about local server operations and server health. Esta versión incluye mejoras a vistas de administración dinámica (DMV) para los modelos tabulares en los niveles de compatibilidad 1200 y 1400.This release includes improvements to Dynamic Management Views (DMV) for tabular models at the 1200 and 1400 compatibility levels.

DISCOVER_CALC_DEPENDENCY ahora funciona con los modelos tabulares 1200 y 1400.DISCOVER_CALC_DEPENDENCY Now works with tabular 1200 and 1400 models. Los modelos tabulares 1400 mostrar las dependencias entre las particiones de M, expresiones de M y orígenes de datos estructurados.Tabular 1400 models show dependencies between M partitions, M expressions and structured data sources. Para obtener más información, consulte el blog de Analysis Services.To learn more, see the Analysis Services blog.

MDSCHEMA_MEASUREGROUP_DIMENSIONS mejoras se incluyen para esta DMV, que se usa por diversas herramientas de cliente para mostrar la dimensionalidad de medida.MDSCHEMA_MEASUREGROUP_DIMENSIONS Improvements are included for this DMV, which is used by various client tools to show measure dimensionality. Por ejemplo, la característica de exploración en las tablas dinámicas de Excel permite al usuario para la exploración entre a dimensiones relacionadas con las medidas seleccionadas.For example, the Explore feature in Excel Pivot Tables allows the user to cross-drill to dimensions related to the selected measures. Esta versión corrige las columnas de la cardinalidad, que anteriormente se mostraban valores incorrectos.This release corrects the cardinality columns, which were previously showing incorrect values.

Mejoras de DAXDAX enhancements

Esta versión incluye compatibilidad con nuevas funciones de DAX y funciones.This release includes support for new DAX functions and functionality. Con el fin de aprovechar las ventajas, deberá usar la versión más reciente de SSDT.In order to take advantage, you need to use the latest version of SSDT. Para obtener más información, consulte funciones DAX nuevas.To learn more, see New DAX functions.

Una de las partes más importantes de las nuevas funciones DAX es el nuevo operador IN Function CONTAINSROW para expresiones DAX.One of the most important pieces of new DAX functionality is the new IN Operator / CONTAINSROW Function for DAX expressions. Esto es similar al operador TSQL IN que se suele usar para especificar varios valores en una cláusula WHERE .This is similar to the TSQL IN operator commonly used to specify multiple values in a WHERE clause.

Antes, lo habitual era especificar filtros de valores múltiples mediante el operador lógico OR , como en la expresión de medida siguiente:Previously, it was common to specify multi-value filters using the logical OR operator, like in the following measure expression:

Filtered Sales:=CALCULATE (
        [Internet Total Sales],
                 'Product'[Color] = "Red"
            || 'Product'[Color] = "Blue"
            || 'Product'[Color] = "Black"
    )

Esto se ha simplificado mediante el operador IN :This is simplified using the IN operator:

Filtered Sales:=CALCULATE (
        [Internet Total Sales], 'Product'[Color] IN { "Red", "Blue", "Black" }
    )

En este caso, el operador IN hace referencia a una tabla de una sola columna con tres filas, una para cada uno de los colores especificados.In this case, the IN operator refers to a single-column table with 3 rows; one for each of the specified colors. Observe que la sintaxis del constructor de tabla usa llaves.Note the table constructor syntax uses curly braces.

El operador IN es funcionalmente equivalente a la función CONTAINSROW :The IN operator is functionally equivalent to the CONTAINSROW function:

Filtered Sales:=CALCULATE (
        [Internet Total Sales], CONTAINSROW({ "Red", "Blue", "Black" }, 'Product'[Color])
    )

El operador IN también se puede usar eficazmente con constructores de tabla.The IN operator can also be used effectively with table constructors. Por ejemplo, la medida siguiente filtra por combinaciones de colores y categorías de producto:For example, the following measure filters by combinations of product color and category:

Filtered Sales:=CALCULATE (
        [Internet Total Sales],
        FILTER( ALL('Product'),
              ( 'Product'[Color] = "Red"   && Product[Product Category Name] = "Accessories" )
         || ( 'Product'[Color] = "Blue"  && Product[Product Category Name] = "Bikes" )
         || ( 'Product'[Color] = "Black" && Product[Product Category Name] = "Clothing" )
        )
    )

Con el nuevo operador IN , la expresión de medida anterior ahora es equivalente a la siguiente:By using the new IN operator, the measure expression above is now equivalent to the one below:

Filtered Sales:=CALCULATE (
        [Internet Total Sales],
        FILTER( ALL('Product'),
            ('Product'[Color], Product[Product Category Name]) IN
            { ( "Red", "Accessories" ), ( "Blue", "Bikes" ), ( "Black", "Clothing" ) }
        )
    )

Mejoras adicionalesAdditional improvements

Además de todas las características nuevas, Analysis Services, SSDT y SSMS también incluyen las siguientes mejoras:In addition to all the new features, Analysis Services, SSDT, and SSMS also include the following improvements:

  • Reutilización de la jerarquía y la columna aparece en ubicaciones más útiles en la lista de campos de Power BI.Hierarchy and column reuse surfaced in more helpful locations in the Power BI field list.
  • Relaciones de fecha para crear fácilmente relaciones a las dimensiones de fecha en función de los campos de fecha.Date relationships to easily create relationships to date dimensions based on date fields.
  • Opción de instalación predeterminada de Analysis Services es ahora para el modo tabular.Default installation option for Analysis Services is now for tabular mode.
  • Nuevos orígenes de datos obtener datos (Power Query).New Get Data (Power Query) data sources.
  • Editor DAX para SSDT.DAX Editor for SSDT.
  • Compatibilidad con orígenes de datos DirectQuery existentes M de consultas.Existing DirectQuery data sources support for M queries.
  • Mejoras de SSMS, como ver, editar y compatibilidad de scripting de orígenes de datos estructurados.SSMS improvements, such as viewing, editing, and scripting support for structured data sources.

Vea tambiénSee also

Notas de la versión SQL Server 2017 SQL Server 2017 Release Notes
Novedades de SQL Server 2017What's new in SQL Server 2017