Setting UDA in MDX

Hi all:
Is there any way to assign a UDA label to an ASO member via an MDX script? I have a script that uses the TOPPERCENT function to determine which sales reps contribute to 80% of total sales for a region. Once the sales rep have been determined, I want to be able to tag them for indentification on a report. I figured that setting a UDA would be one way, but not sure this is supported. If not, is there any other way I can tag or "isolate" the top 80% of sales reps?
thanks,
Axe

MDX does not do outline changes just retrieve data from a cube. You could have a MDX extract create a file that is used to create UDAs

Similar Messages

  • Setting default member of attribute hierarchy in MDX script. Default member not taken into account while using user defined hierarchy

    Hi all
    I have a date dimension that (type time) with attributes
    - [FiscalYear] (type years)
    - [FiscalMonth] (type months)
    - [FiscalWeek] (type weeks)
    In addition to the attributes used in the natural hierarchy, I have an attribute [PerType] containing one member comming from the relational table 'WTD' which corresponds to 'Current Date'. All other members of this attribute hierarchy are calculated members (defined in the MDX script). Examples:
    --Last year
    CREATE MEMBER CURRENTCUBE.[Date].[PerType].[LY] AS NULL,
    VISIBLE = 1;
    SCOPE([Date].[PerType].[LY]);
    SCOPE(DESCENDANTS([Date].[Fiscal].[All], [Date].[Fiscal].[Year], SELF_AND_AFTER));
    THIS = ([Measures].CurrentMember, [Date].[PerType].[WTD], ParallelPeriod([Date].[Fiscal].[Year], 1));
    END SCOPE;
    END SCOPE;
    --Month to date
    CREATE MEMBER CURRENTCUBE.[Date].[PerType].[MTD] AS NULL,
    VISIBLE = 1;
    SCOPE([Date].[PerType].[MTD]);
    SCOPE(DESCENDANTS([Date].[Fiscal].[All], [Date].[Fiscal].[Week], SELF_AND_AFTER));
    THIS = Aggregate(CrossJoin({[Date].[PerType].[WTD]}, MTD([Date].[Fiscal].CurrentMember)));
    END SCOPE;
    END SCOPE;
    --Year to date
    CREATE MEMBER CURRENTCUBE.[Date].[PerType].[YTD] AS NULL,
    VISIBLE = 1;
    SCOPE([Date].[PerType].[YTD]);
    SCOPE(DESCENDANTS([Date].[Fiscal].[All], [Date].[Fiscal].[Period], SELF_AND_AFTER));
    THIS = Aggregate(CrossJoin({[Date].[PerType].[WTD]}, YTD([Date].[Fiscal].CurrentMember)));
    END SCOPE;
    END SCOPE;
    The defalut member of FiscalWeek attribute hierarchy is set dynamically in the MDX script:
    ALTER CUBE CURRENTCUBE UPDATE DIMENSION [Date].[FiscalWeek], DEFAULT_MEMBER =
    Filter(
    [Date].[FiscalWeek].Members,
    [Date].[FiscalWeek].Properties( "FiscalWeekStartDate", TYPED) <= DateAdd("d", -2, CDate(CStr(Month(Now())) + "/" + CStr(Day(Now())) + "/" + CStr(Year(Now()))))
    AND
    [Date].[FiscalWeek].Properties( "FiscalWeekEndDate", TYPED) >= DateAdd("d", -2, CDate(CStr(Month(Now())) + "/" + CStr(Day(Now())) + "/" + CStr(Year(Now()))))
    )(0).PrevMember;
    If I run the following query:
    with member
    measures.x as [Date].[Fiscal].DefaultMember.Name
    measures.y as [Date].[FiscalWeek].DefaultMember.Name
    select
    measures.x,
    measures.y
    } on axis(0)
    from [GLWeekly]
    it gives me back correctly the default member set over the MDX script.
    I order the statements in the MDX Script so that the default period (week) is set at the beginning of the script (just after the calculate).
    I do not understand why creating the following calculated member I am obliged to specify [Date].[Fiscal].CurrentMember in the tuple to have correct results:
    MEMBER [Account].[CoA].[Standard Engagement Revenue (MTD)] AS ([Account].[CoA].[Standard Engagement Revenue], [Date].[PerType].[MTD], [Date].[Fiscal].CurrentMember)
    I would expect that:
    ([Account].[CoA].[Standard Engagement Revenue], [Date].[PerType].[MTD])
    is sufficient.
    If the default week is specified in the slicer using a member of the natural hierachy (=> [Date].[Fiscal].x) it works.
    Why can't SSAS use the default member if it is must defined in the MDX script?
    Can someone explains me this. Thanks a lot in advance.

    Hi Ina,
    have you thought about adding a dynamic statement inside the MDX script? You could define the default member like this:
    ... DEFAULT_MEMBER = iif( Day( Now() ) = 3, <expression for previous month>, <expression for current month> );
    This way you don't need to change it everytime by running a script.
    By the way, what do you mean it doesn't update the default member? When you execute this MDX what does it says?
    with member measures.x as [Dimension].[HierarchyName].DefaultMember.Name
    select { measures.x } on 0 from Cubename
    If this returns the correct name, then the problem is somewhere else. I believe it should return you the correct name. Look here, test this on Adventure Works, statement by statement and see what happens.
    ALTER
    CUBE [Adventure Works]
    UPDATE
    DIMENSION [Product].[Product Categories],
    DEFAULT_MEMBER = [Product].[Product Categories].[Category].&[1]
    with
    member measures.x
    as [Product].[Product Categories].DefaultMember.Name
    select measures.x on 0
    from [Adventure Works]
    ALTER
    CUBE [Adventure Works]
    UPDATE
    DIMENSION [Product].[Product Categories],
    DEFAULT_MEMBER = [Product].[Product Categories].[All Products]
    with
    member measures.x
    as [Product].[Product Categories].DefaultMember.Name
    select measures.x on 0
    from [Adventure Works]
    I think you can see which members are default (on related hierarchies) using
    MDX Studio. This should help you detect which attributes have not moved accordingly and hence cause problems in your report. The usual suspects are those attributes used in your last month reports. If that's too much for you, just copy paste the definition
    of the measure x and use .CurrentMember instead .DefaultMember. And so for all related hierarchies of your dimension. You can run it as one query, just put enough measures (x1, x2, ...), one for each hierarchy, ok?
    Here's a test for Day():
    with
    member measures.y
    as
    iif( Day(Now()) = 28, 'Yes', 'No' )
    select
    measures.y on 0
    from [Adventure Works]
    Today this returns Yes, tomorrow it will be No.
    Ups, I just checked one more thing. When you run the script, it sets the default member only for that session. If you execute the first two of the four statements that I've sent you, it will set the default member on Bikes and show you that.
    But, if you open another query windows and execute that select statement (only), you'll see All member instead. So, it has set it to Bikes only for the currect session. Consequence? You reports are not aware of it. So, better use dynamic statement in
    your MDX script.
    Regards,
    Tomislav Piasevoli
    Business Intelligence Specialist
    www.softpro.hr

  • The MDX function CURRENTMEMBER failed because the coordinate for the attribute contains a set

     
    How to handle this error: The MDX function CURRENTMEMBER failed because the coordinate for the attribute contains a set. when executing MDX query:
    SELECT (
    { [Measures].[Amount]}
    )ON COLUMNS,
    [OrganizationUnits].[Description].[Description].MEMBERS,
    [OrganizationUnits].[IsCURRENT].[IsCURRENT]
    ) ON ROWS
    FROM
    (SELECT [OrganizationUnits].[Description] ON 0
    FROM
    [CubeName]
    WHERE(
    {[OrganizationUnits].[Description].&[Unit1],[OrganizationUnits].[Description].&[Unit2]}
    Thanks!!

    Hi Arth81,
    Please try the query below.
    WITH MEMBER MEASURES.IsCURRENT AS [OrganizationUnits].[IsCURRENT].[IsCURRENT].CURRENTMEMBER.NAME
    SELECT
    { [Measures].[Amount],MEASURES.IsCURRENT} ON COLUMNS,
    {[OrganizationUnits].[Description].[Description].MEMBERS,
    } ON ROWS
    FROM
    (SELECT [OrganizationUnits].[Description].MEMBERS ON 0
    FROM
    [CubeName]
    WHERE(
    {[OrganizationUnits].[Description].&[Unit1],[OrganizationUnits].[Description].&[Unit2]}
    Regards,
    Charlie Liao
    TechNet Community Support

  • MDX + Generate function

    Hi all,
    I have query below which works and I understand the output. However, if I remove the Generate I also get the top 5 products per country, descending order, but the Order amounts or not the same and thus not correct. 
    My question, what does the generate actually do to make it a different output?
    WITH SET [5MostInternetOrderedProductsByCountry] AS
    GENERATE([Customer].[Customer Geography].[Country].Members, 
     CROSSJOIN([Customer].[Customer Geography].CurrentMember, 
    HEAD(
    ORDER([Product].[Product].[Product].Members, 
    [Measures].[Internet Order Count],BDESC),
    5)
    SELECT 
          {[Measures].[Internet Order Count]} ON COLUMNS,
          {[5MostInternetOrderedProductsByCountry]} ON ROWS 
    FROM
          [Adventure Works]
    Thanks in advance for helping!

    Hi,
    Generate( Set_Expression1 ,  Set_Expression2 [ , ALL ]  )
    Applies a set to each member of another set, and then joins the resulting sets by union.
    If a second set is specified, the Generate function returns a set generated by applying the tuples in the second set to each tuple in the first set, and then joining the resulting sets by union. If
    ALL is specified, the function retains duplicates in the resulting set.
    Generate (MDX)
    Regards,
    Charlie Liao
    TechNet Community Support

  • Automatically configure UDA question

    First,I set 'automatically configure user device affinity from usage data' in UDA settings to 'No',then client will send a state message (TopticID:1600) indicates that CCM client is waiting the UDA request to be approved and save it in wmi during
    the user affinity usage task.State message and logs look like this:
    >>>>>>Starting processing user affinity usage task<<<<<<
    Auto affinity threshold settings Days = '30', User minutes threshold = '2880', Auto approve affinity = '0'.
    Clean up agents user logon events...
    Retrieving user minutes map...
    Loading approved and pending user affinities...
    Checking if any pending affinity is approved...
    Checking usage minutes per user against current minutes threshold...
    User 'abc\def' has 3425 usage minutes
    Setting auto affinity for user 'abc\def'.
    Successfully sent user affinity state message for user 'abc\def'.
    Successfully created pending user affinity for user 'abc\def' into WMI.
    >>>>>>Finished processing user affinity usage task<<<<<<
    After that,I turn on 'automatically configure user device affinity from usage data' ,but client will only refresh the old state message (TopticID:1600) in wmi which indicates it has automatically set uda for the user and
    will not send the new state message to site server becasue it consider the same state message existing in wmi.
    >>>>>>Starting processing user affinity usage task<<<<<<
    Auto affinity threshold settings Days = '7', User minutes threshold = '1500', Auto approve affinity = '1'.
    Clean up agents user logon events...
    Retrieving user minutes map...
    Loading approved and pending user affinities...
    Checking if any pending affinity is approved...
    User 'abc\def' in pending affinity is not approved yet
    Checking usage minutes per user against current minutes threshold...
    User 'abc\def' has 3608 usage minutes
    Setting auto affinity for user 'abc\def'.
    Found same state message existing. (was sent before) Skip sending same state message for user 'abc\def'..
    >>>>>>Finished processing user affinity usage task<<<<<
    I can manually delete the TopicID 1600 message in wmi and restart the ccm client,after that the new uda state message will send into the site dabase and pending request in console will be disappeared.
    That is my question.Actually the state message content is different from the old one.Why ccm client consider they are the same messages and will not send it so that the uda information is not set for user in ccm database.(In console it
    always display as a pending request)

    Sorry for the delay.
    I tested the situation again and came into the same result.
    1. If the logged on user have already reached the threshold before you changed the Client Setting to Yes for Auto UDA, the State Message did not send out again. Because the agent thought this box is in pending state, no more state message needed.
    2. If the logged on user have not reached the threshold before you changed that setting, the Auto UDA State Message will send if the user reaches the threshold in the future.
    Seems this is by design. Anyway, I recorded this situation.
    Juke Chou
    TechNet Community Support

  • MDX to DAX Conversion - Data Mismatch

    Hi,
    I’m pulling data from a Tabular cube, for the given time period as filter. When I run an mdx query, it pulls around 9 million records in more than 6 hours. Since I need to run it frequently and quickly so I’ve converted the MDX to DAX (below). DAX
    is executing much faster (20 minutes) than the MDX but results between two approaches are not the same and I’m struggling hard to find why!
    All the dimensions used inside SUMMARIZE clause are having a relationship with Primary Dimension/TableName. High level observations:
    Number of Records are different between the result set of DAX & MDX.
    Sum of each measures(DAX) differ from the sum of their corresponding measures(MDX)
    DAX results have no rows where all the measures have zero values, whereas the MDX results has.
    DAX omits many of the rows where all the measures have zero values except one. It appears that due to the omission of these kind of records, we have the data mismatch but reason for
    omission is unknown.
    Any help will be appreciated!!
    MDX
    SELECT NON EMPTY {
    [Measures].[Calculated Measure 1],
    [Measures].[Calculated Measure 2],
    [Measures].[Calculated Measure 8]
                    } ON COLUMNS,
                    NON EMPTY
      [Dimension1].[DimAttribute1].children
    , [Dimension2].[DimAttribute1].children
    , [Dimension2].[DimAttribute2].children
    , [Dimension10].[DimAttribute1].children
                    ) } ON ROWS
                    FROM (SELECT ([Time].[Fiscal Month].&[May, 2014) ON COLUMNS
                    FROM [Cube Name]
                    WHERE (Filter Condition)
    Converted DAX
    EVALUATE(CALCULATETABLE(ADDCOLUMNS(SUMMARIZE(
    PrimaryDimension/PrimaryTableName
    ,Dimension1[Attribute1]
    ,Dimension2[Attribute1]
    ,Dimension2[Attribute2]
    ,Dimension10[Attribute1]                                           
    MeasureGroup1.[Calculated Measure 1],
    MeasureGroup2.[Calculated Measure 2],                                            
    MeasureGroup4.[Calculated Measure 8]
                                    ,Time[Fiscal Month] = "May, 2014"
                                    ,Filter Condition               
    Thanks,
    Amit

    Amit, the two queries are not semantically equivalent.
    SUMMARIZE returns rows that have at least one row in the table you pass as a first argument for the given combination of columns you pass in the following arguments (think to a SELECT DISTINCT for all the columns you include, with an INNER JOIN between all
    the tables included by the colulmns you specified in the following arguments). You can read more about this here:
    http://www.sqlbi.com/articles/from-sql-to-dax-projection/
    The MDX query returns any existing combination of the cartesian product of the columns you included, and depending on the measures you include, you might see data also for combinations of column values that don't exist in the original source.
    The reason why you have a slow MDX is probably because of the cost of non empty evaluation for certain measures. The solution is probably to optimize the DAX code you are using in Tabular.
    The equivalent DAX statement should be something like
    EVALUATE
    ADDCOLUMNS (
        FILTER (
            CROSSJOIN (
                VALUES ( table1[columnA] ),
                VALUES ( table2[columnB] )
            [Measure] <> 0
        "Measure", [Measure]
    But don't expect better performance comparing this to MDX. Only when you can make assumptions that allow you using SUMMARIZE you might see performance benefits, but if these assumptions are not correct, you can get different results (as you experienced).
    Marco Russo (Blog,
    Twitter,
    LinkedIn) - sqlbi.com:
    Articles, Videos,
    Tools, Consultancy,
    Training
    Format with DAX Formatter and design with
    DAX Patterns. Learn
    Power Pivot and SSAS Tabular.

  • Need to retrieve all the UDAs associated to a member and its respective children in Excel

    Dear Experts,
    I'm working on Essbase version 11.1.2.1.106 and Hyperion smart view 11.1.2.1. There is a custom dimension in the outline and UDAs are assigned to all the members of that custom dimension.
    Now the requirement is to retrieve all the UDAs of a particular member and its respective children in Excel. Please let me know if there is any option to fulfill the requirement.
    Let say there is a member A and it has 10 childrens(A1-A10). All these members have UDAs assigned to them. Now i would like to retrieve/adhoc analysis all these members as well as its associated UDA in Excel. How can we do that using smart view.
    All your inputs are appreciated.
    Thanks in Advance

    Sree,
    If one does as you suggest, the individual UDAs can be viewed in the member selector dialog box and then members (not the UDAs) can be selected based on that.
    That is not, I think, what the OP wants:
    >>Now the requirement is to retrieve all the UDAs of a particular member and its respective children in Excel.
    Your approach doesn't provide the above.
    People have thought about using MDX to get the UDAs (and maybe someone really good with MDX metadata queries might come up with this), but that doesn't seem to be the case:
    Retrieving all Uda using Mdx Query-what should be string_value_expression?
    The API or Applied OLAP's new and improved Outline Extractor would seem to be the way to go.  Or of course you could export out the outline using MaxL and then parse the XML.
    Regards,
    Cameron Lackpour

  • Setting member properties through Build rule.

    I have a hierarchy where the product structure needs to be updated.
    Now, I also need to add three different UDAs to each member.. and make some members Never share. (All in build rule)
    Please suggest me with any solutions.
    TIA,
    KRIS.

    To set the data storage you need to set the column field type to property in the rule file and then the value in the record to set to datastorage to "Never Share" will be N
    A list of properties are available at :- http://download.oracle.com/docs/cd/E17236_01/epm.1112/esb_dbag/dotrules.html#dotrules_2
    Also there is detailed information about building load rules
    You would set the column to UDA field type for UDAs
    An example parent/child build to set a member to "Never Share" and set UDAs would be
    Parent,Child,Datastorage,UDA1,UDA2
    Prod,ProdA,N,UDAName1,UDAName2
    Your load rule for a parent/child build would look something like
    PARENT0,Product Child0,Product Property0,Product UDA0,Product UDA0,Product
    Prod ProdA N UDAName1 UDAName2
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • UDA and Attribute rules

    hi,
    I am in the process of updating my essbase outline using load rules. I have succesfully loaded my first rule which maps the Hierarchy, however I am unable to load the Attribute and UDA properties into the outline.
    Does anyone have any suggestions or know the steps on how to do this?
    Thanks,

    This is already discussed in the forum. please go through the below threads.
    To build attribute dimensions
    Re: Create Attribute Dimension by rule file
    Re: dimension building
    For the isuues in setting udas.
    Re: Dim Build does not update all UDA values
    Re: Building multiple UDAs via a build rule

  • Deprecation

    Hi,
    when I run this applet with deprection I get the following warnings, I have also got an error with the mouseDragged, How do I solve these. I hope the code isn't too long for you to understand.
    macnero
    javac -deprecation precess2.java
    C:Java_Progs>javac -deprecation precess2.java
    precess2.java:28: precess2 should be declared abstract; it does not define mouseDragged(java.awt.event.MouseEvent) in precess2
    public class precess2 extends Applet implements Runnable, ActionListener, MouseListener, MouseMotionListener
           ^
    precess2.java:97: warning: size() in java.awt.Component has been deprecated
          d=size();                         //  method below.
            ^
    precess2.java:154: warning: suspend() in java.lang.Thread has been deprecated
             t.suspend();
              ^
    precess2.java:158: warning: resume() in java.lang.Thread has been deprecated
             t.resume();
              ^
    precess2.java:162: warning: stop() in java.lang.Thread has been deprecated
             t.stop();
              ^
    1 error
    4 warnings
    import java.applet.Applet;
    import java.awt.*;          
    import javax.swing.*;          
    import java.awt.event.*;     
    import java.awt.geom.*;
    public class precess2 extends Applet implements Runnable, ActionListener, MouseListener, MouseMotionListener
       Dimension offDimension,d; 
       Image offImage;           
       Graphics offGraphics;     
       int tipLength=16;         
       int tipWidth=10;          
       int time=0;               
       int Hfield=20;                  
       int mx=100;               
       int my=50;                
       int tip1x=100;            
       int tip1y=50;             
       int tip2x=100;          
       int tip2y=50;             
       int set=0;
       double freq=(2.0*3.1415/2000.); 
       double damp=0.0001;             
       double sinPhi=0;         
       double cosPhi=1;         
       Thread t;                  
       Button b1, b2, b3, b4, b5, b6, b7;
       int[] hArrowXpoints =                      
         {100, 100+tipWidth/2, 100-tipWidth/2};   
       int[] hArrowYpoints = {50-Hfield,          
         50-Hfield+tipLength,                     
         50-Hfield+tipLength};                    
       int[] mArrowXpoints =                      
         {100, 100+tipWidth/2, 100-tipWidth/2};   
       int[] mArrowYpoints = {50,                 
         50+tipLength,                             
         50+tipLength};                           
       public void init()                     
          setLayout(new BorderLayout(10,10)); 
          Panel p1 = new Panel();            
          p1.setLayout(new GridLayout(7,1));
          b1 = new Button("Increase H");     
          b2 = new Button("Decrease H");    
          b3 = new Button("More Damping");
          b4 = new Button("Less Damping");
          b5 = new Button("Pause");
          b6 = new Button("Resume");
          b7 = new Button("Finish");
          p1.add(b1);
          p1.add(b2);
          p1.add(b3);
          p1.add(b4);
          p1.add(b5);
          p1.add(b6);
          p1.add(b7);
          add("East", p1);
          t=new Thread(this);
          t.start();
         addMouseListener(this);
         addMouseMotionListener(this);
       public void paint(Graphics g)       
          d=size();                        
          update(g);                       
       public void mouseDragged(MouseEvent e, int mDx, int mDy)
          if(mDx<200)
          time=0;                          
          set=0;                           
          sinPhi=(mDx-100)/Math.sqrt       
            ((mDx-100)*(mDx-100)
            +(150-mDy)*(150-mDy));
          cosPhi=(150-mDy)/Math.sqrt
            ((mDx-100)*(mDx-100)
            +(150-mDy)*(150-mDy));        
          repaint();
          //return true;
       public void mouseReleased(MouseEvent e, int mDx, int mDy)
          set=1;                       
          //return true;                
       public void actionListener(ActionEvent e, Object o)
          if (o.equals("Increase H"))       
             freq = freq*1.1;
             Hfield = Hfield+2;
          else if (o.equals("Decrease H"))
             freq = freq*0.9;
             Hfield = Hfield-2;
          else if (o.equals("More Damping"))
             damp = damp*1.1;
          else if (o.equals("Less Damping"))
             damp = damp*0.9;
          else if (o.equals("Pause"))
             t.suspend();
          else if (o.equals("Resume"))
             t.resume();
          else if (o.equals("Finish"))
             t.stop();
          hArrowYpoints[0] = 50-Hfield;             
          hArrowYpoints[1] = 50-Hfield+tipLength;   
          hArrowYpoints[2] = 50-Hfield+tipLength;   
          //return true;
          public void run()    
             while(true)        
                int a = (int) (100*sinPhi*(Math.exp(time*damp*(-1)))*
                  (Math.cos(time*freq)));
                int b = (int) (50*sinPhi*(Math.exp(time*damp*(-1)))*
                  (Math.sin(time*freq)));
                mx= 100+a;
                my= (int) (150-100*Math.sqrt(1-(sinPhi)*(sinPhi)*
                  Math.exp((-2)*time*damp))-b);
                //  Now calculate the vertices for the triangular vector tip
                tip1x=mx+(int)(((100-mx)*tipLength+(tipWidth/2)*(my-150))/
                  Math.sqrt((my-150)*(my-150)+(mx-100)*(mx-100)));
                tip2x=mx+(int)(((100-mx)*tipLength-(tipWidth/2)*(my-150))/
                  Math.sqrt((my-150)*(my-150)+(mx-100)*(mx-100)));
                tip1y=my+(int)(((150-my)*tipLength-(tipWidth/2)*(mx-100))/
                  Math.sqrt((my-150)*(my-150)+(mx-100)*(mx-100)));
                tip2y=my+(int)(((150-my)*tipLength+(tipWidth/2)*(mx-100))/
                  Math.sqrt((my-150)*(my-150)+(mx-100)*(mx-100)));
                 mArrowXpoints[0] = mx;
                 mArrowXpoints[1] = tip1x;
                 mArrowXpoints[2] = tip2x;
                 mArrowYpoints[0] = my;
                 mArrowYpoints[1] = tip1y;
                 mArrowYpoints[2] = tip2y;
                 if (set!=0)        
                    repaint();      
                    time=time+1;    
        public void update(Graphics g)
           if((offGraphics ==null)              
            ||(d.width !=offDimension.width)     
            || (d.height != offDimension.height))
           offDimension=d;
           offImage=createImage(d.width, d.height);
           offGraphics=offImage.getGraphics();
           offGraphics.setColor(getBackground());
           offGraphics.fillRect(0,0, d.width, d.height);
           offGraphics.setColor(Color.blue);
           offGraphics.drawLine(100, 150, 100, (50-Hfield));
           offGraphics.fillPolygon(hArrowXpoints, hArrowYpoints, 3);
           offGraphics.setColor(Color.red);
           offGraphics.drawLine(100, 150, mx, my);
           offGraphics.fillPolygon(mArrowXpoints, mArrowYpoints, 3);
           if( mx > 90-tipWidth/2  && mx < 110+tipWidth/2
             && my  < (int) (150-100*Math.sqrt(1-(sinPhi)*(sinPhi)*
             Math.exp((-2)*time*damp))))
              offGraphics.setColor(Color.blue);
              offGraphics.drawLine(100, 150, 100, (50-Hfield));
              offGraphics.fillPolygon(hArrowXpoints, hArrowYpoints, 3);
            g.drawImage(offImage, 0, 0, this);
    }

    I believe that interrupt replaces suspend... though interrupt, from what I have read, behaves more like a suggestion.... Although I could be way way off base... Again, my personal choice is to have some method (stop() can't be used... kill() die() done() work!) that sets the "running" boolean to false. This breaks the while loop...
    So a
    while(true)
    becomes
    while(running)
    and
    die()
    {running=false;}
    re-starting is actually re-threading... ie, creating a new Thread variable (or re-assigning the old one) and starting it.
    if you had a "int count" that was 30 when 'stopped'.... rethreading
    (ie...
    if (t==null){t=new Thread(this); t.start();}
    SHOULD keep int at 30 when it starts, assuming that it is not 0'd out at the beginning..
    So...
    while(running)
    count++;
    Would start where it was topped the next time rethreaded, because the Object still has a variable count with the value of 30...
    ~Dave

  • Java ME and asp connectivity

    Hello everyone,
    I know this is a very repetitive question but i still havent found a satisfying solution anywhere.
    Here is the scenario:
    I am developing a MIDlet which recieves an Account number as the body of an SMS.
    I have a database in MS-Access which stores account numbers and corresponding account balances.
    I need to retrieve the balance from the database.
    HTTP connection allows the asp functionality on Java ME SDK 3.0 but not when the midlet is installed on my Samsung SGH-X700 phone.
    I want the connectivity between the phone and PC through USB cable.
    I mean the midlet works on emulators but does not access the files through USB cable
    How to access http://localhost/test1.asp (which is on PC) through the cable?
    OR can it be done through a CommConnection?Please help.

    thanks for the reply Prakash.
    So, i'm using websphere with JCO to connect Bw.
    Actually, i encountered the same return message in my java code and during the se37 transaction.
    In se37 transaction:
    I call the Bapi BAPI_MDDATASET_CREATE_OBJET
    I set manually an mdx command generated with MDXTEST
    on my BW query.
    this BAPI return a DATASETID
    the persistence of the object is ok.
    after that, if i use the bapi BAPI_MDDATASET_CHECK_SYNTAX
    or BAPI_MDDATASET_SELECT_DATA with this DATASETID...
    I have always the same error as return message.
    RS_EXCEPTION : CL_RSR_MDX_COMMAND========CP
    the problem is coming from the DATASETID?
    Thanks,
    best regards,
    Ben

  • Initiating batch scripts from Maxl Script Editor in Admin Console??

    Guys,
    Is it possible to initiate batch scripts from Maxl script editor in Admin Console.
    I dont want to automate the scripts as my data loading process can happen at any time.
    Thanks in advance
    A

    Hi A,
    I'm not sure what you're asking? Do you want to run a batch of Maxl scripts, or a batch file, or a single Maxl Script? Why do you choose to use the Admin console to do this? Could you run what you're trying to run in batch from the command line?
    Executing MaxL and MDX Scripts
    To execute a MaxL script or an MDX script:
    Open or create the script.
    From the server drop-down list on the toolbar, select the Analytic Server to execute the script against.
    The drop-down list contains only Analytic Servers that are displayed in your Enterprise View. For more information about connections, see Connecting to Analytic Servers in MaxL and MDX Script Editors.
    Specify how errors should be handled during execution. See Setting MaxL and MDX Execution Options.
    Specify how you want results to be displayed in the Results tab. See Viewing MaxL and MDX Results.
    If the script contains variables, specify how undefined variables are resolved during execution. See Resolving Undefined Variables.
    To execute the entire script, right-click and select Execute from the pop-up menu.
    To execute only part of the script, highlight the statement or statements that you want to execute, right-click, and select Execute from the pop-up menu.
    The script executes against the specified Analytic Server, and the results are displayed in the Results panel.Regards,
    Robb Salzmann

  • JAVA(JCO) and BW Connectivity

    Hi,
    I am using JCO to get data from R/3. At the same time I want to get data from BW server also. Is there any methods available for this activity.
    How make it possible, Please provide details.
    Thanks,
    Ask123

    thanks for the reply Prakash.
    So, i'm using websphere with JCO to connect Bw.
    Actually, i encountered the same return message in my java code and during the se37 transaction.
    In se37 transaction:
    I call the Bapi BAPI_MDDATASET_CREATE_OBJET
    I set manually an mdx command generated with MDXTEST
    on my BW query.
    this BAPI return a DATASETID
    the persistence of the object is ok.
    after that, if i use the bapi BAPI_MDDATASET_CHECK_SYNTAX
    or BAPI_MDDATASET_SELECT_DATA with this DATASETID...
    I have always the same error as return message.
    RS_EXCEPTION : CL_RSR_MDX_COMMAND========CP
    the problem is coming from the DATASETID?
    Thanks,
    best regards,
    Ben

  • Filter to show a range of TOP members of a dimension

    Hi there,
    I am trying to create a TOP Filter that will display the following Values:
    TOP 25, TOP 50 and TOP 100
    I have a Location Dimension who has a attribute called Rank. This Rank is based on a column of the Location table which has a fixed value per location that was assigned manually in the database.
    So when I select the TOP 25 member of the TOP Filter, I will be showing the top 25 locations based on Rank column.
    What I did was sorting the Locations in the dimension using the Rank attribute and then building dynamics sets using TOPCOUNT mdx expression. The problem is the performance is very bad. 
    Could anyone advice me on how would be the best way to achieve the above with a good performance?
    Thanks and best regards,
    Joss

    Hi Joss,
    your issue became interest for me and i have done some tests. i have created dimension table and filled by 5 000 000 elements having the different ranks, created dimension that contains three attributes: ID, Rank and Name. Then i defined calculation in cube
    script:
    CREATE MEMBER CURRENTCUBE.[Measures].[Rank_1]
    AS [Product].[Rank].member_value, VISIBLE = 1;
    CREATE DYNAMIC SET [Rank_25_1]
    AS TOPCOUNT([Product].[Product].[Product],25,[Measures].[Rank_1]);
    and run query 
    WITH MEMBER [NewMember] as NULL
    SELECT
    [Measures].[NewMember] on 0 ,[Rank_25_1] on 1
    FROM [Cube]
    The command duration is about 22 sec. Then created real Measure [Rank_2] based on dimension attribute and add new dynamic set:
    CREATE DYNAMIC SET [Rank_25_2]
    AS TOPCOUNT([Product].[Product].[Product],25,[Measures].[Rank_2]);
    the below query was running about 8 sec.
    WITH MEMBER [NewMember] as NULL
    SELECT
    [Measures].[NewMember] on 0 ,[Rank_25_2] on 1
    FROM [Cube]
    So, performance is not so bad. I suppose you used in query some complex calculated members or used a lot of dimensions in axises.
    Best regards.

  • Help with setting a MDX goal expression in SSAS

    Our data is updated monthly and the last date of available data can be anywhere from 45-75 days behind.  For example, data is current through 6/30/2014
    as of 8/25/2014.
    I have a Time dimension hierarchy named [Calendar] with [Year]>[Half Year]>[Quarter]>[Month]>[Date] 
    I have a measure, [Measures].[Fatalities] set as a calculated member.
    I have a KPI with [Measures].[Fatalities] set as the Value Expression. My issue is with setting up the goal expression.
    I am trying to set a goal expression that is a percent reduction for a 5-year baseline average (Year-7:Year-3). So for the current year (2014, with data through
    June 2014), the goal would be a 20% reduction of the average of the Jan-Jun 2007, Jan-Jun 2008,Jan-Jun 2009,Jan-Jun 2010,Jan-Jun 2011.
    I have set up the following MDX as the goal expression:
    .8*((
    ([Measures].[Fatalities],
    PARALLELPERIOD([Time].[Calendar].[Year],7,[Time].[Calendar].CurrentMember))
    +
    ([Measures].[Fatalities],
    PARALLELPERIOD([Time].[Calendar].[Year],6,[Time].[Calendar].CurrentMember))
    +
    ([Measures].[Fatalities],
    PARALLELPERIOD([Time].[Calendar].[Year],5,[Time].[Calendar].CurrentMember))
    +
    ([Measures].[Fatalities],
    PARALLELPERIOD([Time].[Calendar].[Year],4,[Time].[Calendar].CurrentMember))
    +
    ([Measures].[Fatalities],
    PARALLELPERIOD([Time].[Calendar].[Year],3,[Time].[Calendar].CurrentMember))
    )/5
    The problem is that the goal is taking the entire year average at the year level of the Calendar hierarchy.  For example, in the attached screenshot, the
    Fatalities Goal would be empty when the fatalities is empty, and more importantly, the goal at the Year level of the Calendar hierarchy would only be the sum of Jan-Jun goal.  The Fatalities Goal in this example should read 549.28 at the Calendar 2014
    Year level and the status would still be green.
    http://i.imgur.com/peHD9Wl.png

    you might find this app interesting: http://ivolume.en.softonic.com/mac.

Maybe you are looking for