Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El concepto de autoexist limita el espacio del cubo a las celdas que realmente existen en el cubo en contraposición a las que podrían existir como resultado de crear todas las combinaciones posibles de miembros de jerarquía de atributos a partir de la misma jerarquía. Esto se debe a que los miembros de una jerarquía de atributos no pueden existir con miembros de otra jerarquía de atributos en la misma dimensión. Cuando se usan dos o más jerarquías de atributos de la misma dimensión en una instrucción SELECT, Analysis Services evalúa las expresiones de los atributos para asegurarse de que los miembros de esos atributos están correctamente definidos para cumplir los criterios de todos los demás atributos.
Por ejemplo, supongamos que está trabajando con atributos de la dimensión Geografía. Si tiene una expresión que devuelve todos los miembros del atributo City y otra expresión que limita los miembros del atributo Country a todos los países o regiones de Europa, esto hará que los miembros de city se confinan solo a las ciudades que pertenecen a países o regiones de Europa. Esto se debe a la característica AutoExists de Analysis Services. Los autoexists solo se aplican a los atributos de la misma dimensión porque intenta impedir que los registros de dimensión excluidos en una expresión de atributo se incluyan en las otras expresiones de atributo. Los autoexists también se pueden entender como la intersección resultante de las diferentes expresiones de atributos sobre las filas de dimensión.
Existencia de celdas
Las celdas siguientes siempre existen:
Los miembros (All) de cada jerarquía, al cruzarse con miembros de otras jerarquías en la misma dimensión.
Miembros calculados cuando se cruzan con sus hermanos no calculados, o con los padres o descendientes de estos hermanos no calculados.
Proporcionar celdas no existentes
Una celda no existente es una celda proporcionada por el sistema como respuesta a una consulta o cálculo que solicita una celda que no existe en el cubo. Por ejemplo, si tiene un cubo que tiene una jerarquía de atributos de Ciudad y una jerarquía de atributos de País que pertenecen a la dimensión Geografía, y una medida de Monto de Ventas por Internet, el espacio de este cubo solo incluye a los miembros que coexisten entre sí. Por ejemplo, si la jerarquía de atributos City incluye las ciudades de Nueva York, Londres, París, Tokio y Melbourne; y la jerarquía de atributos Country incluyen los países Estados Unidos, Reino Unido, Francia, Japón y Australia; después, el espacio del cubo no incluye el espacio (celda) en la intersección de París y Estados Unidos.
Al consultar celdas que no existen, las celdas no existentes devuelven valores NULL; es decir, no pueden contener cálculos y no se puede definir un cálculo que escriba en este espacio. Por ejemplo, la siguiente declaración incluye celdas que no existen.
SELECT [Customer].[Gender].[Gender].Members ON COLUMNS,
{[Customer].[Customer].[Aaron A. Allen]
,[Customer].[Customer].[Abigail Clark]} ON ROWS
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
Nota:
Esta consulta utiliza la función Members (Set) (MDX) para devolver el conjunto de miembros de la jerarquía de atributos de Género en el eje de columnas y cruza este conjunto con el conjunto especificado de miembros de la jerarquía de atributos de Cliente en el eje de filas.
Al ejecutar la consulta anterior, la celda de la intersección de Aaron A. Allen y Female muestra un valor NULL. Del mismo modo, la celda en la intersección de Abigail Clark y Male muestra un valor NULL. Estas celdas no existen y no pueden contener un valor, pero las celdas que no existen pueden aparecer en el resultado devuelto por una consulta.
Cuando se usa la función Crossjoin (MDX) para devolver el producto cruzado de los miembros de jerarquía de atributos de las jerarquías de atributos en la misma dimensión, la auto-existe limita esas tuplas que se devuelven al conjunto de tuplas que existen realmente, en lugar de devolver un producto cartesiano completo. Por ejemplo, ejecute y examine los resultados de la ejecución de la consulta siguiente.
SELECT CROSSJOIN
(
{[Customer].[Country].[United States]},
[Customer].[State-Province].Members
) ON 0
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
Nota:
Observe que 0 se usa para designar el eje de columnas, que es abreviado para el eje(0), que es el eje de columnas.
La consulta anterior solo devuelve celdas para los miembros de cada jerarquía de atributos en la consulta que coexisten entre ellas. La consulta anterior también se puede escribir mediante la nueva variante * de la función Crossjoin (MDX).
SELECT
[Customer].[Country].[United States] *
[Customer].[State-Province].Members
ON 0
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
La consulta anterior también se puede escribir de la siguiente manera:
SELECT [Customer].[State-Province].Members
ON 0
FROM [Adventure Works]
WHERE (Measures.[Internet Sales Amount],
[Customer].[Country].[United States])
Los valores de celda devueltos serán idénticos, aunque los metadatos del conjunto de resultados serán diferentes. Por ejemplo, con la consulta anterior, la jerarquía Country se movió al eje de segmentación (en la cláusula WHERE) y, por lo tanto, no aparece explícitamente en el conjunto de resultados.
Cada una de estas tres consultas anteriores muestra el efecto del comportamiento de la "auto-exists" en SQL Server Analysis Services.
Autoexists profundos y superficiales
Los autoexists se pueden aplicar a las expresiones como Deep o Shallow.
Deep Autoexists significa que todas las expresiones se evaluarán para satisfacer el espacio más profundo posible después de aplicar las expresiones de segmentación, las expresiones de selección secundaria en el eje, etc.
Shallow Autoexists significa que las expresiones externas se evalúan antes de la expresión actual y esos resultados se pasan a la expresión actual. La configuración predeterminada es autoexists profundos.
El siguiente escenario y los ejemplos servirán para ilustrar los diferentes tipos de Autoexistss. En los ejemplos siguientes se crearán dos conjuntos: uno como una expresión calculada y la otra como una expresión constante.
//Obtain the Top 10 best reseller selling products by Name
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
set Preferred10Products as '
{[Product].[Model Name].&[Mountain-200],
[Product].[Model Name].&[Road-250],
[Product].[Model Name].&[Mountain-100],
[Product].[Model Name].&[Road-650],
[Product].[Model Name].&[Touring-1000],
[Product].[Model Name].&[Road-550-W],
[Product].[Model Name].&[Road-350-W],
[Product].[Model Name].&[HL Mountain Frame],
[Product].[Model Name].&[Road-150],
[Product].[Model Name].&[Touring-3000]
}'
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Top10SellingProducts on 1
from [Adventure Works]
El conjunto de resultados obtenido es:
| Importe de ventas del revendedor | Importe de descuento | Descuento PCT | |
| Montaña-200 | $14,356,699.36 | $19.012.71 | 0.13% |
| Carretera 250 | $9,377,457.68 | $4.032.47 | 0,04% |
| Montaña-100 | $8,568,958.27 | $139,393,27 | 1.63% |
| Carretera 650 | $7,442,141.81 | $39,698,30 | 0,53% |
| Touring-1000 | $6,723,794.29 | $166,144.17 | 2.47% |
| Carretera 550-W | $3,668,383.88 | $1.901.97 | 0,05% |
| Carretera 350-W | $3,665,932.31 | $20,946,50 | 0,57% |
| Cuadro HL de Montaña | $3,365,069.27 | $174.11 | 0.01% |
| Carretera 150 | $2,363,805.16 | 0,00 USD | 0,00% |
| Touring-3000 | $2.046.508.26 | $79,582,15 | 3.89% |
El conjunto obtenido de productos parece ser el mismo que Preferred10Products; Por lo tanto, compruebe el conjunto Preferred10Products:
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
set Preferred10Products as '
{[Product].[Model Name].&[Mountain-200],
[Product].[Model Name].&[Road-250],
[Product].[Model Name].&[Mountain-100],
[Product].[Model Name].&[Road-650],
[Product].[Model Name].&[Touring-1000],
[Product].[Model Name].&[Road-550-W],
[Product].[Model Name].&[Road-350-W],
[Product].[Model Name].&[HL Mountain Frame],
[Product].[Model Name].&[Road-150],
[Product].[Model Name].&[Touring-3000]
}'
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Preferred10Products on 1
from [Adventure Works]
Según los siguientes resultados, ambos conjuntos (Top10SellingProducts, Preferred10Products) son los mismos.
| Importe de ventas del revendedor | Importe de descuento | Descuento PCT | |
| Montaña-200 | $14,356,699.36 | $19.012.71 | 0.13% |
| Carretera 250 | $9,377,457.68 | $4.032.47 | 0,04% |
| Montaña-100 | $8,568,958.27 | $139,393,27 | 1.63% |
| Carretera 650 | $7,442,141.81 | $39,698,30 | 0,53% |
| Touring-1000 | $6,723,794.29 | $166,144.17 | 2.47% |
| Carretera 550-W | $3,668,383.88 | $1.901.97 | 0,05% |
| Carretera 350-W | $3,665,932.31 | $20,946,50 | 0,57% |
| HL Marco de Montaña | $3,365,069.27 | $174.11 | 0.01% |
| Carretera 150 | $2,363,805.16 | 0,00 USD | 0,00% |
| Touring-3000 | $2.046.508.26 | $79,582,15 | 3.89% |
En el siguiente ejemplo se ilustrará el concepto de Autoexists profundo. En el ejemplo, estamos filtrando [Top10SellingProducts] por el atributo [Línea de producto] de [Product] para los del grupo [Mountain]. Tenga en cuenta que ambos atributos (filtrador y eje) pertenecen a la misma dimensión, [Product].
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
// Preferred10Products set removed for clarity
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Top10SellingProducts on 1
from [Adventure Works]
where [Product].[Product Line].[Mountain]
Genera el siguiente conjunto de resultados:
| Importe de ventas del revendedor | Importe de descuento | Descuento PCT | |
| Montaña-200 | $14,356,699.36 | $19.012.71 | 0.13% |
| Montaña-100 | $8,568,958.27 | $139,393,27 | 1.63% |
| Marco de montaña HL | $3,365,069.27 | $174.11 | 0.01% |
| Montaña-300 | $1,907,249.38 | $876.95 | 0,05% |
| Montaña-500 | $1,067,327.31 | $17,266,09 | 1.62% |
| Mountain-400-W | $592,450,05 | $303.49 | 0,05% |
| LL Marco de Montaña | $521,864.42 | $252.41 | 0,05% |
| ML Mountain Frame-W | $482,953.16 | $206.95 | 0,04% |
| ML Mountain Frame | $343,785.29 | $161.82 | 0,05% |
| Shorts de montaña para mujer | $260,304.09 | $6.675.56 | 2.56% |
En el conjunto de resultados anterior tenemos siete recién llegados a la lista de Top10SellingProducts y Mountain-200, Mountain-100 y HL Mountain Frame se han movido a la parte superior de la lista. En el conjunto de resultados anterior, esos tres valores se intercalaron.
Esto se denomina Deep Autoexists, porque el conjunto Top10SellingProducts se evalúa para cumplir las condiciones de segmentación de la consulta. Deep Autoexists significa que todas las expresiones se evaluarán para alcanzar la mayor profundidad posible del espacio después de aplicar las expresiones de segmentador, las expresiones de selección secundaria en el eje, etc.
Sin embargo, es posible que desee poder realizar el análisis sobre Top10SellingProducts como equivalente a Preferred10Products, como en el ejemplo siguiente:
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
set Preferred10Products as '
{[Product].[Model Name].&[Mountain-200],
[Product].[Model Name].&[Road-250],
[Product].[Model Name].&[Mountain-100],
[Product].[Model Name].&[Road-650],
[Product].[Model Name].&[Touring-1000],
[Product].[Model Name].&[Road-550-W],
[Product].[Model Name].&[Road-350-W],
[Product].[Model Name].&[HL Mountain Frame],
[Product].[Model Name].&[Road-150],
[Product].[Model Name].&[Touring-3000]
}'
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Preferred10Products on 1
from [Adventure Works]
where [Product].[Product Line].[Mountain]
Genera el siguiente conjunto de resultados:
| Importe de ventas del revendedor | Importe de descuento | Descuento PCT | |
| Montaña-200 | $14,356,699.36 | $19.012.71 | 0.13% |
| Montaña-100 | $8,568,958.27 | $139,393,27 | 1.63% |
| HL Marco de Montaña | $3,365,069.27 | $174.11 | 0.01% |
En los resultados anteriores, la segmentación da un resultado que contiene solo los productos de "Preferred10Products" que forman parte del grupo [Mountain] en [Producto].[Línea de producto], como se esperaba, porque "Preferred10Products" es una expresión constante.
Este conjunto de resultados también se entiende como Autoexists superficial. Esto se debe a que la expresión se evalúa antes de la cláusula de subdivisión. En el ejemplo anterior, la expresión era una expresión constante con fines ilustrativos con el fin de introducir el concepto.
El comportamiento de autoexists se puede modificar en el nivel de sesión mediante la Autoexists propiedad de cadena de conexión. El ejemplo siguiente comienza abriendo una nueva sesión y agregando la propiedad Autoexists=3 a la cadena de conexión. Debe abrir una nueva conexión para realizar el ejemplo. Una vez establecida la conexión con la configuración autoexist, permanecerá en vigor hasta que finalice esa conexión.
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
//Preferred10Products set removed for clarity
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Top10SellingProducts on 1
from [Adventure Works]
where [Product].[Product Line].[Mountain]
El siguiente conjunto de resultados muestra ahora el comportamiento superficial de Autoexists.
| Importe de ventas del revendedor | Importe de descuento | Descuento PCT | |
| Montaña-200 | $14,356,699.36 | $19.012.71 | 0.13% |
| Montaña-100 | $8,568,958.27 | $139,393,27 | 1.63% |
| HL Mountain Frame | $3,365,069.27 | $174.11 | 0.01% |
El comportamiento de autoexist se puede modificar mediante el parámetro AUTOEXISTS=[1|2|3] en la cadena de conexión; consulte Propiedades XMLA admitidas (XMLA) y ConnectionString para el uso de parámetros.
Véase también
Conceptos clave en MDX (Analysis Services)
Espacio del cubo
Tuplas
Trabajar con miembros, tuplas y conjuntos (MDX)
Totales visuales y totales no visuales
Referencia del lenguaje MDX (MDX)
Referencia de expresiones multidimensionales (MDX)