Loop discovering dimensions

6 posts, 1 answers
  1. Walter
    Walter avatar
    7 posts
    Member since:
    Mar 2015

    Posted 05 Mar 2015 Link to this post

    We're trying to integrate PivotGrid with the XML/A server we use, Mondrian. Drill-down works fine, however there's a problem when PivotGrid needs to discover the dimensions/hierarchies. See the screenshot, PivotGrid enters into a loop when the user double-clicks on the dimensions to see the hierarchy and its levels. The screenshot also shows that the drill-down executes correctly discovering the levels.

    Tracing on Mondrian side, we see that when the user initially double clicks on the dimension, PivotGrid sends a request to discover the hierarchies:

    <?xml version="1.0" encoding="UTF-8"?>
    <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
       <Header />
       <Body>
          <Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
             <RequestType>MDSCHEMA_HIERARCHIES</RequestType>
             <Restrictions>
                <RestrictionList>
                   <CATALOG_NAME>FoodMart</CATALOG_NAME>
                   <CUBE_NAME>Sales</CUBE_NAME>
                   <DIMENSION_UNIQUE_NAME>[Product]</DIMENSION_UNIQUE_NAME>
                </RestrictionList>
             </Restrictions>
             <Properties>
                <PropertyList>
                   <Catalog>FoodMart</Catalog>
                </PropertyList>
             </Properties>
          </Discover>
       </Body>
    </Envelope>

    Mondrian responds with the (one or more) hierarchies, but PivotGrid reiterates the same MDSCHEMA_HIERARCHIES request on and on. Mondrian never receives a MDSCHEMA_LEVELS request.


    Please see below Mondrian's response to the MDSCHEMA_HIERARCHIES requests. Please let us know if you need further information.


    Thanks
    Walter




      <?xml version="1.0" encoding="ISO-8859-1"?>
      <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" >
      <SOAP-ENV:Header>
      </SOAP-ENV:Header>
      <SOAP-ENV:Body>
      <cxmla:DiscoverResponse xmlns:cxmla="urn:schemas-microsoft-com:xml-analysis">

        <cxmla:return>

          <root xmlns="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:EX="urn:schemas-microsoft-com:xml-analysis:exception">

            <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sql="urn:schemas-microsoft-com:xml-sql" targetNamespace="urn:schemas-microsoft-com:xml-analysis:rowset" elementFormDefault="qualified">

              <xsd:element name="root">

                <xsd:complexType>

                  <xsd:sequence>

                    <xsd:element name="row" type="row" minOccurs="0" maxOccurs="unbounded"/>

                  </xsd:sequence>

                </xsd:complexType>

              </xsd:element>

              <xsd:simpleType name="uuid">

                <xsd:restriction base="xsd:string">

                  <xsd:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"/>

                </xsd:restriction>

              </xsd:simpleType>

              <xsd:complexType name="row">

                <xsd:sequence>

                  <xsd:element sql:field="CATALOG_NAME" name="CATALOG_NAME" type="xsd:string" minOccurs="0"/>

                  <xsd:element sql:field="SCHEMA_NAME" name="SCHEMA_NAME" type="xsd:string" minOccurs="0"/>

                  <xsd:element sql:field="CUBE_NAME" name="CUBE_NAME" type="xsd:string"/>

                  <xsd:element sql:field="DIMENSION_UNIQUE_NAME" name="DIMENSION_UNIQUE_NAME" type="xsd:string"/>

                  <xsd:element sql:field="HIERARCHY_NAME" name="HIERARCHY_NAME" type="xsd:string"/>

                  <xsd:element sql:field="HIERARCHY_UNIQUE_NAME" name="HIERARCHY_UNIQUE_NAME" type="xsd:string"/>

                  <xsd:element sql:field="HIERARCHY_GUID" name="HIERARCHY_GUID" type="uuid" minOccurs="0"/>

                  <xsd:element sql:field="HIERARCHY_CAPTION" name="HIERARCHY_CAPTION" type="xsd:string"/>

                  <xsd:element sql:field="DIMENSION_TYPE" name="DIMENSION_TYPE" type="xsd:short"/>

                  <xsd:element sql:field="HIERARCHY_CARDINALITY" name="HIERARCHY_CARDINALITY" type="xsd:unsignedInt"/>

                  <xsd:element sql:field="DEFAULT_MEMBER" name="DEFAULT_MEMBER" type="xsd:string" minOccurs="0"/>

                  <xsd:element sql:field="ALL_MEMBER" name="ALL_MEMBER" type="xsd:string" minOccurs="0"/>

                  <xsd:element sql:field="DESCRIPTION" name="DESCRIPTION" type="xsd:string" minOccurs="0"/>

                  <xsd:element sql:field="STRUCTURE" name="STRUCTURE" type="xsd:short"/>

                  <xsd:element sql:field="IS_VIRTUAL" name="IS_VIRTUAL" type="xsd:boolean"/>

                  <xsd:element sql:field="IS_READWRITE" name="IS_READWRITE" type="xsd:boolean"/>

                  <xsd:element sql:field="DIMENSION_UNIQUE_SETTINGS" name="DIMENSION_UNIQUE_SETTINGS" type="xsd:int"/>

                  <xsd:element sql:field="DIMENSION_IS_VISIBLE" name="DIMENSION_IS_VISIBLE" type="xsd:boolean"/>

                  <xsd:element sql:field="HIERARCHY_IS_VISIBLE" name="HIERARCHY_IS_VISIBLE" type="xsd:boolean"/>

                  <xsd:element sql:field="HIERARCHY_ORDINAL" name="HIERARCHY_ORDINAL" type="xsd:unsignedInt"/>

                  <xsd:element sql:field="DIMENSION_IS_SHARED" name="DIMENSION_IS_SHARED" type="xsd:boolean"/>

                  <xsd:element sql:field="PARENT_CHILD" name="PARENT_CHILD" type="xsd:boolean" minOccurs="0"/>

                  <xsd:element sql:field="LEVELS" name="LEVELS" minOccurs="0"/>

                </xsd:sequence>

              </xsd:complexType>

            </xsd:schema>

            <row>

              <CATALOG_NAME>FoodMart</CATALOG_NAME>

              <SCHEMA_NAME>FoodMart</SCHEMA_NAME>

              <CUBE_NAME>Sales</CUBE_NAME>

              <DIMENSION_UNIQUE_NAME>[Product]</DIMENSION_UNIQUE_NAME>

              <HIERARCHY_NAME>Product</HIERARCHY_NAME>

              <HIERARCHY_UNIQUE_NAME>[Product]</HIERARCHY_UNIQUE_NAME>

              <HIERARCHY_CAPTION>Product</HIERARCHY_CAPTION>

              <DIMENSION_TYPE>3</DIMENSION_TYPE>

              <HIERARCHY_CARDINALITY>2256</HIERARCHY_CARDINALITY>

              <DEFAULT_MEMBER>[Product].[All Products]</DEFAULT_MEMBER>

              <ALL_MEMBER>[Product].[All Products]</ALL_MEMBER>

              <DESCRIPTION>Sales Cube - Product Hierarchy</DESCRIPTION>

              <STRUCTURE>0</STRUCTURE>

              <IS_VIRTUAL>false</IS_VIRTUAL>

              <IS_READWRITE>false</IS_READWRITE>

              <DIMENSION_UNIQUE_SETTINGS>0</DIMENSION_UNIQUE_SETTINGS>

              <DIMENSION_IS_VISIBLE>true</DIMENSION_IS_VISIBLE>

              <HIERARCHY_IS_VISIBLE>true</HIERARCHY_IS_VISIBLE>

              <HIERARCHY_ORDINAL>6</HIERARCHY_ORDINAL>

              <DIMENSION_IS_SHARED>true</DIMENSION_IS_SHARED>

              <PARENT_CHILD>false</PARENT_CHILD>

            </row>

          </root>

        </cxmla:return>

      </cxmla:DiscoverResponse>
      </SOAP-ENV:Body>
      </SOAP-ENV:Envelope>


  2. Answer
    Georgi Krustev
    Admin
    Georgi Krustev avatar
    3707 posts

    Posted 10 Mar 2015 Link to this post

    Hello Walter,

    Thank you for the repro information. I was able to observe the issue locally and I believe that the unique name of the "Product" dimension (first level) is equal  to the "Product" child dimension (second level) unique name. In other words, the DIMENSION_UNIQUE_NAME of the first level member is equal to the HIERARCHY_UNIQUE_NAME of the second level member - both names are set to "[Product]". Hence the PivotConfigurator always finds the the first level member and requests its hierarchies. What you need to do is to set unique names to every member in order to avoid such issues.

    As a side note, the name of the first level "Product" member is "[Product]" and the unique name of the second level "Product" member is "[Product].[Product]". You can examine the response in our online demos.

    Regards,
    Georgi Krustev
    Telerik
     
    Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
     
  3. Kendo UI is VS 2017 Ready
  4. Walter
    Walter avatar
    7 posts
    Member since:
    Mar 2015

    Posted 10 Mar 2015 in reply to Georgi Krustev Link to this post

    Thanks, assigning a different name to the hierarchy did the trick.

    Now I can see that the levels cannot be dropped on the columns/rows (I see the same behavior in your online demo, so it's not an issue with Mondrian). Still, they are shown when the hierarchy tree is opened. Is there an option to allow to drop levels on columns/rows?
  5. Georgi Krustev
    Admin
    Georgi Krustev avatar
    3707 posts

    Posted 12 Mar 2015 Link to this post

    Hello Walter,

    Currently, the PivotConfigurator does not control/restrict the treeview levels. If the cube returns any data as a result of the Discover request, then the widget will display it.

    Regards,
    Georgi Krustev
    Telerik
     
    Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
     
  6. Walter
    Walter avatar
    7 posts
    Member since:
    Mar 2015

    Posted 12 Mar 2015 in reply to Georgi Krustev Link to this post

    Thanks Georgi. Please look at the screenshot (taken from your online demo) the lower levels cannot be dropped to columns or rows.

    For example, you may have the following levels for a "Store" dimension/hierarchy: Country/State/City/Zipcode; we cannot drop these levels into columns/rows. In other OLAP client tools these levels can be used to model cubes, you don't have to drill down from the top.

    Also, if these levels cannot be dragged from the tree, why are you showing them?


    Thanks
    Walter
  7. Georgi Krustev
    Admin
    Georgi Krustev avatar
    3707 posts

    Posted 16 Mar 2015 Link to this post

    Hello Walter,

    Currently, PivotConfigurator allows dragging only to elements that have children.

    We will consider to enable this functionality in some of our next Kendo UI releases in order to allow more refined PivotGrid configuration.

    Regards,
    Georgi Krustev
    Telerik
     
    Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
     
Back to Top
Kendo UI is VS 2017 Ready