Programowanie AMO OLAP zaawansowane obiektów
W tym temacie wyjaśniono Analysis Management Objects (AMO) szczegóły programowania OLAP zaawansowane obiektów.Ten temat zawiera następujące sekcje:
Akcja obiektów
Obiekty KWW
Obiekty perspektywy
Obiekty ProactiveCaching
Tłumaczenie obiektów
Akcja obiektów
Akcja klasy są używane do tworzenia active odpowiedzi, podczas przeglądania pewnych obszarach moduł.Obiekty akcji można zdefiniować za pomocą AMO, ale są używane z klient aplikacji, która przegląda dane.Mają utworzone zgodnie z typem i akcje mogą być różnych typów.Akcje mogą być:
akcja drążenia, które zwracają zestaw wierszy, które reprezentuje dane zaznaczonych komórek moduł, gdzie występuje akcja.
Zgłoszenie akcja, które zwracają raport z Reporting Services , skojarzony z zaznaczonej sekcji moduł, gdzie występuje akcja.
Standardowe akcje zwracające element akcja (adres URL, HTML, DataSet, wierszy i innych elementów), skojarzone z zaznaczonej sekcji moduł, gdzie występuje akcja.
Tworzenie obiektu akcja wymaga następujących kroków:
Tworzenie obiektu pochodnych akcja i zapełnianie atrybutami podstawowymi.
Podstawowe atrybuty są następujące: Typ akcji, typ miejsce docelowe lub sekcji podpis kostki, target lub określonego obszaru moduł, których działanie jest dostępna, a podpis jest wyrażenie MDX.
Wypełnij określonych atrybutów typu akcja.
Atrybuty są różne dla trzech rodzajów akcji, zobacz przykładowy kod, który następuje parametrów.
Dodaj akcja do modułów kolekcja i aktualizacji moduł.Akcja nie jest aktualizowalny obiektu.
Testowanie akcja wymaga zastosowania innego programu.Można przetestować akcja w Business Intelligence Development Studio.Najpierw musisz zainstalować Reporting Services próbek, zobacz Przetwarzanie Analysis Services obiekty.
Następujący przykładowy kod replikuje trzy różne akcje z próbki Adventure Works Analysis Services projektu.Aby uzyskać więcej informacji dotyczących instalowania próbki, zobacz Przykładowe bazy danych AdventureWorks2008R2.Akcje można odróżnić, ponieważ te, które wprowadzić za pomocą następujących przykładowych zaczynają "My".
static public void CreateActions(Cube cube)
{
#region Adding a drillthrough action
// Verify That action exists and drop it
if (cube.Actions.ContainsName("My Reseller Details"))
cube.Actions.Remove("My Drillthrough Action",true);
//Create a Drillthrough action
DrillThroughAction dtaction = new DrillThroughAction("My Reseller Details", "My Drillthrough Action");
//Define the Action
dtaction.Type = ActionType.DrillThrough;
dtaction.TargetType = ActionTargetType.Cells;
dtaction.Target = "MeasureGroupMeasures(\"Reseller Sales\")";
dtaction.Caption = "My Drillthrough...";
dtaction.CaptionIsMdx = false;
#region create drillthrough action specifics
//Adding Drillthrough columns
//Adding Measure columns to the drillthrough
MeasureGroup mg = cube.MeasureGroups.FindByName("Reseller Sales");
MeasureBinding mb1 = new MeasureBinding();
mb1.MeasureID = mg.Measures.FindByName( "Reseller Sales Amount").ID;
dtaction.Columns.Add(mb1);
MeasureBinding mb2 = new MeasureBinding();
mb2.MeasureID = mg.Measures.FindByName("Reseller Order Quantity").ID;
dtaction.Columns.Add(mb2);
MeasureBinding mb3 = new MeasureBinding();
mb3.MeasureID = mg.Measures.FindByName("Reseller Unit Price").ID;
dtaction.Columns.Add(mb3);
//Adding Dimension Columns to the drillthrough
CubeAttributeBinding cb1 = new CubeAttributeBinding();
cb1.CubeID = cube.ID;
cb1.CubeDimensionID = cube.Dimensions.FindByName("Reseller").ID;
cb1.AttributeID = "Reseller Name";
cb1.Type = AttributeBindingType.All;
dtaction.Columns.Add(cb1);
CubeAttributeBinding cb2 = new CubeAttributeBinding();
cb2.CubeID = cube.ID;
cb2.CubeDimensionID = cube.Dimensions.FindByName("Product").ID;
cb2.AttributeID = "Product Name";
cb2.Type = AttributeBindingType.All;
dtaction.Columns.Add(cb2);
#endregion
//Add the defined action to the cube
cube.Actions.Add(dtaction);
#endregion
#region Adding a Standard action
// Verify That action exists and drop it
if (cube.Actions.ContainsName("My City Map"))
cube.Actions.Remove("My Action", true);
//Create a Drillthrough action
StandardAction stdaction = new StandardAction("My City Map", "My Action");
//Define the Action
stdaction.Type = ActionType.Url;
stdaction.TargetType = ActionTargetType.AttributeMembers;
stdaction.Target = "[Geography].[City]";
stdaction.Caption = "\"My View Map for \" + [Geography].[City].CurrentMember.Member_Caption + \"...\"";
stdaction.CaptionIsMdx = true;
#region create standard action specifics
stdaction.Expression = "\"http://maps.msn.com/home.aspx?plce1=\" + " +
"[Geography].[City].CurrentMember.Name + \",\" + " +
"[Geography].[State-Province].CurrentMember.Name + \",\" + " +
"[Geography].[Country].CurrentMember.Name + " +
"\"®n1=\" + " +
"Case " +
"When [Geography].[Country].CurrentMember Is " +
"[Geography].[Country].&[Australia] " +
"Then \"3\" " +
"When [Geography].[Country].CurrentMember Is " +
"[Geography].[Country].&[Canada] " +
"Or [Geography].[Country].CurrentMember Is " +
"[Geography].[Country].&[United States] " +
"Then \"0\" " +
"Else \"1\" " +
"End ";
#endregion
//Add the defined action to the cube
cube.Actions.Add(stdaction);
#endregion
#region Adding a Reporting action
// Verify That action exists and drop it
if (cube.Actions.ContainsName("My Sales Reason Comparisons"))
cube.Actions.Remove("My Report Action", true);
//Create a Report action
ReportAction rsaction = new ReportAction("My Sales Reason Comparisonsp", "My Report Action");
//Define the Action
rsaction.Type = ActionType.Report;
rsaction.TargetType = ActionTargetType.AttributeMembers;
rsaction.Target = "[Product].[Category]";
rsaction.Caption = "\"My Sales Reason Comparisons for \" + [Product].[Category].CurrentMember.Member_Caption + \"...\"";
rsaction.CaptionIsMdx = true;
#region create Report action specifics
rsaction.ReportServer = "MyRSSamplesServer";
rsaction.Path = "ReportServer?/AdventureWorks Sample Reports/Sales Reason Comparisons";
rsaction.ReportParameters.Add("ProductCategory", "UrlEscapeFragment( [Product].[Category].CurrentMember.UniqueName )");
rsaction.ReportFormatParameters.Add("rs:Command", "Render");
rsaction.ReportFormatParameters.Add("rs:Renderer", "HTML5");
#endregion
//Add the defined action to the cube
cube.Actions.Add(rsaction);
#endregion
}
Obiekty KWW
A key performance indicator (KPI) is a collection of calculations that are associated with a measure group in a cube and are used to evaluate business success.Kpi objects can be defined by AMO, but are used from the client application that browses the data.
Tworzenie Kpi obiektu wymaga następujących kroków:
Tworzenie Kpi object i wypełniania podstawowych atrybutów.
Poniżej przedstawiono listę atrybutów podstawowe: Opis folderu wyświetlania, skojarzone grupy miar i wartość.Aplikacja klient informuje Folder wyświetlania gdzie KPI powinien znajdować się dla użytkownika końcowego go znaleźć.Skojarzone grupa miar wskazuje grupa miar gdzie określonych wszystkich obliczeniach MDX.Wartość wskazuje rzeczywistej wartości wskaźnika wydajności jako wyrażenie MDX.
Zdefiniuj wskaźników KPI: Celem, stanem i trendem
Wskaźniki są wyrażeń MDX, które należy ocenić między -1 do 1, ale jest przeglądania aplikacji, która określa zakres wartości wskaźników.
Podczas przeglądania kluczowych wskaźników wydajności w Business Intelligence Development Studio wartości mniejsze niż -1 są traktowane jako -1, a wartości większe niż 1 są traktowane jako 1.
Zdefiniuj obrazów graficznych.
Obrazy graficzne są ciąg wartości, używany jako odwołanie w aplikacji klienckiej do identyfikowania poprawnego zestaw obrazów do wyświetlenia.Ciąg obrazu graficznego definiuje również zachowanie funkcja wyświetlania.Zazwyczaj zakres jest podzielona na nieparzystą liczbę państw od Zły do dobra, i każdemu Państwu obrazu z zestaw, przypisano.
Jeśli używasz Business Intelligence Development Studio do przeglądania kluczowych wskaźników wydajności, następnie, w zależności od nazwy, zakres wskaźnika jest podzielony na trzy Państwa lub pięć państw.Ponadto istnieją nazwy gdzie zakres jest odwrócony, które jest -1 jest 'Dobra' a 1 "Bad".W Business Intelligence Development Studio, trzy Państwa w zakres są następujące:
Zły = -1 do -0,5
OK =-0.4999 do -0,4999
Dobre = 0,50 do 1
W Business Intelligence Development Studio, pięć państw w ramach zakres są następujące:
Zły = -1 do -0,75
Ryzyko =-0.7499 do-0.25
OK =-0,2499 do 0,2499
Podnoszenie = 0,25 lub 0.7499
Dobre = 0,75 do 1
W poniższej tabela przedstawiono użycia, nazwa i numer skojarzony z obrazem Państwa.
Użycie obrazu |
Nazwa obrazu |
Liczba stanów |
---|---|---|
Stan |
Kształty |
3 |
Stan |
Sygnalizacja świetlna |
3 |
Stan |
Znaki drogowe |
3 |
Stan |
Miernik |
3 |
Stan |
Skrajnia wyksięgowania |
5 |
Stan |
Termometr |
3 |
Stan |
Cylinder |
3 |
Stan |
Buźki |
3 |
Stan |
Odchylenie strzałki |
3 |
Trend |
Standard strzałki |
3 |
Trend |
Stan strzałki |
3 |
Trend |
Stan odwróconą strzałkę |
5 |
Trend |
Buźki |
3 |
- Dodać wskaźnik KPI w module kolekcja i aktualizacji moduł, ponieważ KWW nie jest aktualizowalny obiektu.
Badania KPI wymaga zastosowania innego programu.Można przetestować KPI w Business Intelligence Development Studio.
Poniższy przykładowy kod tworzy KPI "Przychodów finansowych Zwiększaj i Perpective" folder moduł Adventure Works, zawarta w próbce Adventure Works Analysis Services projektu.Aby uzyskać więcej informacji dotyczących instalowania próbki, zobacz Przykładowe bazy danych AdventureWorks2008R2.
static public void CreateKPIs(Cube cube)
{
Kpi kpi = cube.Kpis.Add("My Internet Revenue", "My Internet Revenue");
kpi.Description = "(My) Revenue achieved through direct sales via Interner";
kpi.DisplayFolder = "\\Financial Perspective\\Grow Revenue";
kpi.AssociatedMeasureGroupID = "Internet Sales";
kpi.Value = "[Measures].[Internet Sales Amount]";
#region Goal
kpi.Goal = "Case" +
" When IsEmpty" +
" (" +
" ParallelPeriod" +
" (" +
" [Date].[Fiscal Time].[Fiscal Year]," +
" 1," +
" [Date].[Fiscal Time].CurrentMember" +
" )" +
" )" +
" Then [Measures].[Internet Sales Amount]" +
" Else 1.10 *" +
" (" +
" [Measures].[Internet Sales Amount]," +
" ParallelPeriod" +
" (" +
" [Date].[Fiscal Time].[Fiscal Year]," +
" 1," +
" [Date].[Fiscal Time].CurrentMember" +
" )" +
" ) " +
" End";
#endregion
#region Status
kpi.Status = "Case" +
" When KpiValue( \"Internet Revenue\" ) / KpiGoal ( \"Internet Revenue\" ) >= .95 " +
" Then 1 " +
" When KpiValue( \"Internet Revenue\" ) / KpiGoal ( \"Internet Revenue\" ) < .95 " +
" And " +
" KpiValue( \"Internet Revenue\" ) / KpiGoal ( \"Internet Revenue\" ) >= .85 " +
" Then 0 " +
" Else -1 " +
"End";
#endregion
#region Trend
kpi.Trend = "Case " +
" When VBA!Abs " +
" ( " +
" KpiValue( \"Internet Revenue\" ) - " +
" ( " +
" KpiValue ( \"Internet Revenue\" ), " +
" ParallelPeriod " +
" ( " +
" [Date].[Fiscal Time].[Fiscal Year], " +
" 1, " +
" [Date].[Fiscal Time].CurrentMember " +
" ) " +
" ) / " +
" ( " +
" KpiValue ( \"Internet Revenue\" ), " +
" ParallelPeriod " +
" ( " +
" [Date].[Fiscal Time].[Fiscal Year], " +
" 1, " +
" [Date].[Fiscal Time].CurrentMember " +
" ) " +
" ) " +
" ) <=.02 " +
" Then 0 " +
" When KpiValue( \"Internet Revenue\" ) - " +
" ( " +
" KpiValue ( \"Internet Revenue\" ), " +
" ParallelPeriod " +
" ( " +
" [Date].[Fiscal Time].[Fiscal Year], " +
" 1, " +
" [Date].[Fiscal Time].CurrentMember " +
" ) " +
" ) / " +
" ( " +
" KpiValue ( \"Internet Revenue\" ), " +
" ParallelPeriod " +
" ( " +
" [Date].[Fiscal Time].[Fiscal Year], " +
" 1, " +
" [Date].[Fiscal Time].CurrentMember " +
" ) " +
" ) >.02 " +
" Then 1 " +
" Else -1 " +
"End";
#endregion
kpi.TrendGraphic = "Standard Arrow";
kpi.StatusGraphic = "Cylinder";
}.
Obiekty perspektywy
Perspective obiekty mogą być definiowane przez pracownika AMO, ale są używane z klient aplikacji, która przegląda dane.
Tworzenie Perspective obiektu wymaga następujących kroków:
Tworzenie Perspective object i wypełniania podstawowych atrybutów.
Poniżej przedstawiono listę atrybutów podstawowe: Nazwa domyślnej miary, opis i adnotacje.
Dodaj wszystkie obiekty z moduł nadrzędnego, który powinien być postrzegany przez użytkownika końcowego.
Dodawanie moduł wymiarów (atrybuty i hierarchie), grupa miar (miara i grupa miar), akcje, kluczowych wskaźników wydajności i obliczeń.
Dodaj do kolekcja moduł perspektywa i aktualizacji moduł, ponieważ perspektywa nie jest aktualizowalny obiektu.
Testowanie perspektywa wymaga zastosowania innego programu.Można przetestować z perspektywa w Business Intelligence Development Studio.
Poniższy przykładowy kod tworzy perspektywa o nazwie "Sprzedaż bezpośrednia" dla dostarczonego moduł.
static public void CreatePerspectives(Cube cube)
{
Perspective perspective = cube.Perspectives.Add("Direct Sales", "Direct Sales");
CubeDimension dim1 = cube.Dimensions.GetByName("Date");
PerspectiveDimension pdim1 = perspective.Dimensions.Add(dim1.DimensionID);
pdim1.Attributes.Add("Date");
pdim1.Attributes.Add("Calendar Year");
pdim1.Attributes.Add("Fiscal Year");
pdim1.Attributes.Add("Calendar Quarter");
pdim1.Attributes.Add("Fiscal Quarter");
pdim1.Attributes.Add("Calendar Month Number");
pdim1.Attributes.Add("Fiscal Month Number");
pdim1.Hierarchies.Add("Calendar Time");
pdim1.Hierarchies.Add("Fiscal Time");
CubeDimension dim2 = cube.Dimensions.GetByName("Product");
PerspectiveDimension pdim2 = perspective.Dimensions.Add(dim2.DimensionID);
pdim2.Attributes.Add("Product Name");
pdim2.Attributes.Add("Product Line");
pdim2.Attributes.Add("Model Name");
pdim2.Attributes.Add("List Price");
pdim2.Attributes.Add("Size");
pdim2.Attributes.Add("Weight");
pdim2.Hierarchies.Add("Product Model Categories");
pdim2.Hierarchies.Add("Product Categories");
PerspectiveMeasureGroup pmg = perspective.MeasureGroups.Add("Internet Sales");
pmg.Measures.Add("Internet Sales Amount");
pmg.Measures.Add("Internet Order Quantity");
pmg.Measures.Add("Internet Unit Price");
pmg = perspective.MeasureGroups.Add("Reseller Sales");
pmg.Measures.Add("Reseler Sales Amount");
pmg.Measures.Add("Reseller Order Quantity");
pmg.Measures.Add("Reseller Unit Price");
PerspectiveAction pact = perspective.Actions.Add("Drillthrough Action");
PerspectiveKpi pkpi = perspective.Kpis.Add("Internet Revenue");
Cube.Update();
}
Obiekty ProactiveCaching
ProactiveCaching obiekty mogą być definiowane przez pracownika AMO.
Tworzenie ProactiveCaching obiektu wymaga następujących kroków:
Tworzenie ProactiveCaching obiektu.
Nie ma żadnych atrybutów podstawowych do definiowania.
Dodać specyfikacje pamięci podręcznej.
Specyfikacja |
Opis |
---|---|
AggregationStorage |
Typ magazynu dla agregacji. Dotyczy tylko partycję.Na wymiar musi być Regular. |
SilenceInterval |
Minimalna ilość czas pamięci podręcznej istnieje przed MOLAP uruchamia imaging. |
Czas oczekiwania |
Czas pomiędzy najwcześniejszą powiadomienie i momentem, kiedy niszczony obrazów MOLAP. |
SilenceOverrideInterval |
Czas po wstępne powiadomienie po którym MOLAP imaging uruchamiane bezwarunkowo. |
ForceRebuildInterval |
Czas (począwszy od po przerwaniu świeżego obraz MOLAP) po MOLAP, które imaging uruchamia bezwarunkowo (żadne powiadomienia). |
OnlineMode |
Gdy obraz MOLAP jest dostępna. Mogą być Immediate lub OnCacheComplete. |
- Dodaj ProactiveCaching obiekt do kolekcja nadrzędnej.Trzeba będzie zaktualizować nadrzędnej, ponieważ ProactiveCaching nie jest aktualizowalny obiektu.
Poniższy przykładowy kod tworzy ProactiveCaching obiektu na wszystkich partycjach ze sprzedaży Internet grupa miar w module Adventure Works w określonej bazie danych.
static public void SetProactiveCachingSettings(Database db)
{
ProactiveCaching pc;
if (db.Cubes.ContainsName("Adventure Works") && db.Cubes.FindByName("Adventure Works").MeasureGroups.ContainsName("Internet Sales"))
{
ProactiveCachingTablesBinding pctb;
TableNotification tn;
MeasureGroup mg = db.Cubes.FindByName("Adventure Works").MeasureGroups.FindByName("Internet Sales");
foreach(Partition part in mg.Partitions)
{
pc = new ProactiveCaching();
pc.AggregationStorage = ProactiveCachingAggregationStorage.MolapOnly;
pc.SilenceInterval = TimeSpan.FromSeconds(10);
pc.Latency = TimeSpan.FromSeconds(-1);
pc.SilenceOverrideInterval = TimeSpan.FromMinutes(10);
pc.ForceRebuildInterval = TimeSpan.FromSeconds(-1);
pc.Enabled = true;
pc.OnlineMode = ProactiveCachingOnlineMode.OnCacheComplete;
pctb = new ProactiveCachingTablesBinding();
pctb.NotificationTechnique = NotificationTechnique.Server;
tn = new TableNotification("[FactInternetSales]", "dbo");
pctb.TableNotifications.Add( tn);
pc.Source = pctb;
part.ProactiveCaching = pc;
part.Update();
}
}
}
Tłumaczenie obiektów
Tłumaczenie obiektów mogą być definiowane przez pracownika AMO, ale są używane z klient aplikacji, która przegląda dane.Tłumaczenie obiektów są prostych obiektów do kodu.Tłumaczenia dla obiektu podpisy są dostarczane przez par identyfikator ustawień regionalnych i podpis tłumaczone.Każdy podpis można włączyć wiele tłumaczenia.Tłumaczenia dostępne dla większości Usługi Analysis Services obiektów, takich jak wymiary, atrybutów, hierarchie, modułów, miara grupy miaras i inni.
Poniższy przykładowy kod zawiera Hiszpańskie tłumaczenie nazwę atrybut nazwy produktu.
static public void CreateTranslations(Database db)
{
//Spanish Tranlations for Product Category in Product Dimension
Dimension dim = db.Dimensions["Product"];
DimensionAttribute atr = dim.Attributes["Product Name"];
Translation tran = atr.Translations.Add(3082);
tran.Caption = "Nombre Producto";
dim.Update(UpdateOptions.ExpandFull);
}