Time-series / temporal database - design advice for DWH/OLAP???

I am in front of task to design some DWH as effectively as it can be - for time series data analysis - are there some special design advices or best practices available? Or can the ordinary DWH/OLAP design concepts be used? I ask this - because I have seen the term 'time series database' in academia literature (but without further references) and also - I have heard the term 'temporal database' (as far as I have heard - it is not just a matter for logging of data changes etc.)
So - it would be very nice if some can give me some hints about this type design problems?

Hi Frank,
Thanks for that - after 8 years of working with Oracle Forms and afterwards the same again with ADF, I still find it hard sometimes when using ADF to understand the best approach to a particular problem - there is so many different ways of doing things/where to put the code/how to call it etc... ! Things seemed so much simplier back in the Forms days !
Chandra - thanks for the information but this doesn't suit my requirements - I originally went down that path thinking/expecting it to be the holy grail but ran into all sorts of problems as it means that the dates are always being converted into users timezone regardless of whether or not they are creating the transaction or viewing an earlier one. I need the correct "date" to be stored in the database when a user creates/updates a record (for example in California) and this needs to be preserved for other users in different timezones. For example, when a management user in London views that record, the date has got to remain the date that the user entered, and not what the date was in London at the time (eg user entered 14th Feb (23:00) - when London user views it, it must still say 14th Feb even though it was the 15th in London at the time). Global settings like you are using in the adf-config file made this difficult. This is why I went back to stripping all timezone settings back out of the ADF application and relied on database session timezones instead - and when displaying a default date to the user, use the timestamp from the database to ensure the users "date" is displayed.
Cheers,
Brent

Similar Messages

  • Time series functions are not working for fragmented logical table sources?

    If i remove that fragmented logical table sources, then its working fine.
    if any body know the reason, please let me know.
    thanks and regards,
    krishna

    Hi,
    is because the time series function are not supported for the framentation content, see the content of the oracle support:
    The error occurs due to the fact the fragmented data sources are used on some Time series measures. Time series measures (i.e. AGO) are not supported on fragmented data sources.
    Confirmation is documented in the following guide - Creating and Administering the Business Model and Mapping Layer in an Oracle BI Repository > Process of Creating and Administering Dimensions
    Ago or ToDate functionality is not supported on fragmented logical table sources. For more information, refer to “About Time Series Conversion Functions” on page 197.
    Regards,
    Gianluca

  • Database design (ERD )for Inventory Management System

    Dear All,
    I am going to develop a simple Inventory Management System software using C# .NET for my learning. After searching different forums, many people have suggested to first create a database design for the software. I want a database design, in short, an ERD
    diagram for simple Inventory Management System which shows proper entities(tables), attributes and relationship between entities.
    It would be highly helpful for me as I am newbie to C# and databases.
    Thanks,
    momersaleem

    Dear Rebecca,
    Thanks for you suggestions.
    As I am going to develop IMS for learning purposes so I think I wouldn't need to go in detail regarding Customer name and addresses. However, I am still thinking of adding country attribute in customers' table which I think will be helpful to sort out customers.
    What's the difference between a purchase and an order?  They're usually the same thing, which doesn't mean you're
    wrong, but what are you picturing here? Purchase entity will be used to keep record of purchases you made and an order entity will be used to keep record of orders that cutomers placed.
    Pricing:
    Any order system needs to manage two very distinct bits of data that are easy to confuse. The price in the Product entity is the current
    price. The price in the Order entity is the selling
    price. Not at all the same thing--current price is almost certainly going to change over time. Selling price won't.
    Does it mean that I'll change the price attribute for product to current_price and add selling_price to order table which will help to keep record of price at the time of order?
    Why did you include a quantity field in the Products table? Is it meant to represent stock on hand?
    Yes you are right. It represents stock in hand.
    Could you please recheck the entities relationships as I am not confirmed whether these are correct or not?
    Thanks,
    momersaleem

  • Design advice for custom painting

    Hi,
    Can someone give me some high-level design advice on designing a JPanel subclass for custom painting? My panel class is becoming very complex, with lots of drawing and scaling methods, so I'm wondering if I could abstract away some of these graphical elements by creating new classes to make the design more object-oriented. However, I'm finding that there are also disadvantages in representing some of my graphic components as classes. Specifically,
    1. It will lead to a much higher level of class coupling. My panel will depend on all these new classes to work correctly. In fact the situation is even worse because my panel is an inner class and, to do some of the scaling, needs to use methods from an object stored in the parent class. I would therefore have to also pass this object reference as an argument to many of these new classes.
    2. It will lead to a lot of awkward passing of data between classes. For example, I need to use g2.drawImage(img, x, y, w, h, this), so I will have to pass not only the graphics context but also the panel reference itself.
    Is it common for panel subclasses that do custom painting to be complex?
    thanks,
    Eric

    I wrote the map view for a commercial GIS system. Drawing and scaling on a JPanel is challenging, but it need not be complex.
    1. To eliminate class coupling, you need to create a couple of interfaces: Renderable (what you want drawn) and Renderer (the thing doing the low-level drawing). Renderer will have before and after setup and reset methods (to do things like scaling and rotation), and methods that the renderables can use to draw graphics. The Renderable interface can be as simple as a single method: draw(Renderer).
    Every type of graphic that you draw on the screen would be a different class that implements Renderable, and which knows how to draw itself using whatever lower-level drawing commands you put in the Renderer. If you construct each Renderable in terms of java.awt.Shape, then Renderable.draw() could call a method Renderer.draw(java.awt.Shape, java.awt.Color).
    2. The Panel becomes fairly simple. It has a Renderer and a collection of Renderable objects. Its paint() method calls the Renderer setup method, calls Renderable.draw(Renderer) on each object, and calls the Renderer reset method. Each Renderable in turn calls Renderable.draw(java.awt.Shape, java.awt.Color) one or more times.
    Renderer should get a Graphics2D from the Panel when the setup method is called. That's when the Renderer does all of the scaling, positioning, and rotation on the Graphics2D. The Renderable implementations shouldn't even need to know about it.
    I don't think custom painting code is necessarily complex, merely challenging to write. If you're only drawing a few lines and circles, you probably don't have to be too concerned about design elegance and code maintainability. The map view I designed for our GIS system, on the other hand, has to handle all kinds of map geometry, icons, text, and aerial photos.

  • Time Series Graph Show Inappropriate Data for Continuous Analysis

    Hi All,
    I have marked Month as the Chronological Key in my BMM Layer but still I am unable to view the data correctly in my Time Series graph because it shows Inappropriate Data for Continuous Analysis at the time of creating the Graph. Can anybody help me out with the same.
    Thanks

    What data type is your key? The chronological key is required for the time series formulas (ago etc.).
    The time series chart requires a date or datetime data type to work - perhaps a new column with the first of the month/period would help? Regards,
    Robret

  • Time Series Question - How to avg for Period children but not parent

    I have a calculated account I'm trying to have average at the Period Child level but have the Period Parent level do a straight calc on the totals. My cube is set up like this:
    Period
    - Jan
    -- JanWeek1
    -- JanWeek2
    -- JanWeek3
    -- JanWeek4
    -- JanWeek5
    Account
    - BIlled Hours
    - Revenue
    - Avg Houly Rate = "Revenue" / "Billed Hours" (I have time series set to average)
    My issue is that at the Week level things are averaging correctly, But at the Month level it is taking the average of the 5 weeks. How can I get it to just look at the total Revenue for the month divided by the total Billed Hours (while still having the weeks do an average?)
    Thanks in advance for any guidance.

    You probably don't need to use Time Balance Average at all for this calculation. I'd suggest setting the member to Time Balance None, then tag it as 'Dynamic Calc', and finally tag it as 'Two-Pass', to ensure that the Revenue / Hours calculation is done after the period roll-up.
    I think that would give you the result you want.

  • Design advice for setting users default time

    I have an application that in a number of different places requires that records when being updated or created are shown to default to the user's current date. Depending on the location of the user, this could be a different day than where the server is.
    All of the relevant fields in the database tables are using a datatype of "TIMESTAMP WITH TIMEZONE". When a users account is initially created, the timezone that the user is in is saved. When the user logs on, an "alter session set time_zone" command runs on the database to change the time zone of the current session.
    When a user updates or creates a record and one of the field(s) requires to display the current date of the user, I call a ViewObject which runs a query to "select current_timestamp from dual" to return the current date from the database and populate the field with this.
    I've realised that I'm creating a considerable overhead as this view object may be queried dozens of times during a users session and was thinking of running it once when the user logs on and storing the "USER_DATE" as a session variable - then I can simply refer to this each time, instead of many round-trips off to the database. Obviously there is a risk if the user logs on just before midnight and stays on until after that the date will be incorrect but this is extremely unlikely as the application is only used during normal business hours up to 9pm as an exception
    Am I heading down the right track here or doing something daft (and missing something far more simple that I should be doing !)
    Cheers,
    Brent

    Hi Frank,
    Thanks for that - after 8 years of working with Oracle Forms and afterwards the same again with ADF, I still find it hard sometimes when using ADF to understand the best approach to a particular problem - there is so many different ways of doing things/where to put the code/how to call it etc... ! Things seemed so much simplier back in the Forms days !
    Chandra - thanks for the information but this doesn't suit my requirements - I originally went down that path thinking/expecting it to be the holy grail but ran into all sorts of problems as it means that the dates are always being converted into users timezone regardless of whether or not they are creating the transaction or viewing an earlier one. I need the correct "date" to be stored in the database when a user creates/updates a record (for example in California) and this needs to be preserved for other users in different timezones. For example, when a management user in London views that record, the date has got to remain the date that the user entered, and not what the date was in London at the time (eg user entered 14th Feb (23:00) - when London user views it, it must still say 14th Feb even though it was the 15th in London at the time). Global settings like you are using in the adf-config file made this difficult. This is why I went back to stripping all timezone settings back out of the ADF application and relied on database session timezones instead - and when displaying a default date to the user, use the timestamp from the database to ensure the users "date" is displayed.
    Cheers,
    Brent

  • Arch workflow design advice for a designer?

    Sorry for the ambiguous title, I couldn't figure out what to call this post.
    I'm new to Arch, though not Linux, and I must say, this is an amazing distro (I'm on the 64bit version). Dead simple, super fast, and nearly as flexible as a Gentoo system (that can use binaries!). Pacman is rockin'.
    I'm a designer by trade: Web, video, and image. And I STILL boot into Windows for important tasks like Flash work, video work, and ftp work. I would obviously like to reduce that dependency, though there is little hope in the video department, right now.
    But for web, I see no reason I couldn't do it all in linux. But I'm not sure how to go about it. Here is the workflow I need, and I was wondering if you could advise how I might set up such a system (I have just a base system with Gnome installed right now):
    * WYSIWYG html and CSS editting (NVU/Kompose is fine for html, but NOT for CSS) for the design phase
    * A way to output image slices with html (does GIMP do this?)
    * Accurate web fonts
    * Reliable ftp, preferably one with drag n' drop functionality (I use filezilla on Windows, but I think the linux version lacks the drag n' drop)
    It's not a real complicated workflow, I just need to save time wherever possible because I need to work very fast. In windows, it's like having a ball and chain strapped to your leg, but it does work. With linux, I will very much appreciate access to terminal and file management advantages.
    I'm not stuck on Gnome, I just like the simplicity. I'm mainly interested in speed and efficiency (NOTE efficiency... I like time savers and fluxbox always seems to add clicks to my tasks). Let me know what you think! I may be able to move my flash work over with a little help from VirtualBox too, but I think I'm stuck when it comes to video . Thanks for any advice you might have!

    No offense, but using WYSIWYG to design web pages doesn't sound very professional imo. They just don't offer the control that one would want with the code. I have tried a few (Frontpage, Dreamweaver, NVU, Bluefish, ...) and they all suck. They just don't do what you want it to. You drag something or add some formatting and it just messes up the code. It's better to just use a text editor and view the results in browser. Maybe that's slow or inefficient for you, but I find that's the best way to do it.
    As for image slicing, I find that annoying as well. In Photoshop I never really liked the way it worked. I sliced a few images and then trashed most of the others. I tend to go for simple designs and focus on making it mostly CSS, so when I slice images it's usually a 1px wide/high gradient which would get repeated. I don't need image slicing for that. As for graphic intensive sites... well... really, you should review that. People still have slow connections and having a lot of graphics is just bad, even if your client wants it. You might as well go with flash, and waste some more bandwidth
    If you really want to do it though, I think Inkscape is quite a nice tool. I do all my designing in it, and though I don't use slicing, you can do it quite easily (though it's a bit hackish) by adding a layer and creating transparent rectangles around the stuff you want, then just select the rectangle and export it. I'm not sure if there's a more automatic way - there are plenty of tutorials.
    The MS-fonts should be fine, I just want to know that I am looking at an accurate representation of what I my windows customers will see.
    Fonts won't help you much there. You know most people use IE, so you need to view the website in IE regardless, and that means you need Windows (I think wine uses some weird IE version which uses gecko). Maybe there's some good Linux alternative for viewing stuff in IE, but I just view it on Windows. Also the font shouldn't change the general layout of the site... I don't see how that would be a problem unless it's some weird font that not everyone has, in which case you'd use @font-face anyway...

  • Database design problem for multiple language application

    Hi All,
    We are working on a travelling portal and for a traveling portal its content and details are the heart.we are planning to have it in multiple locale so this means we need to handle the dynamic data for each locale.
    currently we have following tables
    Destination
    Transport
    Places of Interests
    user comments etc.
    each table contains a lot of fields like
    Name
    ShortDescription
    LongDescription
    and many other fields which can contains a lot of data and we need to handle data in locale specific way.
    i am not sure how best we can design an application to handle this case,one thing came to my mind is like putting extra column for each locale in each table but that means for a new locale things needs to be changed from database to code level and that is not good at all.
    Since each table contains a lot of columns which can contain data eligible for internationalization so my question is what might be the best way to handle this case
    After doing some analysis and some goggling one approach that came to my mind is as below..
    i am planning to create a translation table for each table,like for destination i have the following design
    table languages
    -- uuid (varchar)
    -- language_id(varchar)
    -- name (varchar)
    table Destination
    --uuid (varchar)
    other fields which are not part of internationalization.
    table Destination_translation
    -- id (int)
    -- destination_id (int)
    -- language_id (int)
    -- name (text)
    -- description(text)
    Any valuable suggestion for above mentioned approach are most welcome...

    This approach sounds reasonable - it is the same approach used by Oracle Applications (Oracle ERP software). It de-normalizes information into two tables for every key object - one contains information that is not language sensitive and the other contains information that is language sensitive. The two tables are joined by a common internal id. Views are then created for each language that join these tables based on the common id and the language id column in the second table.
    HTH
    Srini

  • Java EE design advice for a re-designed DB app

    I'm currently tasked with rewriting a legacy DB app in Java. The original was written in Delphi. It worked great for a number of years, but the powers that be have recently decided to redesign and rewrite it in Java. Basically I just have the same set of business requirements as the original did.
    Overall, the app is a desktop GUI application that helps track contents of a natural history museum collection. The collection contains a bunch of specimens (dead animals) collected all over the globe at various times over the last 200 years. Multiple users (1 - 10 uesrs) will have to have access to the data at the same time. I also have to provide a nice Swing GUI for it.
    Here's my question: Is this the type of app that lends itself to a Java EE design? I'm imagining using a Java EE app server that connects to the DB. The app server would provide DB access, producing entity beans, as well as managing a number of session beans (EJBs) that implement the business logic (security, user management/session management). I would also have a Swing GUI that would connect to the beans remotely. This sounds like it would help me keep a good disconnect between the UI layer (Swing), the business logic (EJBs), and the data layer (entity beans accessed using the Java Persistance API). Does this sound reasonable? I'm a veteran Swing developer, but not a seasoned Java EE developer/designer.
    Also, if I use this architecture, I can imagine one issue that I might run into (I'm sure there are many others). I can imagine that I would want to retrieve the entity beans (lets say mypackage.MyPersonBean) through some call to an EJB, and then use the bean in some rendered Swing component. What happens when the Swing component needs to access the results of MyPersonBean.getAddresses() if the addresses are lazy loaded?
    As you can probably tell, I really have more than one design question here. Help/comments about any of this is greatly appreciated.

    I was thinking the same thing, but don't have a
    successful experience to validate my gut feelings.
    Here's my only suggestion (which dubwai could
    hopefully confirm or correct): write your entity
    classes/data model classes with no knowledge of
    lazy-loading etc. Then subclass them, overriding
    just the getChildren() type of methods and build the
    lazy-loading knowledge into the subclass.More or less, yes. Don't over-think it, though. If you define your basic data 'types' as interfaces, you don't need to get into complex type hierarchies or multiple versions of the types unless that becomes necessary and if it does, the changes should not affect the presentation layer.
    Since you are on-board with this and I think you are completely following, there is a technique for the lazy loading that you can use here.
    In the case where it's a one-to-one relationship, you can do the lazy-loading by creating a simple wrapper class for the child object. This class will have a reference to either null or a filled in Object. This is a little more OO because the Object is taking care of itself. Whether this abstraction is useful to you, you will have to decide.
    In the case of a one-to-many relationship, you can create a custom Collection (List or Set) that manages the stub loading. If you make a generic abstract version and subclass it for the different child types, you might be able to reuse a lot of the data retrieval code. You can do the same thing with the wrapper too.
    I will caution you to try to keep it as simple as you can without painting yourself into a corner. Only do things that you are going to use now and write things so they can be expanded upon later. Reducing coupling is a core technique for that.
    When the
    GUI asks for an object in the getData() call, hand
    them a subclass object, but don't let them know it.
    In other words, have the method "public DataClass
    getData()" return a SubDataClass object. The caller
    will only know that they received a DataClass
    object, but lazy-loading awareness will be built
    into it. This way, the lazy-loading stuff is
    completely transparent to the caller but you still
    have simple data classes that can be used outside of
    a lazy-loading context.Yes this is the idea, but don't write the other versions until you need them.
    It's also possible to use
    this method if you need to add transparent
    lazy-loading to classes that you aren't the author
    of. (Only classes that have been tagged 'final' or
    have 'final' public methods would be beyond this
    method's reach.)Yes, you can use the wrapper approach above but if the author of that class made a lot of unecessary assumptions you might have trouble.
    This approach allows for some enhancements, too.You
    can create a thread that retrieves the children of
    Foo (e.g. bars) incrementally after the Foo is
    returned to the caller. Often you can load the
    bars
    in the time it takes the user to click around to
    the
    point where they are needed or at least be partly
    done. This will make the app seem very fast to the
    user because they get the Foo very quickly (because
    you didn't load the chidren) and then the bars
    really
    quickly (because you loaded them during user
    'think-time').
    I love this idea. I'm hoping to code this into my
    GUI app soon.I would advise that you get the main lazy-loading working without this (keep in mind when writing the code) and do it once you are sure you will finish on time.

  • Design advice for vertical list calculations

    I'm extending a product management life cycle sharpoint 365 site,
    With purchase orders, magazine store, production targets (date based) and sold dates.
    So that in our production environment we can see how much is stored, how much can be sold, and what we need to buy in etc.
    The thing i'm a bit troubled about that sharepoint lists are not Excel, but this has to be done with Sharepoint lists.
    They prefer not to have edits directly in the aspX code, but editing workflows in Sharepoint designer is OK
    In excel one could easily add a cell formula with the content of Sum the value in the row left of me and add it to the value of myself one row earlier (like B2 contained  = A2+B1 ); and then copy that formula to the whole B column
    The nice thing with Excel is that when you change some value in A, like A2 = 10 and and later A5=10 then B7 would be 20
    Changing later a value like A3 =4 would recalculate quickly and re- totals the B column.
    Sharepoint Lists, calculated fields work only horizontally, so to do some vertical actions one needs a workflow, and do some lookup based upon (calculated previous) ID field, ea ID -1. Or stepp through to All ID's till current. What borders me a bit, is that
    my list will grow large at some point. So stepping through all ID's to sum them till current Item seams 'slow' to me, on the other hand if i only check the previous version then the whole column (B) wouldnt be recalculated, if someone changed an older entry.
    Extremly simplified i have a single list with the columns below (where stored act as my B column).
    bought | stored | sold
    0 | 5 | 0
    2 | 5 | 0  (raw products need to be manufactured before stored so they're added 1 by 1 later).
    0 | 6 | 0
    0 | 7 | 0
    0 | 4 | 3 (but when sold we can subtract directly from storage)
    Ofcourse i need some horizontal calculations because i need to track as well if there has been bought enough for production. But i wonder what would be Wise to do, base thing on current ID and ID minus 1, or to walk through all items by work flow (recalculate
    whole list), or like with changes; recalculate from current changed till the end  (not sure how to detect end yet.. but well something like that).
    I just wonder what would be wise here, and the best direction for this.
    The table i showed is a  extreme simplified, in fact also some other tables and workflows will be the feeders of the data.
    Its just that the whole thing makes me a bit worry and wonder what would be best, and maybe i oversee something maybe there are other ways for vertical calculations over lists.

    After lots of thinking, and seeing how slow office 365 SharePoint reacted upon my list workflows.
    I've decided to use a "site variables list", in which I store variables as rows and their value in a columns.
    And I refer to them by ID (or one could use another indexed unique value).
    It's maybe not an exact calculation of the whole thing (build around several lists) but everything is a lot faster then stepping trough each item in a huge list. And it also allows for a bit more easy tweaking of these "vertical" calculations.
    If for some reason those calculations would need adjustments (by change of management definitions), I have easy access to those variables to adjust them.
    On a side note, when I use those variables, it turned out it worked a bit better to create in the workflow local variables, then do the calculation, and put it in the right table you want those numbers to appear in. As compared to directly referring to the
    total. It takes just 5 sec or so to update. With this method size of the lists have no almost no impact on the speed of the workflow now.

  • Time series functions are not working in OBIEE for ESSBASE data source

    Hi All,
    I am facing a problem in OBIEE as I am getting error messages for measure columns with Time series functions(Ago,ToDate and PeriodRolling) in both RPD and Answers.
    Error is "Target database does not support Ago operation".
    But I am aware of OBIEE supports Time Series functions for Essbase data source.
    using Hyperion 9.3.1 as data source and obiee 11.1.1.5.0 as reporting tool.
    Appreciate your help.
    Thanks,
    Aravind

    Hi,
    is because the time series function are not supported for the framentation content, see the content of the oracle support:
    The error occurs due to the fact the fragmented data sources are used on some Time series measures. Time series measures (i.e. AGO) are not supported on fragmented data sources.
    Confirmation is documented in the following guide - Creating and Administering the Business Model and Mapping Layer in an Oracle BI Repository > Process of Creating and Administering Dimensions
    Ago or ToDate functionality is not supported on fragmented logical table sources. For more information, refer to “About Time Series Conversion Functions” on page 197.
    Regards,
    Gianluca

  • Database design for the Project System!

    Hi
    I need the database design schema for the Project System .
    For example with the transaction code CJ20N at the left side all the Project Hierarchy is tabulated.
    I want to  know the relations between tables ?
    Would you please help me ?

    look logical database PSJ with tcode SE36
    grx. A.

  • Time series for cvc's

    hello
    In any case ( whether new cvc's added or the new period is to be included ) we create time series for the planning area. Not aware as to why Adjust time series option is given for Planning Object Structure at the time of creation of cvc's.
    Any thoughts please
    regards
    KK

    Hi
    Yes you are correct we have some background jobs for create time series for the planning area which might execute depending on our frequency. But if you create CVCs and try to check before our program has to be executed in background we might have inconsistency. To avoid this inconsistency it is always advisable to put Adjust Time Series Objects indicator which will immediately Updates the time series objects for new CVC in all planning areas based on this master planning object structure.
    SAP always recommends that you update all planning areas immediately due to which we should use this indicator .
    Alternatively you can leave these indicator unselected for all new characteristic value combinations. Afterwords to adjust the time series objects at a later date we can choose Adjust Time Series from the context menu for the planning object structure in via S&DP Adminsistration. This also has some of the advantage like that you can create a variant and schedule the job to run later,  when there is little system activity.
    I hope this helps to answer your question
    Thanks
    Amol

  • Turn off dynamic time series for a single account

    I have a gross profit % account that is "store data." When users enter differing percents on a data form in Jan, Feb, and Mar, using any of the standard time balance properties (Fill, Flow, Balance, etc.) the amount displayed in Q1 is incorrect. Is there a way to display nothing in Q1 for this one account? I do not want to completely disable dynamic time series because it functions properly for all other accounts.
    Thanks in advance for the help.
    Ryan

    there would be a lot of questions I would want to ask to answer this properly but let me cover some of the basics.
    1) I don't believe there is a magic time balance you can attach to that account that is "empty" at Qtr and Year
    2) You could hide the qtr and year in the form (unless the form also includes other accounts that show qtr and year)
    3) what is the correct math for the quarter you would want
    4) a) Probably the right answer is to create a calc that does the right math. My guess is Qtr and Year needs to wait to add up the amounts in another couple of accounts then do the division.
    b) you create a calc that clears the qtr and year for that account as another option
    but once you figure out which calc method you want to go with you then attach the calc to the form to run on save and the user shouldn't see anything wrong.

Maybe you are looking for