Отображение времени последнего процесса Cube в отчете - PullRequest
4 голосов
/ 20 декабря 2011

Есть ли способ показать, когда в последний раз куб или измерение в последний раз обрабатывались в отчете (я использую построитель отчетов)?

Я попытался сделать это, начав с создания таблицы с именем LastProcessTime с полями «Тип» и «DateTimeProcessed», и я мог бы вставить ее в эту таблицу, но я не знаю, как бы я инициировал вставку. Возможно, есть совершенно другой подход. Спасибо.

Ответы [ 2 ]

7 голосов
/ 20 декабря 2011

Не уверен, что вы могли бы добавить это в построитель отчетов, но попробуйте стандартный отчет MDX и используйте DMVs SSAS (представления динамического управления):

http://dwbi1.wordpress.com/2010/01/01/ssas-dmv-dynamic-management-view/

Запустите это в окне запроса MDX для куба (я знаю, это выглядит как TSQL):

SELECT * FROM $system.mdschema_cubes

Должен ли дать вам то, что вам нужно?

2 голосов
/ 23 сентября 2013

Немного поздно, я знаю, - но вы можете использовать пользовательские хранимые процедуры в SSAS для предоставления этой информации обычным членам

with 
     member [Measures].[LastProcessed] as ASSP.GetCubeLastProcessedDate()
select 
     [Measures].[LastProcessed] on 0
from [Your Cube]

Доступно с CodePex: проект хранимых процедур служб анализа ,

/*============================================================================
  File:    CubeInfo.cs

  Summary: Implements a function which returns the date when the current cube
           was last processed.

  Date:    July 12, 2006

  ----------------------------------------------------------------------------
  This file is part of the Analysis Services Stored Procedure Project.
  http://www.codeplex.com/Wiki/View.aspx?ProjectName=ASStoredProcedures

  THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  PARTICULAR PURPOSE.
===========================

=================================================*/

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.AnalysisServices.AdomdServer;
using Microsoft.AnalysisServices; //reference to AMO

namespace ASStoredProcs
{
    public class CubeInfo
    {
        //the assembly must be registered with unrestricted permissions for this function to succeed
        [SafeToPrepare(true)]
        public static DateTime GetCubeLastProcessedDate()
        {
            string sServerName = Context.CurrentServerID;
            string sDatabaseName = Context.CurrentDatabaseName;
            string sCubeName = AMOHelpers.GetCurrentCubeName();

            DateTime dtTemp = DateTime.MinValue;
            Exception exDelegate = null;

            System.Threading.Thread td = new System.Threading.Thread(delegate() 
            {
                try
                {
                    Microsoft.AnalysisServices.Server oServer = new Microsoft.AnalysisServices.Server();
                    oServer.Connect("Data Source=" + sServerName);
                    Database db = oServer.Databases.GetByName(sDatabaseName);
                    Cube cube =  db.Cubes.FindByName(sCubeName);

                    dtTemp = cube.LastProcessed;
                }
                catch (Exception ex)
                {
                    exDelegate = ex;
                }
            }
            );
            td.Start(); //run the delegate code
            while (!td.Join(1000)) //wait for up to a second for the delegate to finish
            {
                Context.CheckCancelled(); //if the delegate isn't done, check whether the parent query has been cancelled. If the parent query has been cancelled (or the ForceCommitTimeout expires) then this will immediately exit
            }

            if (exDelegate != null) throw exDelegate;

            return dtTemp;
            //return Context.CurrentCube.LastProcessed; //this doesn't work because of a bug: https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=124606
        }
.
.
.
...