neo4j-devtools / neo4j-bloom

A public repository for informal docs, problem reporting and content sharing related to Neo4j Bloom.
Apache License 2.0
18 stars 0 forks source link

Visualize temporal data using a time slider #54

Closed seangrant82 closed 4 months ago

seangrant82 commented 2 years ago

Problem: Currently there is no easy/low-code way inside of Bloom to visualize temporal data based on node/edge properties. For example, if my nodes have a datetime property (e.g. account_opened), I would like to visualize how my graph has evolved over time. Also, this could allow me to see a point in time for further analysis.

Alternative: Currently only way to achieve something like this would be either through custom app (python notebook, etc) outside of Bloom or through the use of cypher queries to only retrieve portions of graph filter based on the time property (which means you would have to know ahead of time which timeframe to select)

Enhancement: Propose to add a range/time slider that can look at either one property or a start/end set of properties (e.g. account_open and account_closed) to dynamically retrieve node/edges for a temporal visualization.

Here is an example of a complex time slider from ArcGIS image

adriens commented 2 years ago

:heavy_plus_sign: :one: :ballot_box:

GuangxueCao commented 1 year ago

👋 Hi @seangrant82 , thanks for the feature request. This request has been added to our backlog for consideration.

adriens commented 1 year ago

BTW, does a metadata exist on node like on ELK where we get the node creation timestamp medatata ?

GuangxueCao commented 1 year ago

Hi @adriens, I’m afraid that is not possible at the time.

If you have control over when a node is created, you could set the creation time to a property manually.

adriens commented 1 year ago

Hi @GuangxueCao , thnaks a lot for your feedback, ... it totally makes sense

If you have control over when a node is created, you could set the creation time to a property manually.

Yep, that's what we did. In fact, that would be nice to have this as a Neo4J core feature as a special internal field :+1:

seangrant82 commented 1 year ago

@adriens is this what you did?: https://stackoverflow.com/questions/23440277/neo4j-cypher-query-with-timestamp#:~:text=It%20does%20not%20have%20anything%20to%20do%20with,does%20not%20store%20any%20creation%20timestamps%20by%20default.

adriens commented 1 year ago

@seangrant82 :

TIMESTAMP() is a scalar function to mean the exact time at query execution.

So nope, it would rather be somehting like : @timestamp :

"@ fields are usually ones generated by Logstash as metadata ones, @timestamp being the value that the event was processed by Logstash."

ckanz commented 4 months ago

Hi @seangrant82, glad to report we implemented your suggested feature! It is called "Slicer" and you can find out more about it here: https://neo4j.com/docs/bloom-user-guide/current/bloom-tutorial/slicer/ Thank you for the great suggestion!

I will be closing this issue now, nut if you have any or suggestions or issues with Bloom, please feel free to raise a new issue here or on Canny https://neo4j-aura.canny.io/explore