Udostępnij za pośrednictwem


User Defined Functions and Stored Procedures

With ADOMD.NET server objects, you can create user defined function (UDF) or stored procedures for Microsoft SQL Server Analysis Services that interact with metadata and data from the server.Te metody w procesie nazywa się za pomocą instrukcji Multidimensional Expressions (MDX) lub DMX (wyszukiwanie danych Extensions) umożliwiają udostępnianie dodatkowych funkcji bez opóźnienia, skojarzone z komunikacji sieciowej.

Format UDF przykłady

UDF jest to metoda, która może zostać wywołany w kontekście instrukcja MDX lub DMX, może być dowolną liczbą parametrów i danych dowolnego typu mogą być zwracane.

UDF, utworzony za pomocą wyrażeń MDX jest podobny do jednego dla DMX.Podstawową różnicą jest to, że niektóre właściwości Context obiekt, taki jak CurrentCube() i CurrentMiningModel() właściwości, są dostępne tylko dla jednego języka wykonywanie wykonywanie skryptów lub inny.

Następujące przykłady przedstawiają metody korzystania z UDF zwraca opis węzła, filtrowanie krotek, i zastosować filtr do spójna kolekcja.

Zwraca opis węzła

Poniższy przykład tworzy UDF, która zwraca opis węzła dla określonego węzła.UDF używany bieżący kontekst, w którym to zostało uruchomione i używa klauzula FROM DMX pobrać węzeł z bieżącym model wyszukiwania.

public string GetNodeDescription(string nodeUniqueName)
{
   return Context.CurrentMiningModel.GetNodeFromUniqueName(nodeUniqueName).Description;
}

Po wdrożeniu, w poprzednim przykładzie UDF może być wywoływana przez następujące wyrażenie DMX pobiera najbardziej prawdopodobne przewidywanie węzła.Opis zawiera informacje, które opisują warunki, które składają się z węzła przewidywanie.

select Cluster(), SampleAssembly.GetNodeDescription( PredictNodeId(Cluster()) ) FROM [Customer Clusters]

Zwracanie krotek

W poniższym przykładzie ma zestaw, a wynik jest zwracany i losowo pobiera krotek z zestawu zwracanie końcowe podzbiór:

public Set RandomSample(Set set, int returnCount)
{
   //Return the original set if there are fewer tuples
   //in the set than the number requested.
   if (set.Tuples.Count <= returnCount)
      return set;

   System.Random r = new System.Random();
   SetBuilder returnSet = new SetBuilder();

   //Retrieve random tuples until the return set is filled.
   int i = set.Tuples.Count;
   foreach (Tuple t in set.Tuples)
   {
      if (r.Next(i) < returnCount)
      {
         returnCount--;
         returnSet.Add(t);
      }
      i--;
      //Stop the loop if we have enough tuples.
      if (returnCount == 0)
         break;
   }
   return returnSet.ToSet();
}

W poprzednim przykładzie nazywa się w następującym przykładzie MDX.W tym przykładzie MDX pięć losowe stany lub prowincje są pobierane z Adventure Works bazy danych.

SELECT SampleAssembly.RandomSample([Geography].[State-Province].Members, 5) on ROWS, 
[Date].[Calendar].[Calendar Year] on COLUMNS
FROM [Adventure Works]
WHERE [Measures].[Reseller Freight Cost]

Zastosowanie filtru do spójna kolekcja

W poniższym przykładzie UDF zdefiniowano ma zestaw, a następnie stosuje filtr do każdej spójna kolekcja z zestawu przy użyciu obiektu wyrażenie.Wszelkie krotek, które są zgodne z filtrem zostaną dodane do zestaw, który jest zwracany.

W poprzednim przykładzie nazywa się w następującym przykładzie MDX filtruje zestaw miast o nazwach rozpoczynających się z 'A'.

Select Measures.Members on Rows,
SampleAssembly.FilterSet([Customer].[Customer Geography].[City], "[Customer].[Customer Geography].[City].CurrentMember.Name < 'B'") on Columns
From [Adventure Works]

Przykład procedura przechowywana

W następującym przykładzie procedura przechowywana na MDX używa AMO do tworzenia partycji, jeśli jest to konieczne, Internet sprzedaży.