average aggregate on nested data - graphql

What I would like to get is the average ScoreOverall of all the products within the List. I've tried adding some relationships but I can't get an aggregate "endpoint" on a nested level.
The data model:
List
|--ListProducts (linking table, one list to many products)
|--ProductScore (joined view)
|--ScoreWeighted (value I want the average across all products in this List)
Any clues on what the best approach for this would be?

If the built in GQL operations exposed by Hasura don't allow you to get everything you need your best bet is extending the schema with a custom SQL function or view

Related

Drill down based on parent-child relationship

Is there a way to drill down based on parent-child relationship in AWS QuickSight? For example revenue of restaurants where the restaurants are in group hierarchy and we want to show the sum of revenue on specific level of hierarchy. The group levels are dynamic and based on parent-child structure.
Here is how we render the groups in web app:
Group data is in table with columns group_id, group_name, group_parent_id.
You could do this when you create the visual by adding a drill-down layer in the field well. See the link here - https://github.com/awsdocs/amazon-quicksight-user-guide/blob/master/doc_source/adding-drill-downs.md
An alternative approach is using actions and parameters. By passing the field that establishes the join between the parent and the child, using a parameter, you could achieve that drill down. It is a more elegant method than the previous URL only approach. It is explained quite well in this workshop : AWS Quicksight - Adding Interactivity

Eager loading relations for only a subset of records in a Laravel collection

I'm working on a legacy Zend 1 project that's in the process of migrating to Laravel via the Strangler Pattern, and I'm using Eloquent for some of the database queries (though not all as they're still in the process of being migrated). Because Zend 1 can't work on any version of PHP higher than 7.1, it's stuck on the version of Eloquent from Laravel 5.8 until further notice.
I have one particular table containing navigation items, which has a nullable polymorphic relation for content items that uses a morph map to map the Eloquent models to the item types. One type, static doesn't have an Eloquent model assigned to it since it's just a container for other navigation items. Trying to eager load the relation on any items with the static type breaks it because it's not defined in the morph map, and setting it to null doesn't resolve the issue either.
Right now I load the items with a link type of static in a separate query and merge them with the query that gets the remaining navigation items, but this means there are two separate queries and that's not great for performance. Using a union doesn't resolve the issue because the eager load is a separate query from the one for the navigation items.
I know that it's possible to call load() on a collection after it's already been retrieved via a query in order to eager load a relation, and that it's also possible to constrain the eager load so that, for instance, a WHERE clause can be applied when loading the relation. What I'm trying to find is a means to ensure that the query only attempts to eager load the relation if the item type is not static. In other words, constraining not the query to get the relation, but excluding that record from the query so no attempt is made to retrieve the non-existent relation for that record.
Does anyone know if this is possible? One solution I can think of is to split off the items that aren't static in collections and apply load() there, but that's rather cumbersome and I was hoping there was a more elegant method.

How to access categories in Wix Database

I've been struggling to create a repeater which accesses specific information in my Wix data base. My question is a bit more complex than connecting the repeater to a column.
Rather, I want the repeater to access types of data within a column on the database. I have a column in the data base with an id, "category". For illustrative purposes, say the name of the data base is "store". I'm selling two different types of shirts. Some are casual, others formal. "category" has twenty iterations of both "formal" and "casual". If I create a repeater which accesses "category" and displays its text, I'll end up with a repeater forty iterations long. Instead, I want to parse out how many types of categories there are (in this case, two: "formal" and "casual") and only to display each category once-- a repeater which is only two iterations long.
(I know Wix has the ability of accessing how many types of information there are in column "category", I just don't know how to actualize on that ability. I know Wix has this ability because you can create a dynamic item page with a url of name "category". This will create a page for each category in "category". How do I do the same thing but for a repeater?)
One way to accomplish this is by using the Wix Data API Distinct query and then using the query result as the data for your repeater. This means you would not use the GUI connect to dataset, but the code in the page's IDE. Once the query returns, you can set the data property of the Repeater and then use the onItemReady() function for any further manipulation you may need.

Search/retrieve by a large OR query clause with Solr or Elasticsearch

I have a search database of car models: "Nissan Gtr", "Huynday Elantra", "Honda Accord", etc...
Now I also have a user list and the types of cars they like
user1 likes: carId:1234, carId:5678 etc...
Given user 1 I would like to return all the cars he likes, it can be 0 to even hundreads.
What the best way to model this in Solr or potentially another "nosql" system that can help with this problem.
I'm using Solr but I have the opportunity to use another system if I can and if it makes sense.
EDIT:
Solr solution is to slow for Join (Maybe we can try nested). And the current MySQL solution which uses join tables has over 2 billion rows.
so, you just want to store a mapping between User->Cars, and retrieve the cars based on the user...sounds very simple:
Your docs are Users: contain id (indexed), etc fields
one of the field is 'carsliked', multivalued, which contains the set of car ids he likes
you have details about each care in a different collection for example.
given a user id, you retrieve the 'carsliked' field, and get the car details with a cross collection join
You could also use nested object to store each liked car (with all the info about it) inside each user, but is a bit more complex. As a plus, you don't need the join on the query.
Solr would allow you many more things, for example, given a car, which users do like it? Elasticsearch will work exactly the same way (and probably many other tools, given how simple your use case seems).

"Join query" in ElasticSearch

Let's say we have two index types: members and restaurants. Both contain city attribute.
I want to filter members (e.g. by name) and would like to include list of restaurant names from the members' hometown/city in the results.
Is it possible to do this using just one ES query? I guess it should be similar to DB join.
Thanks.
ES doesn't have the concepts of joins. This is due to it being an index rather than a relational database. Your best best to make two calls. One to get the member's documents, then another to get the restaurants.
Unless you have odd circumstances, this should still be very efficient.

Resources