SlideShare a Scribd company logo
1 of 66
Spreadsheets are graphs too!
Felienne Hermans (@felienne)
Spreadsheets are graphs too!
Felienne Hermans (@felienne)
In this slidedeck I explain how I
used Neo4J to store information on
spreadsheets
Ehm...spreadsheets?
They are so tably?
Are you sure they are fit for a graph
database?
Spreadsheets are mislabeled
Spreadsheets are mislabeled
People often think of spreadsheets
as data, but...
Spreadsheets are code
Spreadsheets are code
I have made it my life’s work to
spread the happy word
“Spreadsheets are code!”
Spreadsheets are code
I have made it my life’s work to
spread the happy word
“Spreadsheets are code!”
If you don’t immediately believe
me, I have three reasons*
* If you do believe me, skip the next 10 slides ;)
1) Used for similar problems
This tool (for stock price
computation) could have been
built in any language. C,
JavaScript, COBOL, or Excel.
The problems Excel is used for are
often (not always) similar to
problems solved in different
languages.
2) Formulas are Turing complete
2) Formulas are Turing complete
I go to great lengths to make my
point. To such great lengths that I
built a Turing machine in Excel,
using formulas only.
Here you see it in action. Every row
is an consecutive step of the lint.
This makes it, in addition to a proof
that formulas are Turing complete,
Also a nice visualization of a Turing
machine.
3) They suffer from the same problems
3) They suffer from the same problems
3) They suffer from the same problems
3) They suffer from the same problems
In summary: both the activities,
complexity and problems are the same
So if spreadsheets are code, can we
apply software engineering methods?
In my dissertation, I defined smells
for spreadsheet formulas
Turns out, Fowler’s code smells are easily
transferable to spreadsheets
Pop quiz: what smell is this?
It is the ‘feature envy’ smell
See how easily this applies to
spreadsheets
To analyze smells, we save spreadsheet
info to a database
This is the data model that I am
storing to the database.
The basics are pretty simple.
This is the data model that I am
storing to the database.
The basics are pretty simple.
But cells can refer to each other,
either directly (i.e. =A7+A9)
=A7+A9
=A7+A9=SUM(A1:A5)
This is the data model that I am
storing to the database.
The basics are pretty simple.
But cells can refer to each other,
either directly [=A7+A9] or through
a range [=SUM(A1:A5)]
This is the data model that I am
storing to the database.
The basics are pretty simple.
But cells can refer to each other,
either directly [=A7+A9] or through
a range [=SUM(A1:A5)]
In the case of a range, the range
itself will points to the cells it
contains.
=SUM(A1:A5) A1..A5
You know the saying that if all you
have is a hammer, everything is a
nail to you.
This is what happened to me. I did
not think about what type of
database to use.
SQL
You know the saying that if all you
have is a hammer, everything is a
nail to you.
This is what happened to me. I did
not think about what type of
database to use.
I just started banging with the
good ol’ SQL hammer I had been
using for ever.
Number of worksheets in a spreadsheet
Which started out just fine!
Number of cells in a spreadsheet
Still pretty okay
Number of connected cells for a cell
But, in order to calculate the
‘feature envy’ smell, we need the
total number of connected cells.
So both direct and through a
range.
Number of connected cells for a cell
But, in order to calculate the
‘feature envy’ smell, we need the
total number of connected cells.
So both direct and through a
range.
Let’s start with direct.
Number of connected cells for a cell
Number of connected cells for a cell
But, in order to calculate the
‘feature envy’ smell, we need the
total number of connected cells.
So both direct and through a
range.
Let’s start with direct.
Now look at the range part.
Number of connected cells for a cell
Number of connected cells for a cell
Number of connected cells for a cell
Things start to get iffy when we
combine these two query parts.
Number of connected cells for a cell
Number of connected cells for a cell
Things start to get iffy when we
combine these two query parts.
Not only is the query quite big, also
this happens.
Number of connected cells for a cell
If your tools reach their limits, this
has to tell you something.
So I started thinking.
Maybe this
is not a
nail…
Maybe I
need a
different tool
Maybe I
need a
different tool
It was at this time that I attended a
talk about Neo4J.
And the strange thing is, I had
seen a few talks about Neo before.
But this time it ‘clicked’, because I
was suffering from the problem
that Neo could solve.
So I ended up with this
model. Still spreadsheets,
worksheets, cells and links.
So I ended up with this
model. Still spreadsheets,
worksheets, cells and links.
But the ‘prec’ relation can
now refer to either cells or
ranges.
Turning this
Turning this into this.
Turning this into this.
I wouldn’t say this is the power of
Neo at work. It is the power of the
right tool for the job.
There are scenarios, for sure,
where the situation is the other
way around.
But for my goal, Neo was a great
fit.
Also, to be honest with you, I did
not immediately write such super
succint Cypher queries. My first
attempt was something like this:
Also, to be honest with you, I did
not immediately write such super
succint Cypher queries.
My first attempt was something like
this
Also, to be honest with you, I did
not immediately write such super
succint Cypher queries.
My first attempt was something like
this
This is basically a one on one
translation from SQL to Neo. Still the
two different ways of connecting. It
took me a while to understand the
power of traversal queries.
Here’s another example:
Number of cells in a spreadsheet
Number of cells in a spreadsheet
First Cypher attempt
Still very SQLy
Number of cells in a spreadsheet
Second (okay probably more like
fifth) attempt. No more where,
directly matching a graph pattern.
The power of Cypher :)
That’s all folks.
Spreadsheets are code
That’s all folks.
Spreadsheets are code
Don’t justhit things with the one
hammer you know
That’s all folks.
Spreadsheets are code
Don’t justhit things with the one
hammer you know
Neo is cool for graph like structures
That’s all folks.
Spreadsheets are code
Don’t justhit things with the one
hammer you know
Neo is cool for graph like structures
It makes queries easier
That’s all folks.
Spreadsheets are code
Don’t justhit things with the one
hammer you know
Neo is cool for graph like structures
It makes queries easier
But it takes some getting used to
for SQL minded brains
Spreadsheets are graphs too!
Felienne Hermans (@felienne)
That’s all folks.
Spreadsheets are code
Don’t justhit things with the one
hammer you know
Neo is cool for graph like structures
It makes queries easier
But it takes some getting used to for
SQL minded brains
Liked this talk? Visit my site for more

More Related Content

Viewers also liked

GraphConnect 2014 SF: Applying the GraphAware Framework
GraphConnect 2014 SF: Applying the GraphAware FrameworkGraphConnect 2014 SF: Applying the GraphAware Framework
GraphConnect 2014 SF: Applying the GraphAware FrameworkNeo4j
 
Target audience profile
Target audience profileTarget audience profile
Target audience profileibrahim95
 
Data visualisation - Big data
Data visualisation - Big dataData visualisation - Big data
Data visualisation - Big dataarthurlankester
 
Deploying Massive Scale Graphs for Realtime Insights
Deploying Massive Scale Graphs for Realtime InsightsDeploying Massive Scale Graphs for Realtime Insights
Deploying Massive Scale Graphs for Realtime InsightsNeo4j
 
ViBRANT WP5 presentation by Vizzuality
ViBRANT WP5 presentation by VizzualityViBRANT WP5 presentation by Vizzuality
ViBRANT WP5 presentation by VizzualityJavier de la Torre
 
Tips and Tricks for Graph Data Modeling
Tips and Tricks for Graph Data ModelingTips and Tricks for Graph Data Modeling
Tips and Tricks for Graph Data ModelingNeo4j
 
New trends in data analysis and visualization on the web
New trends in data analysis and visualization on the webNew trends in data analysis and visualization on the web
New trends in data analysis and visualization on the webJavier de la Torre
 
A FEW THINGS THAT WOULD HAVE BEEN HELPFUL TO KNOW BEFOREHAND
A FEW THINGS THAT WOULD HAVE BEEN HELPFUL TO KNOW BEFOREHANDA FEW THINGS THAT WOULD HAVE BEEN HELPFUL TO KNOW BEFOREHAND
A FEW THINGS THAT WOULD HAVE BEEN HELPFUL TO KNOW BEFOREHANDMoritz Stefaner
 
Presentatie data visualisatie, interactive storytelling
Presentatie data visualisatie, interactive storytellingPresentatie data visualisatie, interactive storytelling
Presentatie data visualisatie, interactive storytellingWilbert Baan
 
Lasst die Daten sprechen
Lasst die Daten sprechenLasst die Daten sprechen
Lasst die Daten sprechenMoritz Stefaner
 
Panama Papers and Beyond: Unveiling Secrecy with Graphs
Panama Papers and Beyond: Unveiling Secrecy with GraphsPanama Papers and Beyond: Unveiling Secrecy with Graphs
Panama Papers and Beyond: Unveiling Secrecy with GraphsNeo4j
 
Small, simple and smelly: What we can learn from examining end-user artifacts?
Small, simple and smelly: What we can learn from examining end-user artifacts?Small, simple and smelly: What we can learn from examining end-user artifacts?
Small, simple and smelly: What we can learn from examining end-user artifacts?Felienne Hermans
 
Natural Language Processing with Graphs
Natural Language Processing with GraphsNatural Language Processing with Graphs
Natural Language Processing with GraphsNeo4j
 
Open Data: Open Your Mind
Open Data: Open Your MindOpen Data: Open Your Mind
Open Data: Open Your MindSally Lait
 
Meaningful Data - Best Internet Conference 2015 (Lithuania)
Meaningful Data - Best Internet Conference 2015 (Lithuania)Meaningful Data - Best Internet Conference 2015 (Lithuania)
Meaningful Data - Best Internet Conference 2015 (Lithuania)Simo Ahava
 
Knowledge Architecture: Graphing Your Knowledge
Knowledge Architecture: Graphing Your KnowledgeKnowledge Architecture: Graphing Your Knowledge
Knowledge Architecture: Graphing Your KnowledgeNeo4j
 
Neo4j the Anti Crime Database
Neo4j the Anti Crime DatabaseNeo4j the Anti Crime Database
Neo4j the Anti Crime DatabaseNeo4j
 
Fraud Detection with Neo4j
Fraud Detection with Neo4jFraud Detection with Neo4j
Fraud Detection with Neo4jNeo4j
 

Viewers also liked (20)

GraphConnect 2014 SF: Applying the GraphAware Framework
GraphConnect 2014 SF: Applying the GraphAware FrameworkGraphConnect 2014 SF: Applying the GraphAware Framework
GraphConnect 2014 SF: Applying the GraphAware Framework
 
Google Docs
Google DocsGoogle Docs
Google Docs
 
Target audience profile
Target audience profileTarget audience profile
Target audience profile
 
Data visualisation - Big data
Data visualisation - Big dataData visualisation - Big data
Data visualisation - Big data
 
Deploying Massive Scale Graphs for Realtime Insights
Deploying Massive Scale Graphs for Realtime InsightsDeploying Massive Scale Graphs for Realtime Insights
Deploying Massive Scale Graphs for Realtime Insights
 
ViBRANT WP5 presentation by Vizzuality
ViBRANT WP5 presentation by VizzualityViBRANT WP5 presentation by Vizzuality
ViBRANT WP5 presentation by Vizzuality
 
Tips and Tricks for Graph Data Modeling
Tips and Tricks for Graph Data ModelingTips and Tricks for Graph Data Modeling
Tips and Tricks for Graph Data Modeling
 
New trends in data analysis and visualization on the web
New trends in data analysis and visualization on the webNew trends in data analysis and visualization on the web
New trends in data analysis and visualization on the web
 
A FEW THINGS THAT WOULD HAVE BEEN HELPFUL TO KNOW BEFOREHAND
A FEW THINGS THAT WOULD HAVE BEEN HELPFUL TO KNOW BEFOREHANDA FEW THINGS THAT WOULD HAVE BEEN HELPFUL TO KNOW BEFOREHAND
A FEW THINGS THAT WOULD HAVE BEEN HELPFUL TO KNOW BEFOREHAND
 
Presentatie data visualisatie, interactive storytelling
Presentatie data visualisatie, interactive storytellingPresentatie data visualisatie, interactive storytelling
Presentatie data visualisatie, interactive storytelling
 
Lasst die Daten sprechen
Lasst die Daten sprechenLasst die Daten sprechen
Lasst die Daten sprechen
 
Panama Papers and Beyond: Unveiling Secrecy with Graphs
Panama Papers and Beyond: Unveiling Secrecy with GraphsPanama Papers and Beyond: Unveiling Secrecy with Graphs
Panama Papers and Beyond: Unveiling Secrecy with Graphs
 
Small, simple and smelly: What we can learn from examining end-user artifacts?
Small, simple and smelly: What we can learn from examining end-user artifacts?Small, simple and smelly: What we can learn from examining end-user artifacts?
Small, simple and smelly: What we can learn from examining end-user artifacts?
 
Natural Language Processing with Graphs
Natural Language Processing with GraphsNatural Language Processing with Graphs
Natural Language Processing with Graphs
 
Open Data: Open Your Mind
Open Data: Open Your MindOpen Data: Open Your Mind
Open Data: Open Your Mind
 
Meaningful Data - Best Internet Conference 2015 (Lithuania)
Meaningful Data - Best Internet Conference 2015 (Lithuania)Meaningful Data - Best Internet Conference 2015 (Lithuania)
Meaningful Data - Best Internet Conference 2015 (Lithuania)
 
Knowledge Architecture: Graphing Your Knowledge
Knowledge Architecture: Graphing Your KnowledgeKnowledge Architecture: Graphing Your Knowledge
Knowledge Architecture: Graphing Your Knowledge
 
The power of symmetry
The power of symmetryThe power of symmetry
The power of symmetry
 
Neo4j the Anti Crime Database
Neo4j the Anti Crime DatabaseNeo4j the Anti Crime Database
Neo4j the Anti Crime Database
 
Fraud Detection with Neo4j
Fraud Detection with Neo4jFraud Detection with Neo4j
Fraud Detection with Neo4j
 

Similar to Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet information

Programming methodology lecture16
Programming methodology lecture16Programming methodology lecture16
Programming methodology lecture16NYversity
 
CPAP.com Introduction to Coding: Part 1
CPAP.com Introduction to Coding: Part 1CPAP.com Introduction to Coding: Part 1
CPAP.com Introduction to Coding: Part 1johnnygoodman
 
Introduction to programming
Introduction to programmingIntroduction to programming
Introduction to programmingAndre Leal
 
perl 6 hands-on tutorial
perl 6 hands-on tutorialperl 6 hands-on tutorial
perl 6 hands-on tutorialmustafa sarac
 
Cleaning and sorting data
Cleaning and sorting dataCleaning and sorting data
Cleaning and sorting dataNina Sandlin
 
Chapter 5 searching and sorting handouts with notes
Chapter 5   searching and sorting handouts with notesChapter 5   searching and sorting handouts with notes
Chapter 5 searching and sorting handouts with notesmailund
 
Programming methodology lecture23
Programming methodology lecture23Programming methodology lecture23
Programming methodology lecture23NYversity
 
Unstructure: Smashing the Boundaries of Data (SxSWi 2014)
Unstructure: Smashing the Boundaries of Data (SxSWi 2014)Unstructure: Smashing the Boundaries of Data (SxSWi 2014)
Unstructure: Smashing the Boundaries of Data (SxSWi 2014)Ian Varley
 
Multiple intelligences approach to Number Systems
Multiple intelligences approach to  Number SystemsMultiple intelligences approach to  Number Systems
Multiple intelligences approach to Number SystemsKatrin Becker
 
The tyranny of averages
The tyranny of averagesThe tyranny of averages
The tyranny of averagesPVS-Studio
 
Metric Abuse: Frequently Misused Metrics in Oracle
Metric Abuse: Frequently Misused Metrics in OracleMetric Abuse: Frequently Misused Metrics in Oracle
Metric Abuse: Frequently Misused Metrics in OracleSteve Karam
 
Programming methodology lecture26
Programming methodology lecture26Programming methodology lecture26
Programming methodology lecture26NYversity
 

Similar to Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet information (20)

Programming methodology lecture16
Programming methodology lecture16Programming methodology lecture16
Programming methodology lecture16
 
Algorithms
Algorithms Algorithms
Algorithms
 
Introduction toprogramming
Introduction toprogrammingIntroduction toprogramming
Introduction toprogramming
 
CPAP.com Introduction to Coding: Part 1
CPAP.com Introduction to Coding: Part 1CPAP.com Introduction to Coding: Part 1
CPAP.com Introduction to Coding: Part 1
 
Introduction to programming
Introduction to programmingIntroduction to programming
Introduction to programming
 
perl 6 hands-on tutorial
perl 6 hands-on tutorialperl 6 hands-on tutorial
perl 6 hands-on tutorial
 
Cleaning and sorting data
Cleaning and sorting dataCleaning and sorting data
Cleaning and sorting data
 
Teacher ppt
Teacher pptTeacher ppt
Teacher ppt
 
Chapter 5 searching and sorting handouts with notes
Chapter 5   searching and sorting handouts with notesChapter 5   searching and sorting handouts with notes
Chapter 5 searching and sorting handouts with notes
 
Programming methodology lecture23
Programming methodology lecture23Programming methodology lecture23
Programming methodology lecture23
 
Unstructure: Smashing the Boundaries of Data (SxSWi 2014)
Unstructure: Smashing the Boundaries of Data (SxSWi 2014)Unstructure: Smashing the Boundaries of Data (SxSWi 2014)
Unstructure: Smashing the Boundaries of Data (SxSWi 2014)
 
Multiple intelligences approach to Number Systems
Multiple intelligences approach to  Number SystemsMultiple intelligences approach to  Number Systems
Multiple intelligences approach to Number Systems
 
Algorithm
AlgorithmAlgorithm
Algorithm
 
The tyranny of averages
The tyranny of averagesThe tyranny of averages
The tyranny of averages
 
Metric Abuse: Frequently Misused Metrics in Oracle
Metric Abuse: Frequently Misused Metrics in OracleMetric Abuse: Frequently Misused Metrics in Oracle
Metric Abuse: Frequently Misused Metrics in Oracle
 
Spss basics
Spss basicsSpss basics
Spss basics
 
Programming methodology lecture26
Programming methodology lecture26Programming methodology lecture26
Programming methodology lecture26
 
intro.ppt
intro.pptintro.ppt
intro.ppt
 
intro.ppt
intro.pptintro.ppt
intro.ppt
 
intro.ppt
intro.pptintro.ppt
intro.ppt
 

More from Felienne Hermans

Using F# and genetic programming to play computer bridge
Using F# and genetic programming to play computer bridgeUsing F# and genetic programming to play computer bridge
Using F# and genetic programming to play computer bridgeFelienne Hermans
 
Programming is logical reasoning?
Programming is logical reasoning?Programming is logical reasoning?
Programming is logical reasoning?Felienne Hermans
 
Do Code Smell Hamper Novice Programmers?
Do Code Smell Hamper Novice Programmers?Do Code Smell Hamper Novice Programmers?
Do Code Smell Hamper Novice Programmers?Felienne Hermans
 
Programming by Calculation
Programming by CalculationProgramming by Calculation
Programming by CalculationFelienne Hermans
 
A board game night with geeks: attacking Quarto ties with SAT solvers
A board game night with geeks: attacking Quarto ties with SAT solversA board game night with geeks: attacking Quarto ties with SAT solvers
A board game night with geeks: attacking Quarto ties with SAT solversFelienne Hermans
 
Social media for the busy scientist
Social media for the busy scientistSocial media for the busy scientist
Social media for the busy scientistFelienne Hermans
 

More from Felienne Hermans (9)

Using F# and genetic programming to play computer bridge
Using F# and genetic programming to play computer bridgeUsing F# and genetic programming to play computer bridge
Using F# and genetic programming to play computer bridge
 
How does code sound?
How does code sound?How does code sound?
How does code sound?
 
Programming is logical reasoning?
Programming is logical reasoning?Programming is logical reasoning?
Programming is logical reasoning?
 
Do Code Smell Hamper Novice Programmers?
Do Code Smell Hamper Novice Programmers?Do Code Smell Hamper Novice Programmers?
Do Code Smell Hamper Novice Programmers?
 
Programming by Calculation
Programming by CalculationProgramming by Calculation
Programming by Calculation
 
A board game night with geeks: attacking Quarto ties with SAT solvers
A board game night with geeks: attacking Quarto ties with SAT solversA board game night with geeks: attacking Quarto ties with SAT solvers
A board game night with geeks: attacking Quarto ties with SAT solvers
 
Social media for the busy scientist
Social media for the busy scientistSocial media for the busy scientist
Social media for the busy scientist
 
Spreadsheet Testing
Spreadsheet TestingSpreadsheet Testing
Spreadsheet Testing
 
TEDxDelft
TEDxDelftTEDxDelft
TEDxDelft
 

Recently uploaded

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Recently uploaded (20)

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet information

  • 1. Spreadsheets are graphs too! Felienne Hermans (@felienne)
  • 2. Spreadsheets are graphs too! Felienne Hermans (@felienne) In this slidedeck I explain how I used Neo4J to store information on spreadsheets
  • 3. Ehm...spreadsheets? They are so tably? Are you sure they are fit for a graph database?
  • 5. Spreadsheets are mislabeled People often think of spreadsheets as data, but...
  • 7. Spreadsheets are code I have made it my life’s work to spread the happy word “Spreadsheets are code!”
  • 8. Spreadsheets are code I have made it my life’s work to spread the happy word “Spreadsheets are code!” If you don’t immediately believe me, I have three reasons* * If you do believe me, skip the next 10 slides ;)
  • 9. 1) Used for similar problems
  • 10. This tool (for stock price computation) could have been built in any language. C, JavaScript, COBOL, or Excel. The problems Excel is used for are often (not always) similar to problems solved in different languages.
  • 11. 2) Formulas are Turing complete
  • 12. 2) Formulas are Turing complete I go to great lengths to make my point. To such great lengths that I built a Turing machine in Excel, using formulas only.
  • 13. Here you see it in action. Every row is an consecutive step of the lint. This makes it, in addition to a proof that formulas are Turing complete, Also a nice visualization of a Turing machine.
  • 14. 3) They suffer from the same problems
  • 15. 3) They suffer from the same problems
  • 16. 3) They suffer from the same problems
  • 17. 3) They suffer from the same problems
  • 18. In summary: both the activities, complexity and problems are the same
  • 19. So if spreadsheets are code, can we apply software engineering methods?
  • 20.
  • 21. In my dissertation, I defined smells for spreadsheet formulas
  • 22. Turns out, Fowler’s code smells are easily transferable to spreadsheets
  • 23. Pop quiz: what smell is this?
  • 24. It is the ‘feature envy’ smell
  • 25. See how easily this applies to spreadsheets
  • 26. To analyze smells, we save spreadsheet info to a database
  • 27. This is the data model that I am storing to the database. The basics are pretty simple.
  • 28. This is the data model that I am storing to the database. The basics are pretty simple. But cells can refer to each other, either directly (i.e. =A7+A9) =A7+A9
  • 29. =A7+A9=SUM(A1:A5) This is the data model that I am storing to the database. The basics are pretty simple. But cells can refer to each other, either directly [=A7+A9] or through a range [=SUM(A1:A5)]
  • 30. This is the data model that I am storing to the database. The basics are pretty simple. But cells can refer to each other, either directly [=A7+A9] or through a range [=SUM(A1:A5)] In the case of a range, the range itself will points to the cells it contains. =SUM(A1:A5) A1..A5
  • 31. You know the saying that if all you have is a hammer, everything is a nail to you. This is what happened to me. I did not think about what type of database to use.
  • 32. SQL You know the saying that if all you have is a hammer, everything is a nail to you. This is what happened to me. I did not think about what type of database to use. I just started banging with the good ol’ SQL hammer I had been using for ever.
  • 33. Number of worksheets in a spreadsheet Which started out just fine!
  • 34. Number of cells in a spreadsheet Still pretty okay
  • 35. Number of connected cells for a cell But, in order to calculate the ‘feature envy’ smell, we need the total number of connected cells. So both direct and through a range.
  • 36. Number of connected cells for a cell But, in order to calculate the ‘feature envy’ smell, we need the total number of connected cells. So both direct and through a range. Let’s start with direct.
  • 37. Number of connected cells for a cell
  • 38. Number of connected cells for a cell But, in order to calculate the ‘feature envy’ smell, we need the total number of connected cells. So both direct and through a range. Let’s start with direct. Now look at the range part.
  • 39. Number of connected cells for a cell
  • 40. Number of connected cells for a cell
  • 41. Number of connected cells for a cell Things start to get iffy when we combine these two query parts.
  • 42. Number of connected cells for a cell
  • 43. Number of connected cells for a cell Things start to get iffy when we combine these two query parts. Not only is the query quite big, also this happens.
  • 44. Number of connected cells for a cell
  • 45. If your tools reach their limits, this has to tell you something. So I started thinking.
  • 46. Maybe this is not a nail…
  • 47.
  • 49. Maybe I need a different tool It was at this time that I attended a talk about Neo4J. And the strange thing is, I had seen a few talks about Neo before. But this time it ‘clicked’, because I was suffering from the problem that Neo could solve.
  • 50. So I ended up with this model. Still spreadsheets, worksheets, cells and links.
  • 51. So I ended up with this model. Still spreadsheets, worksheets, cells and links. But the ‘prec’ relation can now refer to either cells or ranges.
  • 54. Turning this into this. I wouldn’t say this is the power of Neo at work. It is the power of the right tool for the job. There are scenarios, for sure, where the situation is the other way around. But for my goal, Neo was a great fit.
  • 55. Also, to be honest with you, I did not immediately write such super succint Cypher queries. My first attempt was something like this:
  • 56. Also, to be honest with you, I did not immediately write such super succint Cypher queries. My first attempt was something like this
  • 57. Also, to be honest with you, I did not immediately write such super succint Cypher queries. My first attempt was something like this This is basically a one on one translation from SQL to Neo. Still the two different ways of connecting. It took me a while to understand the power of traversal queries. Here’s another example:
  • 58. Number of cells in a spreadsheet
  • 59. Number of cells in a spreadsheet First Cypher attempt Still very SQLy
  • 60. Number of cells in a spreadsheet Second (okay probably more like fifth) attempt. No more where, directly matching a graph pattern. The power of Cypher :)
  • 62. That’s all folks. Spreadsheets are code Don’t justhit things with the one hammer you know
  • 63. That’s all folks. Spreadsheets are code Don’t justhit things with the one hammer you know Neo is cool for graph like structures
  • 64. That’s all folks. Spreadsheets are code Don’t justhit things with the one hammer you know Neo is cool for graph like structures It makes queries easier
  • 65. That’s all folks. Spreadsheets are code Don’t justhit things with the one hammer you know Neo is cool for graph like structures It makes queries easier But it takes some getting used to for SQL minded brains
  • 66. Spreadsheets are graphs too! Felienne Hermans (@felienne) That’s all folks. Spreadsheets are code Don’t justhit things with the one hammer you know Neo is cool for graph like structures It makes queries easier But it takes some getting used to for SQL minded brains Liked this talk? Visit my site for more