Пример #1
0
        /// <summary>
        /// Create Column Binding Data Item
        /// </summary>
        /// <param name="dsv"></param>
        /// <param name="tableName"></param>
        /// <param name="columnName"></param>
        /// <param name="dataType"></param>
        /// <returns></returns>
        public static Microsoft.AnalysisServices.DataItem CREATE_COLUMN_BINDING_DATA_ITEM(
            Microsoft.AnalysisServices.DataSourceView dsv,
            String tableName,
            String columnName,
            System.Data.OleDb.OleDbType dataType)
        {
            Microsoft.AnalysisServices.DataItem dataItem = null;
            DataTable data_table = dsv.Schema.Tables[tableName];

            if (data_table == null)
            {
                //module_helper.helper.print_message_to_client( "Table "+tableName+" is not existed in current DSV","warning");
            }
            DataColumn dataColumn = data_table.Columns[columnName];

            if (dataColumn == null)
            {
                //module_helper.helper.print_message_to_client( "Column "+columnName+" is not existed in table "+tableName,"warning");
            }
            dataItem = new Microsoft.AnalysisServices.DataItem(tableName, dataColumn.ColumnName);
            if (dataType != null)
            {
                dataItem.DataType = dataType;
            }
            else
            {
                dataItem.DataType = Microsoft.AnalysisServices.OleDbTypeConverter.GetRestrictedOleDbType(dataColumn.DataType);
            }
            return(dataItem);
        }
Пример #2
0
 public static void ADD_ATTRIBUTE_TO_DIMENSION(
     Microsoft.AnalysisServices.DataSourceView cubeDSV,
     Microsoft.AnalysisServices.Dimension dim,
     String tableID,
     String colName,
     String attribID,
     String attribName,
     System.Data.OleDb.OleDbType type,
     Microsoft.AnalysisServices.AttributeUsage usage,
     String nameColumn,
     bool visible        = true,
     bool AttHierEnabled = true,
     Microsoft.AnalysisServices.OrderBy orderby = Microsoft.AnalysisServices.OrderBy.Name,
     String attDisplayFolder = "",
     String orderByAttName   = null,
     String attType          = "Regular",
     String valueColumn      = null,
     System.Data.OleDb.OleDbType valueColtype = System.Data.OleDb.OleDbType.Integer)
 {
     Microsoft.AnalysisServices.DimensionAttribute attr = dim.Attributes.FindByName(attribName);
     if (attr == null)
     {
         attr       = dim.Attributes.Add(attribID);
         attr.Name  = attribName;
         attr.Usage = usage;
         attr.Type  = Microsoft.AnalysisServices.AttributeType.Regular;
         attr.AttributeHierarchyEnabled = AttHierEnabled;
         Microsoft.AnalysisServices.DataItem dataItem = CREATE_COLUMN_BINDING_DATA_ITEM(cubeDSV, tableID, colName, type);
         attr.KeyColumns.Add(dataItem);
         attr.KeyColumns[0].DataType    = type;
         attr.AttributeHierarchyVisible = visible;
         attr.OrderBy = orderby;
         if (nameColumn != colName && nameColumn != "")
         {
             Microsoft.AnalysisServices.DataItem nameColDataItem = CREATE_COLUMN_BINDING_DATA_ITEM(cubeDSV, tableID, nameColumn, System.Data.OleDb.OleDbType.WChar);
             attr.NameColumn = nameColDataItem;
         }
         if (attDisplayFolder != null && attDisplayFolder != "")
         {
             attr.AttributeHierarchyDisplayFolder = attDisplayFolder;
         }
         if (orderByAttName != null && orderByAttName != "")
         {
             attr.OrderByAttributeID = orderByAttName;
         }
         if (valueColumn != null && valueColumn != "")
         {
             Microsoft.AnalysisServices.DataItem valueColDataItem = CREATE_COLUMN_BINDING_DATA_ITEM(cubeDSV, tableID, valueColumn, valueColtype);
             attr.ValueColumn = valueColDataItem;
         }
         //module_helper.helper.print_message_to_client( "Added attribute ["+attribName+"] to dimension ["+dim.Name+"]")
     }
 }
Пример #3
0
        /// <summary>
        /// Add measure into a measure group
        /// </summary>
        /// <param name="measureGroup"></param>
        /// <param name="tableID"></param>
        /// <param name="columnID"></param>
        /// <param name="measureName"></param>
        /// <param name="measureID"></param>
        /// <param name="displayFolder"></param>
        /// <param name="formatStr"></param>
        /// <param name="aggregationFunction"></param>
        /// <param name="visible"></param>
        /// <param name="sourceColDataType"></param>
        /// <param name="measureDataType"></param>
        public static void ADD_MEASURE_TO_MEASURE_GROUP(
            Microsoft.AnalysisServices.MeasureGroup measureGroup
            , String tableID
            , String columnID
            , String measureName
            , String measureID
            , String displayFolder
            , String formatStr
            , String aggregationFunction
            , bool visible             = true
            , String sourceColDataType = "double"
            , String measureDataType   = "double")
        {
            Microsoft.AnalysisServices.DataItem source = new Microsoft.AnalysisServices.DataItem();
            source.NullProcessing = Microsoft.AnalysisServices.NullProcessing.Preserve;
            Microsoft.AnalysisServices.Measure measure = new Microsoft.AnalysisServices.Measure(measureName, measureID);
            String aggType = aggregationFunction.ToLower();

            if (aggType == "count*")
            {
                Microsoft.AnalysisServices.RowBinding rowBind = new Microsoft.AnalysisServices.RowBinding();
                rowBind.TableID           = tableID;
                measure.AggregateFunction = Microsoft.AnalysisServices.AggregationFunction.Count;
                source.Source             = rowBind;
                //source.Source.TableID = tableID;
                measure.Source = source;
            }
            else
            {
                Microsoft.AnalysisServices.ColumnBinding colBind = new Microsoft.AnalysisServices.ColumnBinding();
                colBind.TableID           = tableID;
                colBind.ColumnID          = columnID;
                source.DataType           = SSAS_API_HELPER.GET_SSAS_OLEDB_TYPE_BY_NAME(sourceColDataType);
                source.Source             = colBind;
                measure.AggregateFunction = SSAS_API_HELPER.GET_SSAS_AGGREGATION_FUNCTION_BY_NAME(aggType.ToLower());
                if (aggType.ToLower() == "distinctcount")
                {
                    source.NullProcessing = Microsoft.AnalysisServices.NullProcessing.Automatic;
                }
                measure.Source = source;
            }
            measure.DataType = SSAS_API_HELPER.GET_SSAS_MEASURE_DATA_TYPE_BY_NAME(measureDataType);
            String dataType = sourceColDataType.ToLower();

            measure.DisplayFolder = displayFolder;
            //measure.FormatString = formatStr
            measure.Visible = visible;
            Microsoft.AnalysisServices.Measure measureEx = measureGroup.Measures.Find(measureID);
            if (measureEx != null)
            {
                //module_helper.helper.print_message_to_client( "measure ["+measureName+"] exists")
                measureEx.Name = measure.Name;
                measureEx.AggregateFunction = measure.AggregateFunction;
                measureEx.DataType          = SSAS_API_HELPER.GET_SSAS_MEASURE_DATA_TYPE_BY_NAME(measureDataType);
                measureEx.DisplayFolder     = measure.DisplayFolder;
                measureEx.Visible           = measure.Visible;
                measureEx.FormatString      = measure.FormatString;
                measureEx.Source            = source.Clone();
            }
            else
            {
                //module_helper.helper.print_message_to_client( "Added measure ["+measureName+"] to "+measureGroup.Name)
                measureGroup.Measures.Add(measure);
            }
        }