Exemplo n.º 1
0
 private void AddLinkDimensionMeasureGroup(CbMeasure_M aCbMeasure, CbMeasureGroup_M aCbMeasureGroup)
 {
     try
     {
         CbDimension_M aCbDimension = aCbMeasure.ReferenceToDimension;
         RegularMeasureGroupDimension objRegMGDim = new RegularMeasureGroupDimension();
         MeasureGroupAttribute        objMGA      = new MeasureGroupAttribute();
         objRegMGDim = aCbMeasureGroup.MeasureGroupObj.Dimensions.Add(aCbDimension.CubeDimensionObj.ID);
         //Link TableKey in DimensionTable with TableKey in FactTable Measure Group
         objMGA      = objRegMGDim.Attributes.Add(aCbDimension.DimensionObj.KeyAttribute.ID);
         objMGA.Type = MeasureGroupAttributeType.Granularity;
         objMGA.KeyColumns.Add(
             CreateDataItem(aCbMeasureGroup.ReferenceToDsDwTableMap.DwTableName,
                            aCbMeasure.ReferenceToDsDwColumnMap.DwColumn.Name,
                            NullProcessing.UnknownMember,
                            aCbMeasure.ReferenceToDsDwColumnMap.DwColumn.DataType));
     }
     catch (Exception ex)
     {
         AppendLogLine("Error in creating link between measure group and dimension. Error Message -> " + ex.Message);
         throw;
     }
 }
Exemplo n.º 2
0
        public void SyncToDsDwMap(DsDwMap_M aDsDwMap, bool aReload)
        {
            ReferenceToDsDwMap = aDsDwMap;
            if (aReload)
            {
                MeasureGroupList.AList.Clear();
                DimensionList.AList.Clear();
            }
            if (aDsDwMap != null)
            {
                foreach (DsDwTableMap_M aDsDwTableMap in aDsDwMap.DsDwTableMapList.Where(tm => tm != null))
                {
                    CbMeasureGroup_M aCbMeasureGroup = MeasureGroupList.AList.FirstOrDefault(mg => mg.ReferenceToDsDwTableMapGuid == aDsDwTableMap.MyGuid);
                    if (aCbMeasureGroup != null)
                    {
                        aCbMeasureGroup.ReferenceToDsDwTableMap = aDsDwTableMap;
                    }
                    else
                    {
                        aCbMeasureGroup = new CbMeasureGroup_M
                        {
                            Name = aDsDwTableMap.DwSchemaTableName.Replace("dbo.", "").Replace(".", ""),
                            ReferenceToDsDwTableMap = aDsDwTableMap
                        };
                        MeasureGroupList.AList.Add(aCbMeasureGroup);
                    }

                    CbDimension_M aCbDimension = DimensionList.AList.FirstOrDefault(mg => mg.ReferenceToDsDwTableMapGuid == aDsDwTableMap.MyGuid);
                    if (aCbDimension != null)
                    {
                        aCbDimension.ReferenceToDsDwTableMap = aDsDwTableMap;
                    }
                    else
                    {
                        aCbDimension = new CbDimension_M
                        {
                            Name = aDsDwTableMap.DwSchemaTableName.Replace("dbo.", "").Replace(".", ""),
                            ReferenceToDsDwTableMap = aDsDwTableMap
                        };
                        DimensionList.AList.Add(aCbDimension);
                    }
                    aCbMeasureGroup.FactDimension = aCbDimension;

                    if (aDsDwTableMap.DsDwColumnMapList != null)
                    {
                        foreach (DsDwColumnMap_M aDsDwColumnMap in aDsDwTableMap.DsDwColumnMapList.Where(cm => cm != null && cm.Include))
                        {
                            CbMeasure_M aCbMeasure = aCbMeasureGroup.MeasureList.FirstOrDefault(mg => mg.ReferenceToDsDwColumnMapGuid == aDsDwColumnMap.MyGuid);
                            if (aCbMeasure != null)
                            {
                                aCbMeasure.ReferenceToDsDwColumnMap = aDsDwColumnMap;
                            }
                            else
                            {
                                aCbMeasure = new CbMeasure_M
                                {
                                    Name = aDsDwColumnMap.DwColumn.Name,
                                    ReferenceToDsDwColumnMap = aDsDwColumnMap
                                };
                                aCbMeasureGroup.MeasureList.Add(aCbMeasure);
                                aCbMeasure.UpdateProperties();
                            }

                            CbDimensionAttribute_M aCbDimensionAttribute = aCbDimension.AttributeList.FirstOrDefault(mg => mg.ReferenceToDsDwColumnMapGuid == aDsDwColumnMap.MyGuid);
                            if (aCbDimensionAttribute != null)
                            {
                                aCbDimensionAttribute.ReferenceToDsDwColumnMap = aDsDwColumnMap;
                            }
                            else
                            {
                                aCbDimensionAttribute = new CbDimensionAttribute_M
                                {
                                    Name = aDsDwColumnMap.DwColumn.Name,
                                    ReferenceToDsDwColumnMap = aDsDwColumnMap
                                };
                                aCbDimension.AttributeList.Add(aCbDimensionAttribute);
                                aCbDimensionAttribute.UpdateProperties();
                            }
                        }
                        aCbMeasureGroup.MeasureList.RemoveAll(m => m == null || m.ReferenceToDsDwColumnMap == null);
                        aCbDimension.AttributeList.RemoveAll(a => a == null || a.ReferenceToDsDwColumnMap == null);
                    }
                }

                MeasureGroupList.AList.RemoveAll(mg => mg == null || mg.ReferenceToDsDwTableMap == null);
                DimensionList.AList.RemoveAll(d => d == null || d.ReferenceToDsDwTableMap == null);

                //fix ReferenceToDimension links
                //SerializableObject.FixAllReferences();
                foreach (CbMeasureGroup_M aCbMeasureGroup in MeasureGroupList.AList)
                {
                    foreach (CbMeasure_M aCbMeasure in aCbMeasureGroup.MeasureList.Where(m => m != null && m.ReferenceToDsDwColumnMap != null))
                    {
                        if (aCbMeasure.ReferenceToDsDwColumnMap.Transformation == DsDwColumnTransformation.ForeignKey)
                        {
                            aCbMeasure.ReferenceToDimension =
                                DimensionList.AList.FirstOrDefault(
                                    dm => dm.ReferenceToDsDwTableMap == aCbMeasure.ReferenceToDsDwColumnMap.DwForeignKeyReferencedTableMap);
                        }
                        else
                        {
                            aCbMeasure.ReferenceToDimension = null;
                        }
                    }
                }
            }
        }