/// <summary>
        ///		Obtiene la consulta de una dimensión
        /// </summary>
        private QueryModel GetChildQuery(DimensionRequestModel dimensionRequest)
        {
            DimensionModel dimension = GetDimension(dimensionRequest);
            QueryModel     query     = new QueryModel(dimensionRequest.DimensionId, QueryModel.QueryType.Dimension, dimension.Id);

            // Prepara la consulta
            query.Prepare(dimension.DataSource);
            // Añade los campos clave
            foreach (DataSourceColumnModel column in dimension.DataSource.Columns.EnumerateValues())
            {
                if (column.IsPrimaryKey)
                {
                    query.AddPrimaryKey(dimensionRequest.GetRequestColumn(column.Id), column.Id, CheckIsColumnAtColumnRequested(column, dimensionRequest.Columns));
                }
            }
            // Asigna los campos
            foreach (DimensionColumnRequestModel columnRequest in dimensionRequest.Columns)
            {
                DataSourceColumnModel column = dimension.DataSource.Columns[columnRequest.ColumnId];

                if (column != null && !column.IsPrimaryKey)
                {
                    query.AddColumn(columnRequest.ColumnId, columnRequest);
                }
            }
            // Devuelve la consulta
            return(query);
        }