Count measure

Hi,
I need to create a measure in a cube that count the number of fact rows where some conditions is meet in a column in the table.
My fact looks like this (simplified):
Company number
Invoiceno number
Source varchar2
What I need in my cube is a count of Invoiceno where my Source is equal to sales or credit memo.
I am using 11g R2 and I am very new to oracle - so a detailed step-by-step would be appreciated
Thanks in advanced
Kind Regards,
Søren
Edited by: sdjensen on 2010-05-31 06:49

Hi Soren,
you can use Expression operator for calculating of flag that your condition is true (this expression returns 1 or 0)
and then in Aggregator operator apply SUM function to this flag.
In SQL it look like
select ...,sum(CASE WHEN SOURCE=SALES_MEMO OR SOURCE=CREDIT_MEMO THEN 1 ELSE 0 END) YOUR_MEASURE
from fact_table group by ...
Regards,
Oleg

Similar Messages

  • Regular measures(measures with SUM function) are not working along Distinct count measures

    Hi All,
    I am creating a cube that got to have a distinct count measure and a sum measure. if i have created only sum measure then it is working fine. if i create both measures and process the cube only distinct count measure is populated. the sum measure is showing
    all blank values. i am using 2008 R2, and creating 2 different measure groups for both measures, after i include the distinct count measure the sum measure becoming null. can you please help me with this? i am breaking my head for last 2 days on this.. Thank
    You

    Ramesh, measures are affected by the context of the queries that contain them, for example and in some cases, you can get a different total count of something by two different queries, this is because the context of the first query is different than
    the second one ... keep this in mind.
    Now, I've noticed that you are "creating 2 different measure
    GROUPS for both measures", and i guess that you are trying to view those two measures _which are from different measure
    groups_ at the same time and in the same report.
    considering the info in the first point and as you are create the calculated measures in two different measure
    groups, I'm not sure but i guess that this is the problem, and i suggest you create those two calculated measures
    in the same measure group, then try to view them again and let's see.
    if the previous point didn't solve it, please post the expressions you are using to create the calculated measures, maybe this will help in finding the problem.  

  • Count Measure by Minimum values in Dimension only

    Hi, I am drawing a huge blank here -
    I have a Count measure on my fact table, and need to count the rows only if a code in the dimension table is the minimum code for the Fact
    For my fact, I need to count from the following dims:
    Dim A (count all from this dim - which would be a distinct?)
    Dim B (count only the minimum code from this dim)
    Any suggestions?
    Thanks

    Hi oroborus , you are basically trying to have two new measures in your Fact, based on some conditions.
    Ex: You have a measure Total_Orders in your Fact and based on some conditions you want two new measures say Total_US_Orders and Total_OnLine_Orders.
    Lets assume you have two dimensions Country_Dim and Store_Dim. which gives you location and Store of an order.
    In your business model, duplicate the Total_Orders measure and name it as Total_US_Orders. Check the Use existing logical columns as the source box and go into the Expression Builder.
    Here you define the formula for this new column. Which will be something like
    FILTER(Fact.Total_Orders USING Country.Country_Code='US').
    Similarly, create the Total_OnLine_Orders by duplicating the Total_Orders measure and write a formula something like
    FILTER(Fact.Total_ORDERS USING Store.Store_Type = 'Online')
    I hope this will give you a brief idea of how to create calculated columns in business layer.
    Good Luck
    Sai

  • Pci-6224 counter measurement

    We need to make simultaneous counter pulsewidth measurements with our PCI-6224 DAQmx card.  It has two counters and the function panel info/help indicates specifically that it can do simultaneous measurements by creating 2 different tasks (DAQmsCreatTask()) and then using two separate DAQmxStartTask() calls.  We then do 2 separate DAQmxReadCounterScalarF64() calls. 
      The problem is that DAQmxStartTask()doesn't initiate the measurement like the function panel documention indicates.  The measurement(s) aren't initiated until the DAQmxReadCounterScalarF64() is executed, which makes simultaneous measurements impossible (i.e. if the measurement isn't initiated until the Read, then the first Read will be executing while both simultaneous pulses are generated and the second read will be too late).  I've put breakpoints in and verified this repeatedly.
      How do I get the DAQmxStartTask() to initiate the counter measurement immediately?

    Hi nap3n,
    What Dustin said is true of buffered tasks, but it sounds like the original poster is using an on-demand counter task, which is where the device starts counting when you call DAQmx Read. I think your best bet might be to use buffered tasks by calling DAQmx Timing (Implicit) like in the Meas Pulse Width-Buffered-Cont example. It may also be helpful to synchronize their arm start triggers, though implicit timing will still cause them to drift apart depending on the input signals.
    Brad
    Brad Keryan
    NI R&D

  • Distinct Count Measure Total in Two Dimensions

    I have a report that pulls data Site and then drills down to User for Content Usage for Six Months. These are separate dimensions in the cube. I have a DistinctContent Measure that pulls for both Site and User appropriately when I use separate queries but it
    is at the lowest level which is User. A sum of DistinctContent at the Site level is not appropriate - it needs to be the DistinctContent for the Site, and then drill down to the DistinctContent for User.
    Aggregate cannot be used because there are filters on the report, and they have to be there for various reasons.
    I've tried Lookup but it only looks up for one field. Multilookup doesn't work either. 
    I've tried a drill down to a subreport so that the initial dataset would be for Site, and then the subreport is for User and uses a different dataset, but you cannot merge the cells so
    that the subreport fits nicely under the top level.  
    How do I get the DistinctCount for the top level, Site?  
    I'm currently working on creating a cube that will only count the distinct content by site and then combine the two cubes as a virtual cube as a workaround but I'm not sure of the full implications of a virtual cube.   I feel like I'm missing something
    because this seems to be something that everyone must need at some point right?  
    I'm beating my head against a wall.  Thanks so much to anyone who can help out.  I'm hitting the deadline, and everyone is stressing out because I've been working on this one issue for days and I'm the everything IT person, so other things are slipping.
    Here is
     (the abbreviated version of) the query:
    SELECT
    NON EMPTY
    {[Measures].[Distinct Content]} ON COLUMNS
    ,NON EMPTY
    Filter
    ([Site].[by Type].[Site].ALLMEMBERS
    ,[Measures].[Views] > 0)*
    Filter
    ([User].[by Type].[User].ALLMEMBERS,
    [Measures].[Views] > 0
    [Time].[Month Year].[Month Year]
    DIMENSION PROPERTIES
    MEMBER_CAPTION
    ,MEMBER_UNIQUE_NAME
    ON ROWS
    FROM
    SELECT
    {[Content].[by Domain Type Item].[Type].&[3]&[1]&[Art]} ON COLUMNS
    FROM [Cntnt]
    Here is a picture of the report currently.  Unique Articles is the measure I'm having issues with and you can see at the top level is the site name, and below that the user.
    Thanks so much to anyone who can help me out.  I really, really appreciate it. 
    Julia

    Hi Julia,
    Thank you for your question. 
    I am trying to involve someone more familiar with this topic for a further look at this issue. Sometime delay might be expected from the job transferring. Your patience is greatly appreciated. 
    Thank you for your understanding and support.
    Regards,
    Charlie Liao
    TechNet Community Support

  • How to create count() measure for certain set of records in BMM Layer

    Hello all.
    I have a logical table like this one (Table AAA)
    Table AAA
    <p>
    --------------------------+<p>
    |       *Key*            |    *Name* |   <p>
    --------------------------+<p>
    |    1-2EMHS9     | AAA      |<p>
    --------------------------+<p>
    | 1-2EMWMO      | BBB      |<p>
    --------------------------+<p>
    |         NULL       |     CCC   |<p>
    --------------------------+<p>
    I need to calculate count() of records where <b>Key is not NULL</b>. In this example, this field must return coun() = 2.
    I suppose, CASE operator may help me with that, but I do not know for sure how to do this.
    Thank you for help,
    Alex.

    Thank you.
    But I must concretise my issue.
    I need to calculate number of records (e.g. order_id) that sutisfy appropriate condition (one of columns (e.g. loy_member_id) is set to null).
    I created logical column, that returns order_id if condition (loy_member_id is null) is met.
    Look at my logical column:
    Q Orders (LPM) - must return number of orders where loyalty_member_id is null.
    It has an expression:
    CASE  WHEN  NOT "Foxtrot (my) replica"."Sales Orders".LOY_MEMBER_ID IS NULL  THEN "Foxtrot (my) replica"."Sales Orders".ORDER_ID ELSE  NULL  END
    So, this returns order_id I need.
    But the question is how to count number of <b>order_id</b>'s returned by this column on BMM Layer.
    When I define my column with next expression:
    *<u>COUNT</u>(CASE WHEN NOT "Foxtrot (my) replica"."Sales Orders".LOY_MEMBER_ID IS NULL THEN "Foxtrot (my) replica"."Sales Orders".ORDER_ID ELSE NULL END)*
    I receive error:
    +[38083] The Attribute 'Q Orders LPM' defines a measure using an obsolete method.+
    Thank you,
    Alex.
    Edited by: Alex B on 3/3/2009 19:59

  • Distinct Count Measure on Dimension table via Bridge table.

    Hi Team,
    I have Dim_Devices Table, which is linked to other dimension like Dim_User  and Dim_City.
    All these table has many to many relationship defined in bridge table i.e. B_Devices_User_City using referential keys.
    I want to derive measure such as
    Select Count(Dim_Devices[Device_Id])
    where Dim_Devices.Validity_End_Date is null
    Note : Device_Id and Validity_End_Date are present in Same Dim_Devices  Dimension Table.
    Could you please help me to define cube structure and how to create such measure out of dim_table.

    Hi Charlie,
    Now, I have define DistinctCount Agreegation on Dim_Devices table which will use reference Relationship on B_Devices_User_City. My Count is correct.
     But, I came across one more issue, i.e. From Processed and deployed cube, I am trying to create off-line Cube/or Global Cube (I have given syntax below) which is for limited set of dimensions and measures, I found that It shows me error due
    to such relationship.
    Does it mean that, For Global Cube, Can't we use DistinctCount/Count agreegation?
    CREATE
    GLOBAL CUBE [Device OLAP_Cube_1_3]
    Storage
    'C:\Exportcube.cub'
    FROM [Device DATA CUBE]
      -- Measures
      -- Cube

  • Is there a better approach to show the distinct count measures?

    Experts,
    I have a requirement in which I want to diplay 20+ calculated columns. The coulmns are something like this..
    No of clients with income < 10000 (to check against sales measure in fact table)
    No of Clients with sales > 500000 (to check against sales measure in fact table)
    No of clients whose join date > 1st jan current year ( to check against cust_start_dt of client Dim)
    No of clients with size "Medium" (to check agains a column client_size of Client Dim)
    No of clients with sell product units > 500 (Need to check units in PROD Dim)
    and so on..
    Well, I can write a case statement using expression builder for each column in the criteria, but the report performance is very bad. My client dimension is a huge partitioned table. As I keep on adding columns, the report takes more time to fetch data and at some point it never comes back.
    We tried to push to calculations to database, but since users can provide any selection criteria from dashboard prompt, it doesn't seem to work.
    If anyone had done any similar request in the past, please direct.

    Jared,
    Thank you for responding to my posted message. Rendezvous is a new concept to me, maybe
    it's the solution to my problem. I have been trying to read the on line manual and
    example VIs from National Instruments website. I still have a hard time to understand
    the concept.
    One of the example I saw is using rendezvous to run some sub VIs. But in my case, I have
    only one VI that is a while loop. Inside the while loop, there are a few tasks running
    simultaneously. I don't know whether it will serve my purpose.
    Guangde Wang
    Jared O'Mara wrote:
    > Guangde,
    >
    > Referring to your 2nd method, use rendezvous (under advanced>>synchronize
    > on function palette) to synchronize two processes. There are good examples
    > that come with labview. basically, you cre
    ate a rendezvous, giving it a
    > size. Using the wait on rendezvous vi, a function will not continue until
    > all rendezvous have reached that point. Using this method, you can synchronize
    > your 2 while loops.
    >
    > Jared
    >
    > Guangde Wang wrote:
    > >I tried two ways to control the tempo of my program.>>One is to use the
    > While Loop's counter and a wait. The drawback of this>method is the cycle
    > length is dependent on the measuring load. So if the>program runs for days,
    > it will be significent off the real time.>>The other way is to use the difference
    > of the Tick Count. It provides>accurate timing but the problem is the sychronization
    > of the clock cycle>and the While Loop cycle. I can try to put a little bit
    > wait but still>can not sychronize them very well. So after a while, there
    > will be two>measures get together.>>I don't know whether there are some better
    > ways to control the program>or whether we have some ways to improve either
    > or both of the above
    two>methods to make them work better. Please let me
    > know if you have any>suggestion.>>Thank you in advance,>>Guangde Wang>

  • Can counter measure pulse width difference between two signals

    I am interested in determining the high pulse width time that two signals have when they are in various phases between eachother.

    Why don't you try one of the pulse width examples. I don't know what ADE you are using, but you can search for examples (http://www.ni.com/devzone/dev_exchange/ex_search.htm) with the key words "+pulse +width" and find several examples in different languages. This will measure the pulse width of one signal, but you can program most of the counters to do multiple tasks at the same time. Just copy the code twice and change the counter number to program counter 2 as well. If you want the ORed pulse width time, I would recommend adding a OR gate to your circuit and then feeding that into a counter.
    I hope this helps.
    Joshua

  • 6020E Counter measurement slow

    Slow performance using the 6020E counters to measure pulsewidth.
    Using traditional DAQ (device not supported by DAQmx)
    Using hardware triggered measurement.
    After configuration, doing the following:
    - program
    - loop until no longer armed
    - read count and check for overflow
    This cycle takes 100ms to perform on a signal that pulses every 10ms (pulse between 1ms and 8ms)
    As I understand, after programming, the counter arms itself on a falling edge (hardware trigger) and measures the next pulse passing by. So this would mean worst case 20ms + communication overhead. Either this hardware triggering isn't working or the overhead is 80ms?
    Any help appreciated A LOT!
    Peter

    Thanks JV,
    Unfortunately, we want to read the pulswidth of the first pulse to come (hardware triggered), then do some things with it, do some other stuff in parallel and then read some more. So buffered reading isn't going to help much.
    We started from the 'Measure Pulse (DAQ-STC).vi' sample, changing it to do triggered measurements and tweaking timeout and errorhandling to our needs.
    It does seem that the 6020E has been a bad choice for the our task at hand (many single reads), as we've had performance issues in analog readings as well. Probably have to dump it all and go for some PCI solution.
    Peter

  • How to count/measure FRAMES?

    I have to incorporate Transitions that last 10-15 frames.
    how to do this?
    when you set the duation of a transition, is that the Frames or Secs/Time?
    Thanks

    It's in seconds.

  • Report using Tabular Model and Measures based on Distinct Counts

    Hello,
    I am creating a report that should present something like this:
    YEAR-1 | MONTH-1 | MONTH-2 | MONTH-3... | YEAR | MONTH-1 | MONTH-2 | MONTH-3...
    My problem is that when designing the dataset to support this layout I drag the Year, Month and Distinct count Measure, but on the report when I want the value for the YEAR level I don't have it and I cannot sum the months value...
    What is the best aproach to solve this? Do I really have to go to advanced mode and customize my MDX or DAX? Can't basic users do something like this that seems so trivial and needed?
    Thank you
    Luis Simões

    Hi Luis,
    According to your description, you create a Reporting Services report using Analysis Service Tabular Model as the datasource, now what you want is sum the months value on year level, right?
    In your scenario, you can add the Month field to column group, add a parent group using Year Field and then add a Total on Month group. In this case, Reporting Services will sum the months value on Year level. I have tested it on my local environment, the
    screenshot below is for you reference.
    Reference:Lesson 6: Adding Grouping and Totals (Reporting Services)
    If this is not what you want, please describe your dataset structure, so that we can make further analysis.
    Regards,
    Charlie Liao
    TechNet Community Support

  • Distinct count inside a measure group with other measures

    Hello,
    I have 1 distinct count inside a measure group with other measures, sum, count etc. I know this is not recommended due to poor processing performance and query response time.
    Processing performance I can live with if it means not having another measure group, which increases processing time anyway.
    I have used the recommended approach before and it generated many questions about what this second measure group is for (visible via excel), even though I made the distinct count appear in the main measure group via a calculated measure.
    (it would be nice if you could hide measure groups)
    However my question is: is query response time only effected when the distinct count is used in the query? Or is query response time effected regardless if the distinct count is used or not??
    Below is an extract from the 2005 distinct count optimizer white paper. It’s not completely clear but I assume if effects queries regardless if distinct count is used or not?
    "By adding other measures to the measure group holding a distinct count measure, all of the other measures will be at the same granularity as the distinct count measure, resulting in inefficient data structures and suboptimal
    queries."

    You might also be interested in reading this blog post, which deals with a similar scenario, to get a feeling for some of the things that might be going on behind the scenes:
    http://cwebbbi.wordpress.com/2012/11/27/storage-engine-caching-measures-and-measure-groups/
    Chris
    Check out my MS BI blog I also do
    SSAS, PowerPivot, MDX and DAX consultancy
    and run public SQL Server and BI training courses in the UK

  • Measuring speed with incrementa​l single counter

    Hi,
    I need to measure the rotational speed and acceleration of a wheel that has 3 hall sensors on it. I will use only 1 of them en it gives 24 pulses 0-5V for a 360° rotation. How can I measure the speed with only a pulse train. I dont have the Quadric encoder...
    Now I'd like to measure the rotational speed using a counter of some sort, but the software I tried writing for it isnt working.
    Thank you for your help

    Hey Nitch,
    Concerning the measurements errors:
    As you get error when speeding up, it looks like the pulses coming from the hall sensors are to short to get measured by the counter.
    Following the USB-6008 specifications, the pulse needs to have a minimum lenght of 100ns (both in high and low state).
    As a counter is using edges to count the pulses (for USB-6008 only the falling edge) the edges need to comply with the TTL specifications which means that the rise and fall time of the pulse needs to be within the 50ns range. 
    So please have a look at the pulse lenght at higher speeds (are they at least 100ns?) and make sure the pulse comply with the TTL specifications.
     If not you will have to add some additional electronics to reshape the pulses.
    Looking at your program.
    It's not nescesarry to have two loops.  It's very well possible to have two DAQ tasks within the same look.
    Have a look at the Examples which come with LabVIEW --> Exampled Finder --> Hardware Input/Output --> DAQmx --> Synchronization --> Multi-Function.
    There are some examples which so the combination of analog and digital input.
    Anyhow you will have to remove the right while loop as the DAQ Express VI which apparently gives you the "spanning, stroom, gashendel" values will only start once you have done the counter measurements.  I assume that you would like to have the "spanning", "stroom", "gashendel" and"speed" synchronized measured.
    Then you have the choice to log to file during acquisition or after the acquisition.
    If you would like to log on the fly don't use the express VI's, but use the lower lever "File I/O" functions. These are faster (less processor time usage).
    As you VI is written now, the left while loop will only output the lastest counter value measured to the next loop when you click the stop button for example.
    You have to "Enable Indexing" of the m/s output tunnel.  Right click on the tunnel and you will be able to select "Enable Indexing".
    This way the application will automatically create an array and each loop iteration the measured value will be added.  One the measurements have been done you can do analysis and save the data using the full array instead of point by point.
    Again, also bring your "spanning, stroom and gashendel" inputs to the left loop.
    In your right loop you also have a loop counter.
    You can simply use the loop iteraction counter (the square box in the left bottom corner with the i).  This is also counting from 0 and incrementing by 1 each loop iteration.
    Again, you can do this in the left loop and forget the second loop completely.
    Hopes this will bring you a step further.
    Don't hesitate to post the VI itself.  This is always easier to look at than an image.
    This way we can also make some modications and post it back.
    Best regards,
    Joeri
    National Instruments
    Applications Engineering
    http://www.ni.com/ask
    Make our forums great:
    If you like the answer, don't forget to "Kudos!".
    "Accept the Solution" if your question is answered!

  • Can source and gate used to measure 2 signals using one counter?

    I have one PCI 6602 card to measure measure the frequency. PCI 6602 has 10 channels, in which channel 5 and 10 doesn't have 'source' terminal.
    We have to measure frequency from 16 signals using one PCI 6602.
    From channel 1 to 4 and 6 to 9, we have 8 'Gate' and 8 'Source' terminals.
    We have connected 16 signals to these 16 terminals.
    At any given point of the time we want to measure either 'Gate' signals(8) or  'Source' signals(8).
    Can any provide any guidance to make a program in labview to measure frequency (period) as per above given points?
    Regards
    Vijay

    Hello Vijay,
    It takes one counter for each digital frequency you want to measure and the PCI-6602 has 8 counters total.  This means that the maximum number of digital frequencies you can measure is 8.  If you want to measure 16 frequencies you'll need 16 counters.
    Single counter frequency measurements are made by comparing the board's time base (80 MHz) to an external frequency.  The board counts the number of time base periods that occur during one period of your incoming frequency.  When you configure the board to take a single counter frequency measurement the card routes the time base to the source of the counter and then you connect the frequency you want to measure to the gate of the counter.
    Here are a couple of articles that explain how these measurements are taken and calculated.  (The second article is on period measurements so for frequency measurements you measure period and take the inverse):
    Making Accurate Frequency Measurements
    Period Measurements with a Counter
    There are example programs available in the LabVIEW example finder.  You can locate these by going to Help>> Find Examples... The examples you want is:  Hardware Input and Output>> DAQmx>> Counter Measurements>> Digital Frequency>> Measure Digital Frequency- Low Freq 1 Ctr.vi.
    I hope this explains how counters work and why you need one counter per measurement.
    Cheers,
    Brooks

Maybe you are looking for