利用 System.Data.OracleClient.Dll 的组件进行连接:

首先配置WebConfig 文件;

<connectionStrings>
     <add name="oracleconn" connectionString="Data Source="";User ID=ryq;Password=123456" providerName="System.Data.OracleClient"/>
  </connectionStrings>

 

然后添加System.Data.OracleClient.Dll  的引用才可以在页面中写代码using System.Data.OracleClient;

 

System.Data.OracleClient.Dll  常用的类:

System.Data.OracleClient.OracleConnection;

System.Data.OracleClient.OracleConnectionStringBuilder;

System.Data.OracleClient.OracleCommand;

System.Data.OracleClient.OracleCommandBuilder;

System.Data.OracleClient.OracleDataAdapter;

System.Data.OracleClient.OracleDataReader;

System.Data.OracleClient.OracleTransaction;

System.Data.OracleClient.OraclePerameter;

System.Data.OracleClient.OracleString;

System.Data.OracleClient.OracleType;

 

//前台显示

 

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Oracle连接数据测试</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <br />
        显示数据测试:<asp:Button ID="Btn_Search" runat="server" OnClick="Btn_Search_Click" Text="查询"
            Width="64px" /><br />
        <br />
        <br />
        <br />
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Height="184px"
            Width="872px">
            <Columns>
                <asp:BoundField DataField="emporium_id" HeaderText="客户编号" SortExpression="客户编号" />
                <asp:BoundField DataField="item_no" HeaderText="项次" SortExpression="项次" />
                <asp:BoundField DataField="recipients" HeaderText="联系地址" SortExpression="联系地址" />
                <asp:BoundField DataField="delive_address" HeaderText="送货地址" SortExpression="送货地址" />
            </Columns>
        </asp:GridView>
   
    </div>
        <asp:Label ID="Label1" runat="server" Height="24px" Text="Label" Width="688px"></asp:Label>
    </form>
</body>
</html>

 

//后台代码实现:

 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OracleClient; //要引用的类库


public partial class _Default : System.Web.UI.Page
{
    public System.Data.OracleClient.OracleConnection objConn;  //声明一个OracleConnection对象
    public System.Data.OracleClient.OracleCommand objCmd;  //声明一个OracleCommand对象
    public System.Data.OracleClient.OracleDataAdapter objAdp; //数据库适配器

    public System.Data.DataSet dset; //DataSet 用于数据填充
       //页面加载
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = "";
        string strconn = System.Configuration.ConfigurationManager.ConnectionStrings["oracleconn"].ConnectionString;

        objConn = new OracleConnection(strconn);
    }
    //查询按钮设计
    protected void Btn_Search_Click(object sender, EventArgs e)
    {
        try
        {
            string StrSql = "select * from pub_address";
            objConn.Open();
            objCmd = new OracleCommand(StrSql, objConn);
            objAdp = new OracleDataAdapter(objCmd);
            dset = new DataSet();
            objAdp.Fill(dset);
            objConn.Close();
            GridView1.DataSource = dset;
            GridView1.DataBind();
        }
        catch(Exception ex)
        {
            Label1.Text = ex.ToString();
            return;
         }
    }
}

 

//以上简单实现从Oracle 中查询数据显示GridView 中, 当然重要的是数据库如何连接的部分。

 

 

posted @ 2008-08-04 10:22 寒天飞雪 阅读(140) | 评论 (0)编辑
     摘要: RDLC自定义工具栏:既然我们使用这种方法进行报表的打印,那么Visual Studio的控件ReportViewer的工具栏就不再符合我们的要求了。因为这个报表浏览器的工具栏上的按钮虽然可以设置属性显示或隐藏其中的一部分,但是我们却不能自己往这个工具栏上添加按钮(显然,我们需要实现自己的页面设置、预览和打印按钮),在这一点上,建议Microsoft将工具栏和报表浏览器分离,应该做得和Bindin... 阅读全文
posted @ 2008-07-01 11:09 寒天飞雪 阅读(298) | 评论 (0)编辑
项目中一般的导出文件都是导出到Excel中, 最新在项目中又要求将查询的报表结果导出成PDF文件。这只是一个开篇的小例子, 继续研究中...

后台代码:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;

public partial class _Default : System.Web.UI.Page
{
    static DataTable datatable = new DataTable("test01pdf");

    protected void Page_Load(object sender, EventArgs e)
    {
         //判断是否是回发页面
        if (!Page.IsPostBack)
        {
         DataRow dr;
        //建立Column例,可以指明例的类型,这里用的是默认的string
        datatable.Columns.Add(new DataColumn("编号"));
        datatable.Columns.Add(new DataColumn("用户名"));
        datatable.Columns.Add(new DataColumn("年龄"));
        datatable.Columns.Add(new DataColumn("性别"));
        for (int i = 1; i < 100; i++)
        {
            dr = datatable.NewRow();
            dr[0] = System.Convert.ToString(i);
            dr[1] = "清清月儿" + System.Convert.ToString(i);
            dr[2] = "21";
            dr[3] = "男孩";
            datatable.Rows.Add(dr);
        }
        }
       
       
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
      

        try
        {
            Document document = new Document();
           
            PdfWriter.GetInstance(document, new FileStream(Server.MapPath("Chap0106.pdf"),FileMode.Create));
           
            document.Open();
            BaseFont bfChinese = BaseFont.CreateFont("C:\\WINNT\\Fonts\\SIMSUN.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            Font fontChinese = new Font(bfChinese, 12, Font.NORMAL,new Color(0, 0, 0));
            document.Add(new Paragraph(this.TextBox1.Text.ToString(), fontChinese));
           
           // document.AddTitle("测试数据PDF");
            iTextSharp.text.Image jpeg = iTextSharp.text.Image.GetInstance(Server.MapPath("portal2.jpg"));
            document.Add(jpeg);
           
            PdfPTable table = new PdfPTable(datatable.Columns.Count);
           
            for (int i = 0; i < datatable.Rows.Count; i++)
            {
                for (int j = 0; j < datatable.Columns.Count; j++)
                {
                    table.AddCell(new Phrase(datatable.Rows[i][j].ToString(), fontChinese));
                }
            }
            document.Add(table);

            document.Close();
        }
        catch (DocumentException de)
        {
            Response.Write(de.ToString());
        }
    }
}

前台代码:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>清清月儿 制作导出PDF http://blog.csdn.net/21aspnet</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="导出" /></div>
    </form>
</body>
</html>


posted @ 2008-06-13 15:56 寒天飞雪 阅读(333) | 评论 (2)编辑

SQLSERVER 2005 BI的帮助文档说明

 把原来文档的内容贴出来供自己和大家学习和查看。
 学习BI努力中...
posted @ 2008-05-30 13:51 寒天飞雪 阅读(251) | 评论 (0)编辑
 定义和浏览翻译:
翻译是在特定语言中 Microsoft SQL Server 2005 Analysis Services (SSAS) 对象(例如,度量值组、度量值、维度、属性、层次结构、KPI、操作和计算成员)的名称的表示形式。翻译为可支持多种语言的客户端应用程序提供了服务器支持。使用这样的客户端,客户端就可以将区域设置标识符 (LCID) 传递给 Analysis Services 实例,该实例则使用 LCID 来确定在为 Analysis Services 对象提供元数据时要使用哪一组翻译。如果 Analysis Services 对象不包含该语言的翻译或不包含指定对象的翻译,则在将该对象元数据返回给客户端时将使用默认语言。例如,如果一个法国的业务用户从使用法语区域设置的工作站访问多维数据集,则存在法语翻译时,此业务用户将看到法语的成员标题和成员属性值。但是,如果一个德国的业务用户从使用德语区域设置的工作站上访问同一个多维数据集,则此业务用户将看到德语的成员标题和成员属性值。

应当在相应维度的维度设计器中的“翻译”选项卡上和在多维数据集设计器中的“翻译”选项卡上定义维度元数据的翻译。可以使用维度设计器的“翻译”选项卡,不只为属性标题,而且也为该属性所代表的成员的标题定义翻译。有关详细信息,请参阅维度翻译多维数据集翻译使用翻译 (SSAS)

在此主题的任务中,将为“时间”维度中的一组有限的维度对象和 Analysis Services 教程多维数据集中的多维数据集对象,定义元数据翻译。然后浏览这些维度和多维数据集对象,以检查元数据翻译。

为“时间”维度元数据指定翻译

为“时间”维度元数据指定翻译

  1. 打开“时间”维度的维度设计器,再单击“翻译”选项卡。

    每个维度对象的元数据将以默认语言显示,如下图所示。Analysis Services 教程多维数据集中的默认语言为英语。

  2. “翻译”选项卡的工具栏上,单击“新建翻译”

    语言列表将显示在“选择语言”对话框中。

  3. 单击“西班牙语(西班牙)”,然后单击“确定”

    将显示一个新列,在其中您可以将要翻译的元数据对象定义为用西班牙语翻译。在本教程中,仅翻译了少量对象来举例说明此过程。

  4. “翻译”选项卡的工具栏上,单击“新建翻译”,并在“选择语言”对话框中单击“法语(法国)”,然后单击“确定”

    将出现另一个语言列,您将在其中定义法语翻译,如下图所示。

  5. “时间”维度的“标题”对象行中,请在“西班牙语(西班牙)”翻译列中键入 Tiempo,并在“法语(法国)”翻译列中键入 Temps

  6. 在“时间”维度的“所有时期”对象的行中,请在“西班牙语(西班牙)”翻译列中键入 Todos los Períodos,并在“法语(法国)”翻译列中键入 Toutes les Périodes

  7. “月份名称”属性的“标题”对象的行中,请在“西班牙语(西班牙)”翻译列中键入 Mes del Año,并在“法语(法国)”翻译列中键入 Mois d'Année

    注意,输入这些翻译时,将出现省略号 (),如下图所示。单击此省略号可以指定为属性层次结构的每个成员提供翻译的基础表中的列。

  8. “月份名称”属性的“西班牙语(西班牙)”翻译中单击省略号 ()。

    将出现“翻译属性数据”对话框。

  9. “翻译列”列表中,选择 SpanishMonthName,如下图所示。

  10. 单击“确定”,然后在“月份名称”属性的“法语(法国)”翻译中单击省略号 ()。

  11. “翻译列”列表中,选择 FrenchMonthName,然后单击“确定”

    此过程中的步骤阐释了为维度对象和成员定义元数据翻译的过程。

为 Analysis Services 教程多维数据集元数据指定翻译

为 Analysis Services 教程多维数据集元数据指定翻译

  1. 请切换到 Analysis Services 教程多维数据集的多维数据集设计器,然后切换到“翻译”选项卡。

    每个多维数据集对象的元数据将以默认语言显示,如下图所示。Analysis Services 教程多维数据集中的默认语言为英语。

  2. “翻译”选项卡的工具栏上,单击“新建翻译”

    语言列表将显示在“选择语言”对话框中。

  3. 选择“西班牙语(西班牙)”,然后单击“确定”

    将显示一个新列,在其中您可以将要翻译的元数据对象定义为用西班牙语翻译。在本教程中,仅翻译了少量对象来举例说明此过程。

  4. “翻译”选项卡的工具栏上,单击“新建翻译”,并在“选择语言”对话框中选择“法语(法国)”,然后单击“确定”

    将出现另一个语言列,您将在其中定义法语翻译。

  5. “Internet 销售”度量值组的“标题”对象的行中,请在“西班牙语(西班牙)”翻译列中键入 Ventas del lnternet,并在“法语(法国)”翻译列中键入 Ventes D'Internet

  6. 在“Internet 销售额”度量值的“标题”对象的行中,请在“西班牙语(西班牙)”翻译列中键入 Cantidad de las Ventas del Internet,并在“法语(法国)”翻译列中键入 Quantité de Ventes d'Internet

    此过程中的步骤阐释了为多维数据集对象定义元数据翻译的过程。

使用翻译浏览多维数据集

使用翻译浏览多维数据集

  1. “生成”菜单上,单击“部署 Analysis Services 教程”

  2. 成功完成部署后,请切换到“浏览器”选项卡,然后单击“重新连接”

  3. “数据”窗格中删除所有层次结构和度量值,并在“透视”列表中选择 Analysis Services 教程,然后验证“Analysis Services 教程”是否出现在“语言”列表中。

  4. “元数据”窗格中,展开“度量值”,然后展开“Internet 销售”

    请注意,“Internet 销售额”度量值将以英文形式出现在此度量值组中。

  5. 在工具栏上,选择“语言”列表中的“西班牙语(西班牙)”

    注意,“元数据”窗格中的项将重新填充。重新填充“元数据”窗格中的项之后,注意“Internet 销售额”度量值将不再出现在“Internet 销售”显示文件夹中。而是以西班牙语出现在名为 Ventas del lnternet 的新的显示文件夹中,如下图所示。

  6. “元数据”窗格中,右键单击 Cantidad de las Ventas del Internet,然后选择“添加到数据区域”

  7. “元数据”窗格中,展开“日期”,然后展开“日历”,右键单击“日期.日历时间”,选择“添加到行区域”

  8. “数据”窗格中,依次展开 CY 2004H1 CY 2004 以及 Q1 CY 2004

    注意,月份名称将以西班牙语显示,如下图所示。

  9. 在工具栏上,选择“语言”列表中的“法语(法国)”

    注意,月份名称现在将以法语显示,并且度量值名称现在也以法语显示。

通过下载并安装已更新的示例,可以获得第 9 课中使用的完整项目。有关详细信息,请参阅安装示例中的“获取已更新的示例”。

 

posted @ 2008-05-30 13:47 寒天飞雪 阅读(138) | 评论 (0)编辑
定义和浏览透视

透视可以出于特定目的简化多维数据集的视图。默认情况下,用户可以查看多维数据集中对其有查看权限的所有元素。有关详细信息,请参阅配置对 Analysis Services 的访问权限。用户查看整个 Microsoft SQL Server 2005 Analysis Services (SSAS) 多维数据集时所看到的内容是该多维数据集的默认透视。对于导航视图的用户,尤其对于只需与多维数据集的一小部分交互就能满足其商业智能和报表需求的用户来说,整个多维数据集的视图将是非常复杂的。若要降低多维数据集明显的复杂性,可以创建多维数据集的可查看子集,这称为“透视”,透视可以只向用户显示多维数据集中的度量值组、度量值、维度、属性、层次结构、关键性能指标 (KPI)、操作和计算成员的已定义部分。使用不是针对以前版本的 Analysis Services 而编写的客户端应用程序来说,这种做法可能特别有用。例如,这些客户端不具有显示文件夹或透视的概念,但对于较早的客户端,透视的显示方式类似于多维数据集。有关详细信息,请参阅透视定义和配置透视

透视不是安全机制,而是用于提供更好用户体验的工具。透视的所有安全性都从基础多维数据集继承。

 

 

在 SQL Server Analysis Services 中定义新透视时,应当首先在多维数据集设计器中的“透视”选项卡的工具栏上单击“新建透视”,再定义透视的名称。创建新透视时,多维数据集中出现在“多维数据集对象”列表中的所有 Analysis Services 对象初始都会显示在透视中。若要删除这些对象,只需清除要从透视中删除的对象的复选框。

在此主题的任务中,将定义几个不同透视,然后通过每个新透视来浏览多维数据集。

定义“Internet 销售”透视

定义“Internet 销售”透视

  1. 打开 Analysis Services Tutorial 多维数据集的多维数据集设计器,然后单击“透视”选项卡。

    所有对象和它们的对象类型都将出现在“透视”窗格中,如下图所示。

  2. “透视”选项卡的工具栏上,单击“新建透视”

    新透视将显示在“透视名称”列中,并且默认透视名称为“透视”,如下图所示。注意,每个对象的复选框均已选中;除非您清除了对象的复选框,否则此透视与此多维数据集的默认透视是相同的。

  3. 将透视名称更改为 Internet Sales

  4. “Internet 销售额”设置为默认度量值。

    当用户通过使用此透视来浏览多维数据集时,此度量值将是用户所看到的度量值(除非指定了其他度量值)。

    还可以在多维数据集的“多维数据集结构”选项卡上的“属性”窗口中,为整个 Analysis Services Tutorial 多维数据集设置默认度量值。

     

     

  5. 请清除下列对象的复选框:

    • “分销商销售”度量值组

    • “销售配额”度量值组

    • “销售 Quotas1”度量值组

    • “分销商”多维数据集维度

    • “分销商所在地域”多维数据集维度

    • “销售区域”多维数据集维度

    • “雇员”多维数据集维度

    • “促销”多维数据集维度

    • “分销商收入”KPI

    • “大型分销商”命名集

    • “总销售额”计算成员

    • “总产品成本”计算成员

    • “分销商 GPM”计算成员

    • “总 GPM”计算成员

    • “所有产品的分销商销售额比率”计算成员

    • “所有产品的总销售额比率”计算成员

    这些对象与“Internet 销售”无关。

    在每个维度中,还可以单独选择希望出现在透视中的用户定义层次结构和属性。

     

     

定义“分销商销售”透视

定义“分销商销售”透视

  1. “透视”选项卡的工具栏上,单击“新建透视”

  2. 将新透视的名称更改为 Reseller Sales

  3. “分销商销售额”设置为默认度量值。

    当用户通过使用此透视来浏览多维数据集时,此度量值将是用户所看到的度量值(除非指定了其他度量值)。

  4. 请清除下列对象的复选框:

    • “Internet 销售”度量值组

    • “Internet 销售原因”度量值组

    • “客户”多维数据集维度

    • “Internet 销售订单详细信息”多维数据集维度

    • “销售原因”多维数据集维度

    • “Internet 销售详细信息钻取操作”钻取操作

    • “总销售额”计算成员

    • “总产品成本”计算成员

    • Internet GPM 计算成员

    • “总 GPM”计算成员

    • “所有产品的 Internet 销售额比率”计算成员

    • “所有产品的总销售额比率”计算成员

    这些对象与“分销商销售”无关。

定义“销售汇总”透视

定义“销售汇总”透视

  1. “透视”选项卡的工具栏上,单击“新建透视”

  2. 将新透视的名称更改为 Sales Summary

    不能将计算度量值指定为默认度量值。

     

     

  3. 请清除下列对象的复选框:

    • “Internet 销售”度量值组

    • “分销商销售”度量值组

    • “Internet 销售原因”度量值组

    • “销售配额”度量值组

    • “销售 Quotas1”度量值组

    • “Internet 销售订单详细信息”多维数据集维度

    • “销售原因”多维数据集维度

    • “Internet 销售详细信息钻取操作”钻取操作

  4. 选中以下对象的复选框:

    • “Internet 销售计数”度量值

    • “分销商销售计数”度量值

通过每个透视浏览多维数据集

通过每个透视浏览多维数据集

  1. “生成”菜单上,单击“部署 Analysis Services 教程”

  2. 成功完成部署后,请切换到“浏览器”选项卡,然后单击“重新连接”

  3. “数据”窗格中清除所有度量值和层次结构,并从“筛选器”窗格中清除所有维度。

  4. “元数据”窗格中检查度量值和维度。

    注意,所有已定义的度量值和度量值组都将出现。

  5. “浏览器”选项卡的工具栏上,选择“透视”列表中的“Internet 销售”,然后查看“元数据”窗格中的度量值和维度。

    注意,只那些为“Internet 销售”透视指定的对象才会出现,如下图所示。

  6. “元数据”窗格中,展开“度量值”

    请注意,只显示“Internet 销售”度量值组,以及 Internet GPM“所有产品的 Internet 销售额比率”计算成员。

  7. 展开“Internet 销售”,右键单击“Internet 销售额”,然后选择“添加到数据区域”

    此度量值将出现在“数据”窗格中。

  8. “浏览器”选项卡的工具栏上的“透视”列表中,选择“分销商销售”

    请注意,“Internet 销售额”度量值不再出现于“数据”窗格中。

  9. “元数据”窗格中,展开“度量值”

    请注意,“Internet 销售”度量值组不再出现于度量值列表中。

  10. “浏览器”选项卡的工具栏上的“透视”列表中,选择“销售汇总”

  11. “元数据”窗格中,依次展开“度量值”“Internet 销售”“分销商销售”

    注意,在每个度量值组中,只出现单个度量值,如下图所示。

posted @ 2008-05-30 13:41 寒天飞雪 阅读(137) | 评论 (0)编辑
定义操作:

在本教程的第 5 课中,您已经了解了如何定义事实维度以便用户可以按事实维度的成员对度量值进行维度化,并返回有关特定事实度量值的详细信息(如订单详细信息)。如果按事实维度来维度化事实数据,而不正确筛选查询所返回的数据,可能导致所有用户的查询性能都变慢,而这会使用户无法正常使用。通过定义钻取操作以返回同类信息,并对返回的总行数进行限制,可以极大地提高所有用户的查询性能,从而消除这个问题。

在本主题的任务中,将定义钻取操作,以返回通过 Internet 对客户进行销售的订单详细信息。

定义钻取操作属性

定义钻取操作属性

  1. 在 Analysis Services Tutorial 多维数据集的多维数据集设计器中,单击“操作”选项卡。

    “操作”选项卡中包括几个窗格。在选项卡的左侧是“操作组织程序”窗格和“计算工具”窗格。这两个窗格的右侧是“显示”窗格,其中可以显示“操作组织程序”窗格中所选操作的详细信息。

    下图显示了多维数据集设计器的“操作”选项卡。

  2. “操作”选项卡上,单击“新建钻取操作”

    “显示”窗格中将出现空白操作模板。

  3. “名称”框中,将此操作的名称更改为 Internet Sales Details Drillthrough Action

  4. “度量值组成员”列表中,选择“Internet 销售”

  5. “钻取列”框中,选择“维度”列表中的“Internet 销售订单详细信息”

  6. “返回列”列表中,选中“项说明”“订单号”复选框,再单击“确定”。下图显示至此在该操作过程中操作模板的应有外观。

  7. 展开“附加属性”框,如下图所示。

  8. “最大行数”框中键入 10

  9. “标题”框中,键入 Drillthrough to Order Details…

    这些设置将限制返回的行数,并指定在客户端应用程序菜单中将出现的标题。下图显示了“附加属性”框中的这些设置。

使用钻取操作

使用钻取操作

  1. “生成”菜单上,单击“部署 Analysis Services 教程”

  2. 部署成功完成后,在 Analysis Services Tutorial 多维数据集的多维数据集设计器中单击“浏览器”选项卡,再单击“重新连接”

  3. “数据”窗格中删除所有层次结构和度量值,然后删除“筛选器”窗格中的所有维度成员。

  4. “Internet 销售额” 度量值添加到数据区域。

  5. “客户所在地域”用户定义层次结构从“客户”维度的“位置”文件夹添加到“筛选器”窗格。

  6. “筛选表达式”列表中,依次展开“全部客户”AustraliaQueenslandBrisbane4000,然后选中 Adam Powell 复选框,再单击“确定”

    Adventure Works Cycles 对 Adam Powell 的产品销售总额将显示在数据区域中。

  7. 单击“数据”窗格中的数据单元,然后右键单击该数据单元并单击“钻取订单详细信息”

    交付给 Adam Powell 的订单的详细信息将显示在“数据示例查看器”中,如下图所示。但是,某些其他详细信息也会是有用的,如订单日期、截止日期和发运日期。在下一个过程中,您将添加这些其他详细信息。

  8. 单击“关闭”,以关闭“数据示例查看器”窗口。

修改钻取操作

修改钻取操作

  1. 打开“Internet 销售订单详细信息”维度的维度设计器。

    注意,仅为此维度定义了三个属性。

  2. “数据源视图”窗格中,右键单击空白的区域,再单击“显示所有表”

  3. “格式”菜单上,指向“自动布局”,然后单击“关系图”

  4. 右键单击“数据源视图”窗格中的空白区域,再依次单击“查找表”dbo.FactInternetSales“确定”,以找到 InternetSales (dbo.FactInternetSales) 表。

  5. 基于以下列创建新属性:

    • OrderDateKey

    • DueDateKey

    • ShipDateKey

  6. “截止日期键”特性的“名称”属性更改为“截止日期”,再将此特性的“名称列”属性更改为 DimTime.SimpleDate (WChar)

  7. “订单日期键”特性的“名称”属性更改为“订单日期”,再将此特性的“名称列”属性更改为 DimTime.SimpleDate (WChar)

  8. “发运日期键”特性的“名称”属性更改为“发运日期”,再将此特性的“名称列”属性更改为 DimTime.SimpleDate (WChar)

  9. 切换到 Analysis Services 教程多维数据集的多维数据集设计器的“操作”选项卡。

  10. “钻取列”框中,将以下列添加到“返回列”列表,再单击“确定”

    • 订单日期

    • 截止日期

    • 发运日期

    下图显示了这些所选列。

检查修改后的钻取操作

检查修改后的钻取操作

  1. “生成”菜单上,单击“部署 Analysis Services 教程”

  2. 在成功完成部署后,切换到 Analysis Services 教程多维数据集的多维数据集设计器中的“浏览器”选项卡,然后单击“重新连接”

  3. 单击单个数据单元,然后右键单击该单元,再单击“钻取订单详细信息”

    发运给 Adam Powell 的这些订单的详细信息将显示在“数据示例查看器”中,其中包括它们的订单日期、截止日期和发运日期信息,如下图所示。

  4. 单击“关闭”,以关闭“数据示例查看器”

通过下载并安装已更新的示例,可以获得第 8 课中使用的完整项目。有关详细信息,请参阅安装示例中的“获取已更新的示例”。

 

posted @ 2008-05-30 13:40 寒天飞雪 阅读(127) | 评论 (0)编辑

定义关键指标KPI:

若要在 Microsoft SQL Server 2005 中定义关键性能指标 (KPI),应当首先定义与 KPI 关联的 KPI 名称和度量值组。KPI 可以与所有度量值组或与单个度量值组关联。然后定义以下 KPI 元素:

  • 值表达式

    值表达式是物理度量值(如销售)、计算度量值(如利润)或使用多维表达式 (MDX) 表达式在 KPI 中定义的计算。

  • 目标表达式

    目标表达式是值或者是解析为值的 MDX 表达式,它用于定义值表达式所定义的度量值的目标。例如,目标表达式可以是公司业务经理希望增加的销售额或利润的数量。

  • 状态表达式

    状态表达式是 MDX 表达式,Analysis Services 用它来计算与目标表达式相比,值表达式的当前状态,其正常取值范围是 -1 到 +1。-1 表示非常差,而 +1 表示非常好。状态表达式用图形显示,以帮助您易于确定值表达式与目标表达式相比较的状态。

  • 走向表达式

    走向表达式是 MDX 表达式,Analysis Services 用它来计算与目标表达式相比,值表达式的当前走向。走向表达式可帮助业务用户快速确定相对于目标表达式,值表达式是否正在变得更好或更差。可以将几个图形中的某一个与走向表达式关联,以便帮助业务用户能够快速地了解走向。

除了为 KPI 定义的这些元素以外,还要为 KPI 定义几个属性。这些属性包括显示文件夹、父 KPI(如果 KPI 是从其他 KPI 计算得到的)、当前时间成员(如果有)、KPI 的权重(如果有)和 KPI 的说明。

有关 KPI 的更多示例,请参阅“计算工具”窗格中“模板”选项卡上或“Adventure Works DW”示例数据仓库示例中的 KPI 示例。有关详细信息,请参阅 AdventureWorks 示例数据仓库

 

 

在本主题的任务中,您将在 Analysis Services Tutorial 项目中定义两个 KPI,然后使用这些 KPI 来浏览 Analysis Services Tutorial 多维数据集。下面是要定义的 KPI:

  • 分销商收入

    此 KPI 用来度量如何将实际的分销商销售额与分销商销售的销售额进行比较、销售额与目标的距离以及达到目标的走向。

  • 产品毛利润率

    此 KPI 用来确定每个产品类别的毛利润率与每个产品的指定目标的接近程度,还用来确定达到此目标的趋势。

定义“分销商收入”KPI

定义“分销商收入”KPI

  1. 打开 Analysis Services Tutorial 多维数据集的多维数据集设计器,然后单击 KPI 选项卡。

    KPI 选项卡包括几个窗格。在选项卡的左侧是“KPI 组织程序”窗格和“计算工具”窗格。该选项卡中间的显示窗格包含了在“KPI 组织程序”窗格中选择的 KPI 的详细信息。

    下图显示了多维数据集设计器的 KPI 选项卡。

  2. KPI 选项卡的工具栏上,单击“新建 KPI”

    显示窗格中将出现空白 KPI 模板,如下图所示。

  3. “名称”框中键入“分销商收入”,然后单击“关联的度量值组”列表中的“分销商销售”

  4. “计算工具”窗格中的“元数据”选项卡上,展开“度量值”,再展开“分销商收入”,然后将“分销商销售额”度量值拖到“值表达式”框中。

  5. “计算工具”窗格中的“元数据”选项卡上,展开“度量值”,再展开“销售配额”,再将“销售配额”度量值拖到“目标表达式”框中。

  6. 验证是否在“状态指示器”列表中选中“测量”,然后在“状态表达式”框中键入以下 MDX 表达式:

    复制代码
    Case
                    When
                    KpiValue("Reseller Revenue")/KpiGoal("Reseller Revenue")>=.95
                    Then 1
                    When
                    KpiValue("Reseller Revenue")/KpiGoal("Reseller Revenue")<.95
                    And
                    KpiValue("Reseller Revenue")/KpiGoal("Reseller Revenue")>=.85
                    Then 0
                    Else-1
                    End

    此 MDX 表达式为计算目标的完成进度提供基本算法。在此 MDX 表达式中,如果实际的分销商销售额超过目标的 85%,则用值 0 来填充所选图形。由于测量是选择的图形,因此测量中的指针将位于空和满的中间。如果实际的分销商销售额超过了 90%,则测量上的指针将位于空和满之间的四分之三处。

  7. 验证是否在“走向指示器”列表中选择了“标准箭头”,然后在“走向表达式”框中键入以下表达式:

    复制代码
    Case
                    When IsEmpty
                    (ParallelPeriod
                    ([Date].[Calendar Time].[Calendar Year],1,
                    [Date].[Calendar Time].CurrentMember))
                    Then 0
                    When  (
                    KpiValue("Reseller Revenue") -
                    (KpiValue("Reseller Revenue"),
                    ParallelPeriod
                    ([Date].[Calendar Time].[Calendar Year],1,
                    [Date].[Calendar Time].CurrentMember))
                    /
                    (KpiValue ("Reseller Revenue"),
                    ParallelPeriod
                    ([Date].[Calendar Time].[Calendar Year],1,
                    [Date].[Calendar Time].CurrentMember)))
                    >=.02
                    Then 1
                    When(
                    KpiValue("Reseller Revenue") -
                    (KpiValue ( "Reseller Revenue" ),
                    ParallelPeriod
                    ([Date].[Calendar Time].[Calendar Year],1,
                    [Date].[Calendar Time].CurrentMember))
                    /
                    (KpiValue("Reseller Revenue"),
                    ParallelPeriod
                    ([Date].[Calendar Time].[Calendar Year],1,
                    [Date].[Calendar Time].CurrentMember)))
                    <=.02
                    Then -1
                    Else 0
                    End

    此 MDX 表达式为计算预定目标的完成趋势提供基本算法。

使用“分销商收入”KPI 浏览多维数据集

使用“分销商收入”KPI 浏览多维数据集

  1. 在 Business Intelligence Development Studio 的“生成”菜单上,单击“部署 Analysis Services 教程”

  2. 成功完成部署后,请在 KPI 选项卡的工具栏上单击“浏览器视图”,然后单击“重新连接”

    状态和走向测量将基于每个维度的默认成员的值,与值和目标的值一起,显示在分销商销售的“KPI 浏览器”窗格中。因为尚未将任何维度的任何其他成员定义为默认成员,所以每个维度的默认成员都是“所有”级别的“所有”成员。

    下图显示了 KPI 选项卡的“浏览器视图”中的“KPI 浏览器”窗格内的 KPI。

  3. “筛选器”窗格中,依次选择“维度”列表中的“销售区域”“层次结构”列表中的“销售区域”“运算符”列表中的“等于”“筛选表达式”列表中的 North America,然后单击“确定”

  4. “筛选器”窗格中,依次选择“维度”列表中的“日期”“层次结构”列表中的“日历时间”“运算符”列表中的“等于”“筛选表达式”列表中的 Q3 CY 2003,然后单击“确定”

  5. 单击“KPI 浏览器”窗格中的任意位置,以更新“分销商收入 KPI”的值。

    注意,KPI 的“值”“目的”“状态”部分反映了新时间段的值,如下图所示。

定义“产品毛利润率 KPI”

定义“总毛利润率 KPI”

  1. KPI 选项卡的工具栏上单击“窗体视图”,然后单击“新建 KPI”

  2. “名称”框中键入“产品毛利润率”,再验证“<所有>”是否已出现在“关联的度量值组”列表中。

  3. “计算工具”窗格内的“元数据”选项卡中,将“总 GPM”度量值拖到“值表达式”框中。

  4. “目标表达式”框中,输入以下表达式:

    复制代码
    Case
                    When [Product].[Category].CurrentMember Is
                    [Product].[Category].[Accessories]
                    Then .40
                    When [Product].[Category].CurrentMember
                    Is [Product].[Category].[Bikes]
                    Then .12
                    When [Product].[Category].CurrentMember Is
                    [Product].[Category].[Clothing]
                    Then .20
                    When [Product].[Category].CurrentMember Is
                    [Product].[Category].[Components]
                    Then .10
                    Else .12
                    End
  5. “状态指示器”列表中,选择“柱状”

  6. “状态表达式”框中键入以下 MDX 表达式:

    复制代码
    Case
                    When KpiValue( "Product Gross Profit Margin" ) /
                    KpiGoal ( "Product Gross Profit Margin" ) >= .90
                    Then 1
                    When KpiValue( "Product Gross Profit Margin" ) /
                    KpiGoal ( "Product Gross Profit Margin" ) <  .90
                    And
                    KpiValue( "Product Gross Profit Margin" ) /
                    KpiGoal ( "Product Gross Profit Margin" ) >= .80
                    Then 0
                    Else -1
                    End

    此 MDX 表达式为计算目标的完成进度提供基本算法。

  7. 验证是否在“走向指示器”列表中选择了“标准箭头”,然后在“走向表达式”框中键入以下 MDX 表达式:

    复制代码
    Case
                    When IsEmpty
                    (ParallelPeriod
                    ([Date].[Calendar Time].[Calendar Year],1,
                    [Date].[Calendar Time].CurrentMember))
                    Then 0
                    When VBA!Abs
                    (
                    KpiValue( "Product Gross Profit Margin" ) -
                    (
                    KpiValue ( "Product Gross Profit Margin" ),
                    ParallelPeriod
                    (
                    [Date].[ Calendar Time].[ Calendar Year],
                    1,
                    [Date].[ Calendar Time].CurrentMember
                    )
                    ) /
                    (
                    KpiValue ( "Product Gross Profit Margin" ),
                    ParallelPeriod
                    (
                    [Date].[ Calendar Time].[ Calendar Year],
                    1,
                    [Date].[ Calendar Time].CurrentMember
                    )
                    )
                    ) <=.02
                    Then 0
                    When KpiValue( "Product Gross Profit Margin" ) -
                    (
                    KpiValue ( "Product Gross Profit Margin" ),
                    ParallelPeriod
                    (
                    [Date].[ Calendar Time].[ Calendar Year],
                    1,
                    [Date].[ Calendar Time].CurrentMember
                    )
                    ) /
                    (
                    KpiValue ( "Product Gross Profit Margin" ),
                    ParallelPeriod
                    (
                    [Date].[Calendar Time].[Calendar Year],
                    1,
                    [Date].[Calendar Time].CurrentMember
                    )
                    )  >.02
                    Then 1
                    Else -1
                    End

    此 MDX 表达式为计算预定目标的完成趋势提供基本算法。

使用“总毛利润率 KPI”浏览多维数据集

使用“总毛利润率 KPI”浏览多维数据集

  1. “生成”菜单上,单击“部署 Analysis Services 教程”

  2. 成功完成部署后,在 KPI 选项卡的工具栏上单击“重新连接”,然后单击“浏览器视图”

    此时将显示“总毛利润率 KPI”,并显示 Q3 CY 2003North America 销售区域的 KPI 值。

  3. “筛选器”窗格中,依次选择“维度”列表中的“产品”“层次结构”列表中的“类别”“运算符”列表中的“等于”“筛选表达式”列表中的“自行车”,然后单击“确定”

    随即出现 Q3 CY 2003 中 North America 分销商在自行车销售中的毛利润率,如下图所示。

通过下载并安装已更新的示例,可以获得第 7 课中使用的完整项目。有关信息,请参阅安装示例中的“获取已更新的示例”。

 

 

posted @ 2008-05-30 13:38 寒天飞雪 阅读(276) | 评论 (0)编辑
使用脚本命令定义作用域分配

在本课前面两个主题的任务中,您已经了解了如何将计算成员和命名集计算添加到多维数据集的计算脚本中。除了这两个特定类型的多维表达式 (MDX) 计算以外,还可以使用新建脚本命令在 MDX 支持的多维数据集中执行大多数操作。

在 Microsoft SQL Server 2005 Analysis Services (SSAS) 中,MDX 脚本可以在脚本执行过程中的特定位置应用于整个多维数据集,或应用于多维数据集的特定部分。您已经了解了默认脚本命令,CALCULATE 语句,该命令可基于默认作用域以聚合数据填充多维数据集中的单元。

默认作用域是整个多维数据集,但在上一个主题中提到,您可以使用 SCOPE 语句定义有更多限制的作用域,这称为“子多维数据集”,然后将 MDX 脚本只应用于特定的多维数据集空间。SCOPE 语句将定义计算脚本中所有后续的 MDX 表达式和语句的作用域,直到当前作用域终止或重新界定作用域。然后,使用 THIS 语句将 MDX 表达式应用于当前作用域。可以使用 BACK_COLOR 语句为当前作用域中的单元指定背景单元颜色,以在调试期间提供帮助。

在此主题的任务中,将使用 SCOPETHIS 语句定义在 2005 会计年度内每个会计季度的销售配额。然后,在多维数据集中将销售配额分配到所有会计年度的月份级别。您还将了解如何使用断点帮助自己调试计算脚本。

按时间和雇员检查销售配额分配

按时间和雇员检查销售配额分配

  1. 打开 Analysis Services Tutorial 多维数据集的多维数据集设计器,然后单击“浏览器”选项卡。

  2. “数据”窗格中删除所有层次结构和度量值,然后从“筛选器”窗格中删除所有维度成员。

  3. “销售配额”度量值从“销售配额”度量值组添加到“数据”窗格的“数据”区域。

  4. 将用户定义的层次结构“会计时间”添加到列。

  5. “雇员姓名”属性层次结构添加到行区域。

    注意,还没有为 2005 会计年度定义销售配额值。

  6. 在列区域中,删除 FY 2002FY 2003

  7. 在列区域中,依次展开 FY2004H1 FY 2004Q3 FY 2004

    注意,会计季度中的每个会计月份的销售配额与会计季度的销售配额的数量相同。这是因为“销售定额”度量值组中的时间维度的颗粒是季度级别,相关内容将在第 5 课中讨论。

    下图显示了在 2004 会计年度的第四季度中每个月份都有销售配额的每个雇员的销售配额。

定义 2005 会计年度的销售配额计算的作用域

在此任务中,将检查当前作用域,并修改作用域,然后定义用来基于 2004 会计年度的值确定 2005 会计年度销售配额值的计算。

定义 2005 会计年度的销售配额计算的作用域

  1. 选择“计算”选项卡,然后在工具栏上选择“窗体视图”

  2. “脚本组织程序”窗格中,选择“大型分销商”,然后在“计算”选项卡的工具栏上,单击“新建脚本命令”

    注意,“计算表达式”窗格中将出现空脚本,并且显示此脚本命令时,将在“脚本组织程序”窗格中同时显示空白标题。

  3. “计算表达式”窗格中,键入下列语句:

    复制代码
    /* Changing Scope to All or Default Member */
                    SCOPE (ROOT())

    SCOPE 语句会将多维数据集作用域更改为“全部”,或默认值(即多维数据集中所有属性的成员)。

  4. “计算”选项卡的工具栏上,单击“新建脚本命令”,然后在“计算表达式”窗格中键入以下语句:

    复制代码
    /* Defining the cube scope for the sales amount quotas for FY2005 */
                    SCOPE ()

    注意,在右括号下面出现了红色波浪线,这说明必须在 SCOPE 语句的括号中定义一组成员。这需要将“销售配额”度量值添加到 SCOPE 语句中,以便在作用域中包括此度量值。

  5. “计算工具”窗格中的“元数据”选项卡上,依次展开“度量值”“销售配额”,然后将“销售配额”度量值拖至“计算表达式”窗格内的 SCOPE 语句的括号中。

    注意,红色波浪线将消失。下一步,将 FY 2005 维度成员添加到 SCOPE 语句中,以将此时间维度成员添加到当前作用域。

  6. “计算工具”窗格的“元数据”选项卡上,依次展开“日期”“会计”“会计时间”“会计年度”,再将 FY 2005 成员拖至“计算表达式”窗格中紧靠正在定义集合的“[销售配额]”成员之后的 SCOPE 语句中。

    注意,此集合的该新成员的[日期]部分下面将出现红色波浪线。此波浪线说明,紧靠此维度成员之前存在语法错误,因为在 SCOPE 语句中,集合的每个成员之间必须有逗号分隔。

  7. “日期”维度中 FY 2005 成员的“[日期]”部分之前添加必需的逗号。

    注意,最初的红色曲线将会消失。下一步,将“雇员”维度中“雇员”用户定义的层次结构的成员添加到 SCOPE 语句中,以将这些成员添加到当前作用域内。

  8. “计算工具”窗格的“元数据”选项卡中,展开“雇员”,再将“雇员”用户定义的层次结构拖至“计算表达式”窗格内紧靠正在定义集合的 [日期].[会计时间].[会计年度].&[2005] 成员后面的 SCOPE 语句中。

    注意,在此集合的该新成员的[雇员]部分下面将出现红色波浪线,这表示在 SCOPE 语句中,集合的每个成员之间必须有逗号分隔。

  9. 在新成员的[雇员]部分之前添加必需的逗号。

    注意,最初的红色曲线将会消失。

  10. SCOPE 语句中,在此集合的“[雇员].[多个雇员]”成员末尾添加以下子句,以完成集合的该第三个成员的定义:

    复制代码
    .Members

    此子句指定“雇员”维度中“雇员”层次结构的所有成员都应当包括在当前多维数据集作用域内。

  11. 验证已完成的 SCOPE 语句是否与以下脚本匹配:

    复制代码
    SCOPE ([Measures].[Sales Amount Quota],[Date].[Fiscal Time].[Fiscal Year].&[2005], [Employee].[Employees].Members)

    现在,对于将向其应用 MDX 表达式以计算 2005 会计年度销售配额数量的子多维数据集,您已完成了用来定义该子多维数据集的作用域定义。

  12. “计算”选项卡的工具栏上,单击“脚本视图”,再检查新添加的脚本命令。

    注意,在“计算表达式”窗格中键入每个脚本命令时它都会出现,但会在每个脚本命令的末尾添加分号。另外,每个脚本命令前面的注释有助于您理解每个单独的命令,如下图所示。

定义和测试 2005 会计年度新销售配额计算

在此过程中,您将向计算脚本添加新的脚本命令,以为“雇员”维度的所有成员计算其 2005 会计年度的销售配额。但是,您不用在“窗体”视图中添加脚本命令,而是在“脚本”视图中直接添加脚本命令。在“脚本”视图中,必须确保在每个脚本命令之间添加分号。

定义和测试 2005 会计年度的新销售配额计算

  1. “脚本”视图中,在计算脚本末尾的新行中键入以下语句:

    复制代码
    /* Applying a calculation to the subcube */
                    THIS = [Date].[Fiscal Time].[Fiscal Year].&[2004] * 1.25;

    THIS 语句将新值分配给位于子多维数据集的“雇员”成员和 FY 2005 成员的交集处的“销售配额”度量值。新值基于在 2004 会计年度“雇员”成员和“销售配额”度量值的交集所产生的值乘以 1.25。

  2. “计算表达式”窗格中,单击 THIS 语句的左侧空白处,以设置断点。

    注意,此空白处会出现一个红点,并且该语句将以红色突出显示,如下图所示。在调试模式中执行此项目时,对项目的更改将部署到 Analysis Services 实例,多维数据集将会处理并执行计算脚本,直到遇到断点。然后可以逐个地单步执行其余脚本。如果不设置断点而在调试模式中运行项目,则计算脚本将在第一个计算脚本(CALCULATE 语句)处停止。

  3. “调试”菜单中,单击“启动调试”(或按键盘上的 F5)。

    将部署和处理项目并执行计算脚本,直到遇到断点。

  4. 隐藏所有停靠窗口,以提供更多区域来查看出现在“计算”选项卡底部的“透视表”窗格。

    如下图所示的“透视表”窗格将有助于您进行调试。

  5. “透视表”窗格中,将“销售配额”度量值添加到数据区域,再将“日期.会计时间”用户定义的层次结构添加到列区域,然后将“雇员姓名”属性层次结构从“雇员”维度添加到行区域。

    请注意,在“销售配额”度量值的数据区域中,每个雇员的“销售配额”度量值的“会计年度”级别的 FY 2005 成员都不包含值,如下图所示。默认情况下,在调试模式中时,“透视表”窗格中将显示空单元。