icCube & dynamic hierarchies that show its structure depending on TIME - olap

I would like to display a parent/child hierarchy (e.g. Costcenter) for a specific period in time.
The business case, is that the organizational structure in the Costcenter changes over time and the end-users would like to see the historical data against the latest organizational structure, but also against the structure that was valid at that time (due to link to financial statements in the past).
See screenprint for an example:
Is such a thing possible in icCube?

Related

At what point do you need more than one table in dynamodb?

I am working on an asset tracking system that also manages the concept of "projects". The users of this application perform maintenance activities on their customer's assets, so they need an action log where actions on an asset start life as a task in a project. For example, "Fix broken frame" might be a task where an action would have something like "Used parts a, b, and c to fix the frame" with a completed time and the employee who performed the action.
The conceptual data model for the application starts with a Customer that has multiple locations and each location has multiple assets. Each asset should have an associated action log so it is easy to view previous actions applied to that asset.
To me, that should all go in one table based upon the logical ownership of that data. Customer owns Locations which own Assets which own Actions.
I believe I should have a second table for projects as this data is tangential to the Customer/Location/Asset data. However, because I read so much about how it should all be one table, I'm not sure if this delineation only exists because I've modeled the data incorrectly because I can't get over the 3NF modeling that I've used for my entire career.
Single table design doesn't forbid you to create multiple tables. Instead in encourages to use only a single table per micro-services (meaning, store correlated data, which you want to access together, in the same table).
Let's look at some anecdotes from experts:
Rick Houlihan tweeted over a year ago
Using a table per entity in DynamoDB is like deploying a new server for each table in RDBMS. Nobody does that. As soon as you segregate items across tables you can no longer group them on a GSI. Instead you must query each table to get related items. This is slow and expensive.
Alex DeBrie responded to a tweet last August
Think of it as one table per service, not across your whole architecture. Each service should own its own table, just like with other databases. The key around single table is more about not requiring a table per entity like in an RDBMS.
Based on this, you should answer to yourself ...
How related is the data?
If you'd build using a relational database, would you store it in separate databases?
Are those actually 2 separate micro services, or is it part of the same micro service?
...
Based on the answers to those (and similar) questions you can argue to either keep it in one table, or to split it across 2 tables.

Need a unique user/course ID variable in SCORM 1.2 package

I'm working on a project that requires a unique "enrollment" id inside a file inside a SCORM package. Something that works like this:
<script src="...?enrollmentid=1234567890"></script>
I have figured out that I should be able to obtain a student_id, but this is too broad an identifier for this use. The id I use must describe a single student/course enrollment uniquely, as a student could enroll in multiple courses, and a course could have multiple students enrolled.
The id could be a composite of other fields, like student_id + course id + enrollment date, but I can't see any way to get those sorts of details from the LMS either.
Is what I'm trying to do possible?
SCORM 1.2 or even 2004 did not unfortunately include things like enrollment date, course id, or SCO title/structure unless that was pumped in via Launch Data that comes by way of the imsmanifest.xml at author time. And these are things which you would need to provide.
cmi.core.student_id is the only unique value you'll get directly from SCORM. The LMS was not given a way to also include any Tier IDs or internals it used when it imported the course. And unless they (unreliably) place them in the launch parameters or you have a way of doing some probing with javascript (also unreliable) you'll need to consider some other options.
Launch Data cmi.launch_data would probably be the easiest way to gain access to any values you want to pass thru to the SCO but this relies heavily on the authoring process of the SCO and its imsmanifest.xml. Situations where there is a LCMS setup or some mechanism of a authoring tool could enable these capabilities.
I add this below the <title/> tag in the imsmanifest.xml:
<!-- Launch Data Example uses Querystring format name=value&name=value -->
<adlcp:dataFromLMS><![CDATA[name=value]]></adlcp:dataFromLMS>
When I state unreliable - I mean to hint that unless you can definitively state you know where this content is running, and the LMS will never change, you won't be able to obtain the info you want in any reliable way.

Drupal Views Entity Reference Limiting results

I have a lot of experience with Drupal 7 views but I am running into a roadblock and I am wondering if what I want to do is even possible.
Here is the scenario. I have two content types - Game and Score.
Scores reference Games via entity reference. I want to create a view that shows all of the games. Easy of course. Then I added the relationship to bridge to the content that is referencing game. This allows me to pull score field data into the view fine.
Here is the issue: Now I want to limit the view to show each game node only once regardless of how many score nodes exist that reference it. I only want the score that is the highest to be displayed with the game.
Is this clear? I need some sort of aggregation on the score nodes data I believe.

Redux: How to handle different queries of same type of data?

I'm looking for best practices of handling same type of data in a redux store while we can have different queries for it.
Imagine a wordpress website, on different pages we have different queries for posts. In homepage, for example we fetch 10 most recent posts and save them to redux store, but for a category page we have to again fetch posts in posts store, but now we might have different posts which may/may not include the ones we had before.
And this applies to many different pages, like tag,taxonomy,author,date,etc...
So basically having to create a separate store for each case doesn't seem to be a good solution since it might end up with many duplicate values.
This is one of the standard reasons why the Flux concept was invented in the first place. Per Dan Abramov's article on The Case for Flux, caching queries is an excellent use case for a Flux-type architecture.
Going beyond that, the Redux principle of having a "single source of truth" applies here, as does the idea of normalizing data in the store.
Overall, you'd probably want to store your data in a normalized form, with multiple "tables" in your state. Add each set of results into the state to cache them, and have different parts of the UI read out the specific posts they're interested in as needed.
See the Redux FAQ entry on organizing nested or duplicate data for links to more information.

Trying to understand database denormalization, Is this database denormalized?

I've been struggling for a couple of days trying to figure out the best way to design a database of a large data set on Firebase, I even wrote a question on database administration site.
I came up with a design, I don't know that's what's called denormalized data or not. I want to minimize querying time of data and also not making inserting/updating data so hard.
Here's my design:
Is that the right database design for this kind of data ?
(Please check my question at database administration site for more details about the nature of the data).
But also here's a short description of the data nature:
So I have an affiliator_category which maybe banks, clubs or organisations. And each category contains a number of affiliators and each affiliator contains number of stores divided into store_category, each store has a number of offers.
And for the user side (the one who do the shopping). A users has a number of memberships in several affiliators, and a number of spendings he/she does.

Resources