Udostępnij za pośrednictwem


Praca z modułami i środki

Ostrzeżenie

  Ta funkcja zostanie usunięta z następnej wersji programu Microsoft SQL Server. Nie należy stosować tej funkcji w nowych projektach oraz jak najszybciej należy zmodyfikować aplikacje, w których obecnie jest używana ta funkcja.

Każda baza danych zawiera MDStores kolekcja modułów (czyli obiekty ClassType clsCube).Moduł jest centralnym obiektu w wielowymiarowej bazie danych.Moduł zawiera wymiary i ich poziomy środków, źródeł danych, role i poleceń.Każdy moduł zawiera również MDStores kolekcja partycji (czyli obiekty ClassType clsPartition).

Poprzednich przykładach utworzona nowa baza danych, dodać źródło danych i dodaje udostępnione wymiary i poziomy.Trzech poniższych przykładach zademonstrowano sposób listy, dodawanie i usuwanie moduł.

Lista modułów

Ponieważ każdy MDStore obiektu bazy danych zawiera kolekcja z MDStore obiektów moduł ułatwia listę modułów i ich właściwości dla każdej bazy danych.

Poniższy przykład kodu drukuje listę modułów dla każdej bazy danych na danym serwerze w oknie Immediate.SubClassType i SourceTable są drukowane również właściwości dla każdego moduł.

Private Sub ListCubes()
    Dim dsoServer As New DSO.Server
    Dim dsoDB As DSO.MDStore
    Dim dsoCube As DSO.MDStore

    ' Create a connection to the Analysis server.
    dsoServer.Connect "LocalHost"

    ' Step through the databases in the server object.
    For Each dsoDB In dsoServer.MDStores
        ' Print the name and description of the database
        Debug.Print "DATABASE: " & dsoDB.Name & " - " & _
        dsoDB.Description

        ' Step through the cubes in the database object.
        If dsoDB.MDStores.Count = 0 Then
            Debug.Print "  Cube: None"
        Else
            For Each dsoCube In dsoDB.MDStores
                ' Print the name of the cube.
                Debug.Print "  Cube: " & dsoCube.Name

                ' Check to see whether the cube is regular or virtual.
                If dsoCube.SubClassType = sbclsRegular Then
                   Debug.Print "       SubClassType: Regular"
                   Debug.Print "        SourceTable: " & _
                     dsoCube.SourceTable
                Else
                    Debug.Print "       SubClassType: Virtual"
                End If
             Next
        End If
    Next

End Sub

Dodawanie modułu

Poniższy przykład ilustruje sposób dodawania moduł o nazwie TestCube, do MDStores kolekcja bazy danych:

  1. Dodawanie moduł, aby MDStores bazy danych przy użyciu kolekcja AddNew metoda.

  2. Dodaj źródło danych do nowego moduł.

  3. Ustaw SourceTable właściwość moduł.

  4. Ustaw EstimatedRows Właściwość przybliżoną liczbę wierszy w tabela.

  5. Dodaj wymiary udostępnionego, utworzone w pracy z wymiarów i poziomów tematu do modułna Dimensions kolekcja z AddNew metoda.

  6. Utworzyć klauzulę SQL INNER JOIN łączenia tabela wymiarów źródło tabeli, a następnie przypisać do moduł JoinClause właściwość.

  7. Wprowadź zmiany do tego moduł stałe wywołując moduł Update metoda.

Poniższy przykład kodu dodaje nowy moduł, Testmoduł, do TestDB bazy danych:

Private Sub AddCube()
    Dim dsoServer As New DSO.Server
    Dim dsoDB As DSO.MDStore
    Dim dsoCube As DSO.MDStore

    Dim strDBName As String
    Dim strCubeName As String
    Dim strJoin As String

    ' Initialize variables for the database and
    ' cube names.
    strDBName = "TestDB"
    strCubeName = "TestCube"

    ' Define joins between the fact table and the dimension tables
    ' to be used later in the subroutine.

    ' Join the fact table to the Product table.
    ' sales_fact_1998.product_id = product.product_id
    strJoin = "(""sales_fact_1997"".""product_id""=""product"".""product_id"")"
    strJoin = strJoin & " AND "

    ' Join the fact table to the Store table.
    ' sales_fact_1998.store_id = store.store_id
    strJoin = strJoin & "(""sales_fact_1997"".""store_id""=""store"".""store_id"")"

    ' Create a connection to the Analysis server.
    dsoServer.Connect "LocalHost"

    ' Ensure the database exists first.
    If dsoServer.MDStores.Find(strDBName) = False Then
        MsgBox "Database " & strDBName & " is not found."
    Else
        Set dsoDB = dsoServer.MDStores(strDBName)

        ' Check for existing data sources, dimensions, and
        ' cubes.
        If dsoDB.DataSources.Count = 0 Then
            ' No data source
            MsgBox "Database " & strDBName & " has no data sources."
        ElseIf dsoDB.Dimensions.Count = 0 Then
            ' No dimensions
            MsgBox "Database " & strDBName & " has no dimensions."
        ElseIf dsoDB.MDStores.Find(strCubeName) Then
            ' Cube already exists
            MsgBox "Cube " & strCubeName & " already exists " & _
                "in database" & strDBName
        Else
            ' Add the cube to the database.
            Set dsoCube = dsoDB.MDStores.AddNew(strCubeName)

            ' Further define the cube.
            With dsoCube
                ' Provide the data source for the cube.
                .DataSources.AddNew dsoDB.DataSources(1).Name

                ' Provide the fact table for the cube.
                .SourceTable = """sales_fact_1997"""

                ' Provide an estimated number of rows.
                .EstimatedRows = 100000

                ' Add the Products and Stores shared dimensions.
                .Dimensions.AddNew "Products"
                .Dimensions.AddNew "Stores"

                ' Join the fact table with the dimension tables.
                .JoinClause = strJoin

                ' Update the database.
                .Update
            End With

            ' Inform the user.
            MsgBox "Cube " & strCubeName & _
                " created and dimensions added"

        End If
    End If

End Sub

Usunięcie modułu

Proces usuwania moduł z bazy danych jest wykonywane przez Remove metoda obiektu bazy danych MDStores kolekcja.Poniższy przykład kodu ilustruje to przez usunięcie moduł TestCube, utworzonego w poprzednim przykładzie kodu.

Poniższy przykład kodu usuwa moduł TestCube z TestDB bazy danych:

Private Sub RemoveCube()
    Dim dsoServer As New DSO.Server
    Dim dsoDB As DSO.MDStore

    Dim strDBName As String
    Dim strCubeName As String

    ' Initialize variables for the database and
    ' cube names.
    strDBName = "TestDB"
    strCubeName = "TestCube"

    ' Create a connection to the Analysis server.
    dsoServer.Connect "LocalHost"

    ' Ensure the database exists on the server.
    If dsoServer.MDStores.Find(strDBName) = False Then
        MsgBox "Database " & strDBName & _
            " is not found on this server."
    Else
        Set dsoDB = dsoServer.MDStores(strDBName)

        ' Ensure the cube exists in the database.
        If dsoDB.MDStores.Find(strCubeName) = False Then
            MsgBox "Cube " & strCubeName & " is not found" & _
                " in database " & strDBName & "."
        Else
            ' Remove the cube from the database.
            dsoDB.MDStores.Remove strCubeName

            ' Inform the user.
            MsgBox "Cube " & strCubeName & " removed" & _
                " from database " & strDBName
        End If
    End If

End Sub

Wykaz środków

Kolekcje środki są zawarte w obiekty ClassType clsCube, clsPartition, i clsAggregation.Obiekty miara, zawartego w ramach każdej z tych kolekcji są ClassTypes clsCubeMeasure, clsPartitonMeasure, i clsAggregationMeasure.

Następujący kod w przykładzie wykorzystano Measures kolekcja MDStore obiektu moduł listy środków związanych z modułów każdej bazy danych na danym serwerze analizy.

Poniższy przykład kodu wyświetla każdy miara każdego moduł w każdej bazy danych na lokalnym serwerze analizy podstawowe właściwości drukowania w oknie Immediate:

Private Sub ListMeasures()
    Dim dsoServer As New DSO.Server
    Dim dsoDB As DSO.MDStore
    Dim dsoCube As DSO.MDStore
    Dim dsoMea As DSO.Measure

    ' Create a connection to the Analysis server.
    dsoServer.Connect "LocalHost"

    ' Step through the databases in the MDStores collection
    ' of the server object.
    For Each dsoDB In dsoServer.MDStores
        Debug.Print "DATABASE: " & dsoDB.Name & " - " & _
        dsoDB.Description

        'Step through the cubes in the database collection.
        For Each dsoCube In dsoDB.MDStores
            Debug.Print "    Cube: " & dsoCube.Name

            'Step through measures for the cube.
            For Each dsoMea In dsoCube.Measures
                Debug.Print "        Measure: " & dsoMea.Name
            Next
        Next
    Next

End Sub

Dodawanie środków

Zadanie dodawania środków MDStore moduł obiektu jest wykonywane przez AddNew metoda Measures kolekcja, jak pokazano w przykładzie kodu.

Poniższy przykład kodu dodaje czterech środków Product ID, Store Sales, Store Cost, i Unit Sales, do TestCube moduł utworzonego w poprzednich przykładach kodu:

Private Sub AddMeasures()
    Dim dsoServer As New DSO.Server
    Dim dsoDB As DSO.MDStore
    Dim dsoCube As DSO.MDStore
    Dim dsoMea As DSO.Measure

    Dim strDBName As String
    Dim strCubeName As String

    ' Constants used for ColumnType property
    ' of the DSO.Level object.
    ' Note that these constants are identical to
    ' those used in ADO in the DataTypeEnum enumeration.
    Const adSmallInt = 2

    ' Initialize variables for the database and
    ' cube names.
    strDBName = "TestDB"
    strCubeName = "TestCube"

    ' Create a connection to the Analysis server.
    dsoServer.Connect "LocalHost"

    ' Ensure the database exists first.
    If dsoServer.MDStores.Find(strDBName) = False Then
        MsgBox "Database " & strDBName & " is not found."
    Else
        Set dsoDB = dsoServer.MDStores(strDBName)

        ' Check for existing data sources, dimensions and
        ' cubes.
        If dsoDB.DataSources.Count = 0 Then
            ' No data source
            MsgBox "Database " & strDBName & " has no data sources."
        ElseIf dsoDB.Dimensions.Count = 0 Then
            ' No dimensions
            MsgBox "Database " & strDBName & " has no dimensions."
        ElseIf dsoDB.MDStores.Find(strCubeName) = False Then
            ' Cube already exists
            MsgBox "Cube " & strCubeName & " does not exist " & _
                "in database" & strDBName
        Else
            ' Add the cube to the database.
            Set dsoCube = dsoDB.MDStores(strCubeName)

            Set dsoMea = dsoCube.Measures.AddNew("Product ID")
            dsoMea.SourceColumn = """sales_fact_1997"".""product_id"""
            dsoMea.SourceColumnType = adSmallInt  'The data type for the column
            dsoMea.AggregateFunction = aggSum     'The method for the column
            'aggSum aggregates the column by summation.

            Set dsoMea = dsoCube.Measures.AddNew("Store Sales")
            dsoMea.SourceColumn = """sales_fact_1997"".""store_sales"""
            dsoMea.SourceColumnType = adSmallInt
            dsoMea.AggregateFunction = aggSum

            Set dsoMea = dsoCube.Measures.AddNew("Store Cost")
            dsoMea.SourceColumn = """sales_fact_1997"".""store_cost"""
            dsoMea.SourceColumnType = adSmallInt
            dsoMea.AggregateFunction = aggSum

            Set dsoMea = dsoCube.Measures.AddNew("Unit Sales")
            dsoMea.SourceColumn = """sales_fact_1997"".""unit_sales"""
            dsoMea.SourceColumnType = adSmallInt
            dsoMea.AggregateFunction = aggSum

            dsoCube.Update
        End If
    End If

End Sub

Przetworzenie modułu

Bazy danych, udostępnione wymiary i ich poziomy i moduł i jego środki obecnie miejsce i mogą być przetwarzane moduł.

Służy do przetwarzania moduł, Process metoda MDStore obiektu moduł, jak pokazano w przykładzie kodu.

Przetwarzania moduł może trwać kilka minut.Można przeglądać za pomocą Menedżera analizy po zakończeniu przetwarzania danych moduł.

Następujący kod przykład procesy TestCube moduł utworzonego w poprzednich przykładach kodu:

Private Sub ProcessCube()
    Dim dsoServer As New DSO.Server
    Dim dsoDB As DSO.MDStore
    Dim dsoCube As DSO.MDStore
    Dim dsoMea As DSO.Measure

    Dim strDBName As String
    Dim strCubeName As String

    ' Initialize variables for the database and
    ' cube names.
    strDBName = "TestDB"
    strCubeName = "TestCube"

    ' Create a connection to the Analysis server.
    dsoServer.Connect "LocalHost"

    ' Ensure the database exists first.
    If dsoServer.MDStores.Find(strDBName) = False Then
        MsgBox "Database " & strDBName & " is not found."
    Else
        Set dsoDB = dsoServer.MDStores(strDBName)

        ' Check for existing data sources, dimensions, and
        ' cubes.
        If dsoDB.DataSources.Count = 0 Then
            ' No data source
            MsgBox "Database " & strDBName & " has no data sources."
        ElseIf dsoDB.MDStores.Find(strCubeName) = False Then
            ' Cube already exists
            MsgBox "Cube " & strCubeName & " does not exist " & _
                "in database" & strDBName
        Else
            ' Retrieve the cube from the database.
            Set dsoCube = dsoDB.MDStores(strCubeName)

            ' Ensure the cube is correctly constructed.
            If dsoCube.Dimensions.Count = 0 Then
                ' No dimensions associated with the cube
                MsgBox "Cube " & strCubeName & _
                    " has no dimensions."
            ElseIf dsoCube.Measures.Count = 0 Then
                ' No measures associated with the cube
                MsgBox "Cube " & strCubeName & _
                    " has no measures."
            Else
                ' Process the cube.
                dsoCube.Process

                ' Inform the user.
                MsgBox "Cube " & strCubeName & _
                    "has been processed."
            End If
        End If
    End If

End Sub