Search in sources :

Example 11 with Result

use of mondrian.olap.Result in project mondrian by pentaho.

the class FunctionTest method testCurrentMemberInCalcMember.

/**
 * When evaluating a calculated member, MSOLAP regards that calculated member as the current member of that dimension,
 * so it cycles in this case. But I disagree; it is the previous current member, before the calculated member was
 * expanded.
 */
public void testCurrentMemberInCalcMember() {
    Result result = executeQuery("with member [Measures].[Foo] as '[Measures].CurrentMember.Name'\n" + "select {[Measures].[Foo]} on columns\n" + "from Sales");
    Assert.assertEquals("Unit Sales", result.getCell(new int[] { 0 }).getValue());
}
Also used : Result(mondrian.olap.Result)

Example 12 with Result

use of mondrian.olap.Result in project mondrian by pentaho.

the class FunctionTest method testCurrentMemberMultiHierarchy.

public void testCurrentMemberMultiHierarchy() {
    final String hierarchyName = MondrianProperties.instance().SsasCompatibleNaming.get() ? "Weekly" : "Time.Weekly";
    final String queryString = "with member [Measures].[Foo] as\n" + " 'IIf(([Time].[Time].CurrentMember.Hierarchy.Name = \"" + hierarchyName + "\"), \n" + "[Measures].[Unit Sales], \n" + "- [Measures].[Unit Sales])'\n" + "select {[Measures].[Unit Sales], [Measures].[Foo]} ON COLUMNS,\n" + "  {[Product].[Food].[Dairy]} ON ROWS\n" + "from [Sales]";
    Result result = executeQuery(queryString + " where [Time].[1997]");
    final int[] coords = { 1, 0 };
    Assert.assertEquals("-12,885", result.getCell(coords).getFormattedValue());
    // As above, but context provided on rows axis as opposed to slicer.
    final String queryString1 = "with member [Measures].[Foo] as\n" + " 'IIf(([Time].[Time].CurrentMember.Hierarchy.Name = \"" + hierarchyName + "\"), \n" + "[Measures].[Unit Sales], \n" + "- [Measures].[Unit Sales])'\n" + "select {[Measures].[Unit Sales], [Measures].[Foo]} ON COLUMNS,";
    final String queryString2 = "from [Sales]\n" + "  where [Product].[Food].[Dairy] ";
    result = executeQuery(queryString1 + " {[Time].[1997]} ON ROWS " + queryString2);
    Assert.assertEquals("-12,885", result.getCell(coords).getFormattedValue());
    result = executeQuery(queryString + " where [Time.Weekly].[1997]");
    Assert.assertEquals("-12,885", result.getCell(coords).getFormattedValue());
    result = executeQuery(queryString1 + " {[Time.Weekly].[1997]} ON ROWS " + queryString2);
    Assert.assertEquals("-12,885", result.getCell(coords).getFormattedValue());
}
Also used : Result(mondrian.olap.Result)

Example 13 with Result

use of mondrian.olap.Result in project mondrian by pentaho.

the class FunctionTest method testCurrentMemberFromDefaultMember.

public void testCurrentMemberFromDefaultMember() {
    Result result = executeQuery("with member [Measures].[Foo] as" + " '[Time].[Time].CurrentMember.Name'\n" + "select {[Measures].[Foo]} on columns\n" + "from Sales");
    Assert.assertEquals("1997", result.getCell(new int[] { 0 }).getValue());
}
Also used : Result(mondrian.olap.Result)

Example 14 with Result

use of mondrian.olap.Result in project mondrian by pentaho.

the class FunctionTest method testVisualTotalsLevel.

public void testVisualTotalsLevel() {
    Result result = getTestContext().executeQuery("select {[Measures].[Unit Sales]} on columns,\n" + "{[Product].[All Products],\n" + " [Product].[All Products].[Food].[Baked Goods].[Bread],\n" + " VisualTotals(\n" + "    {[Product].[All Products].[Food].[Baked Goods].[Bread],\n" + "     [Product].[All Products].[Food].[Baked Goods].[Bread].[Bagels],\n" + "     [Product].[All Products].[Food].[Baked Goods].[Bread].[Muffins]},\n" + "     \"**Subtotal - *\")} on rows\n" + "from [Sales]");
    final List<Position> rowPos = result.getAxes()[1].getPositions();
    final Member member0 = rowPos.get(0).get(0);
    assertEquals("All Products", member0.getName());
    assertEquals("(All)", member0.getLevel().getName());
    final Member member1 = rowPos.get(1).get(0);
    assertEquals("Bread", member1.getName());
    assertEquals("Product Category", member1.getLevel().getName());
    final Member member2 = rowPos.get(2).get(0);
    assertEquals("*Subtotal - Bread", member2.getName());
    assertEquals("Product Category", member2.getLevel().getName());
    final Member member3 = rowPos.get(3).get(0);
    assertEquals("Bagels", member3.getName());
    assertEquals("Product Subcategory", member3.getLevel().getName());
    final Member member4 = rowPos.get(4).get(0);
    assertEquals("Muffins", member4.getName());
    assertEquals("Product Subcategory", member4.getLevel().getName());
}
Also used : Position(mondrian.olap.Position) Member(mondrian.olap.Member) Result(mondrian.olap.Result)

Example 15 with Result

use of mondrian.olap.Result in project mondrian by pentaho.

the class FunctionTest method testFilterWithSlicer.

/**
 * Make sure that slicer is in force when expression is applied on axis, E.g. select filter([Customers].members, [Unit
 * Sales] > 100) from sales where ([Time].[1998])
 */
public void testFilterWithSlicer() {
    Result result = executeQuery("select {[Measures].[Unit Sales]} on columns,\n" + " filter([Customers].[USA].children,\n" + "        [Measures].[Unit Sales] > 20000) on rows\n" + "from Sales\n" + "where ([Time].[1997].[Q1])");
    Axis rows = result.getAxes()[1];
    // if slicer were ignored, there would be 3 rows
    Assert.assertEquals(1, rows.getPositions().size());
    Cell cell = result.getCell(new int[] { 0, 0 });
    Assert.assertEquals("30,114", cell.getFormattedValue());
}
Also used : Cell(mondrian.olap.Cell) Axis(mondrian.olap.Axis) Result(mondrian.olap.Result)

Aggregations

Result (mondrian.olap.Result)113 Axis (mondrian.olap.Axis)24 Member (mondrian.olap.Member)10 Test (org.junit.Test)10 Cell (mondrian.olap.Cell)9 Connection (mondrian.olap.Connection)9 Query (mondrian.olap.Query)9 Position (mondrian.olap.Position)8 TestContext (mondrian.test.TestContext)7 ArrayList (java.util.ArrayList)5 MondrianProperties (mondrian.olap.MondrianProperties)5 OlapElement (mondrian.olap.OlapElement)5 RolapCell (mondrian.rolap.RolapCell)5 NonEmptyResult (mondrian.rolap.RolapConnection.NonEmptyResult)5 Execution (mondrian.server.Execution)5 Dialect (mondrian.spi.Dialect)5 OlapConnection (org.olap4j.OlapConnection)5 List (java.util.List)4 ResultBase (mondrian.olap.ResultBase)4 Evaluator (mondrian.olap.Evaluator)3