{"id":12037,"date":"2025-11-14T16:49:53","date_gmt":"2025-11-14T15:49:53","guid":{"rendered":"https:\/\/sparkle.consulting\/?p=12037"},"modified":"2026-07-09T18:03:08","modified_gmt":"2026-07-09T17:03:08","slug":"connecting-the-dots-neo4j-graph-intelligence-inside-microsoft-fabric","status":"publish","type":"post","link":"https:\/\/sparkle.consulting\/fr\/connecting-the-dots-neo4j-graph-intelligence-inside-microsoft-fabric\/","title":{"rendered":"Relier les points : Neo4j graph intelligence dans Microsoft Fabric"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"12037\" class=\"elementor elementor-12037\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a861a6c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a861a6c\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3f5912a\" data-id=\"3f5912a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d0e91f5 elementor-widget elementor-widget-text-editor\" data-id=\"d0e91f5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h5 aria-level=\"2\"><span data-contrast=\"none\">Introduction: From Data to Connections<br \/><br \/><\/span><\/h5><p><span data-contrast=\"auto\">Microsoft Fabric unifies data engineering, analytics, and AI across the Microsoft ecosystem.<\/span>\u00a0<br \/><span data-contrast=\"auto\">But many business problems like fraud detection, customer 360, supply-chain optimization, \u2026\u00a0 depend not on single data points, but on how those points connect.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">Microsoft Fabric already gives organizations a strong foundation for analytics, governance, and AI across both structured and unstructured data.\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">But in the real world, not every challenge is about single rows in a table. Some of the toughest problems are about <\/span><b><span data-contrast=\"auto\">how things connect<\/span><\/b><span data-contrast=\"auto\">,\u00a0 the relationships that hide across systems, transactions, or interactions.\u00a0 That\u2019s where a graph approach adds real power.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">A few examples:\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Uncovering fraud<\/span><\/b><span data-contrast=\"auto\">: Fraudsters rarely act in isolation. They exploit networks of accounts, devices, and transactions. By following the links, a graph can reveal hidden loops or unusual clusters of activity that would be nearly impossible to spot in flat reports.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Building a true Customer 360:<\/span><\/b><span data-contrast=\"auto\"> Every customer leaves behind a trail of signals\u2014an email in one system, a purchase in another, a loyalty card in a third. Graphs make it easy to stitch these fragments together into a single, connected view of the customer, enabling more accurate personalization and service.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Delivering smarter recommendations<\/span><\/b><span data-contrast=\"auto\">: Whether it\u2019s a movie, a product, or a service, recommendations work best when they reflect real connections: people who liked this also liked that or friends with similar tastes. Graphs capture these patterns naturally and make the reasoning behind suggestions transparent.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Enhancing GenAI with context<\/span><\/b><span data-contrast=\"auto\">: Large language models are powerful, but they need grounding in reliable facts. A knowledge graph provides that context, ensuring GenAI answers are not just fluent but also accurate, explainable, and connected to enterprise truth.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><p><span data-contrast=\"auto\">Traditional SQL queries can express these patterns, but they become slow, complex, and hard to maintain. Graph databases are designed for this type of analysis.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">With the new Neo4j Graph Workload for Microsoft Fabric, organizations can now explore complex relationships and patterns <\/span><i><span data-contrast=\"auto\">without ever leaving the Fabric environment<\/span><\/i><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><h4 aria-level=\"2\"><span data-contrast=\"none\">What the Neo4j Graph Workload Brings to Fabric<br \/><\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:160,&quot;335559739&quot;:80}\">\u00a0<\/span><\/h4><p><span data-contrast=\"auto\">The Neo4j Graph Workload runs natively in Fabric as a managed workload, powered by Neo4j AuraDB.<\/span>\u00a0<br \/><span data-contrast=\"auto\">It lets you:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Direct connection to Fabric Lakehouse data in OneLake, minimizing data movement.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">AI-assisted graph modeling, which automatically suggests nodes, relationships, and properties.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">Interactive graph exploration, enabling users to expand nodes and visually inspect relationships.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\"><span data-contrast=\"auto\">Cypher query execution within Fabric\u2019s query interface, to explore or for example create new relationships<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"5\" data-aria-level=\"1\"><span data-contrast=\"auto\">Access to 65+ Neo4j graph algorithms, including PageRank, Louvain, and node similarity.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"6\" data-aria-level=\"1\"><span data-contrast=\"auto\">Connect to the AuraDB for further transformation via notebooks<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"7\" data-aria-level=\"1\"><span data-contrast=\"auto\">Visualize result in PowerBI through <\/span><a href=\"https:\/\/neo4j.com\/docs\/aura\/tutorials\/bi\/#_power_bi\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">BI Connector for AuraDB<\/span><\/a><span data-contrast=\"auto\">\u00a0 (Simba Technologies)\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"8\" data-aria-level=\"1\"><span data-contrast=\"auto\">Microsoft Entra ID\u2013based access control and integration with Fabric governance.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><p><span data-contrast=\"auto\">In short: <\/span><b><span data-contrast=\"auto\">it\u2019s Fabric, but with relationship intelligence built in.<\/span><\/b><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">A complete, practical use case below walks you through each step of exploring these capabilities using a movie dataset in OneLake, so you can follow along and experience it yourself.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><h4 aria-level=\"2\"><span data-contrast=\"none\">Current limitations (public preview)<\/span><\/h4><p><span data-contrast=\"auto\">Since this is a <\/span><b><span data-contrast=\"auto\">public preview<\/span><\/b><span data-contrast=\"auto\">, there are a few gaps to be aware of:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"5\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">One trial per tenant: only the first user can start the 14-day free AuraDB trial.\u00a0<\/span><span data-ccp-props=\"{&quot;335559685&quot;:360}\">\u00a0<\/span><\/li><\/ul><p><span data-contrast=\"auto\">When one person in a Fabric tenant starts the free 14-day AuraDB Professional trial, that creates one shared Neo4j instance (tied to the Fabric workspace and region).<\/span><span data-ccp-props=\"{&quot;335559685&quot;:1068,&quot;469777462&quot;:[708],&quot;469777927&quot;:[0],&quot;469777928&quot;:[8]}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">The trial is tenant-scoped:\u00a0 only the <\/span><i><span data-contrast=\"auto\">first<\/span><\/i><span data-contrast=\"auto\"> user can trigger the creation of that instance.<\/span><span data-ccp-props=\"{&quot;335559685&quot;:1068,&quot;469777462&quot;:[708],&quot;469777927&quot;:[0],&quot;469777928&quot;:[8]}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">However, once it\u2019s created, up to 10 users can connect concurrently to the same Neo4j AuraDB graph workload through Fabric.<\/span><span data-ccp-props=\"{&quot;335559685&quot;:1068}\">\u00a0<\/span><\/p><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"5\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">Model customization: the GenAI-assisted graph modeling is automatic, but currently you cannot fully edit the graph schema before loading, although you can already change a lot.<\/span><span data-ccp-props=\"{&quot;335559685&quot;:360}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"5\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">Writeback to OneLake: today, insights stay inside the AuraDB instance; writing them back into OneLake directly from the Graph interface is planned for a future release.<\/span><span data-ccp-props=\"{&quot;335559685&quot;:360}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"5\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\"><span data-contrast=\"auto\">No native connection for PowerBI\u00a0\u00a0 ( no \u201cOpen in Power BI\u201d button or Fabric credential flow or not supported by Fabric\u2019s identity integration (Entra ID):\u00a0 it still uses the Aura-level credentials.<\/span><span data-ccp-props=\"{&quot;335559685&quot;:360}\">\u00a0<\/span><\/li><\/ul><p><span data-contrast=\"auto\">Despite these limitations, the integration is already functional and powerful enough for prototyping, proof-of-concepts, and early production scenarios.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><h4 aria-level=\"2\"><span data-contrast=\"none\">What\u2019s on the Roadmap<br \/><\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:160,&quot;335559739&quot;:80}\"><br \/><\/span><\/h4><p><span data-contrast=\"auto\">Microsoft and Neo4j have announced several upcoming enhancements that will further tighten integration and improve usability:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"6\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Editable <\/span><b><span data-contrast=\"auto\">graph model designer<\/span><\/b><span data-contrast=\"auto\">, allowing users to fully modify node and relationship mappings before data load.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"6\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Schema refresh<\/span><\/b><span data-contrast=\"auto\"> and synchronization options for keeping the Explorer view up to date with changes in AuraDB.\u00a0 <\/span><i><span data-contrast=\"auto\">(seems already to be already OK as of Nov 2025)<\/span><\/i><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"6\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Write-back to OneLake<\/span><\/b><span data-contrast=\"auto\">, enabling seamless round-tripping of graph results to the Lakehouse for downstream analytics and Power BI.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"6\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Enhanced Power BI integration<\/span><\/b><span data-contrast=\"auto\">, removing the need for the separate BI connector.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"6\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"5\" data-aria-level=\"1\"><span data-contrast=\"auto\">Extended <\/span><b><span data-contrast=\"auto\">AI features<\/span><\/b><span data-contrast=\"auto\">, supporting more advanced GraphRAG and embeddings scenarios.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><h4 aria-level=\"2\"><span data-contrast=\"none\">Pricing Model<br \/><\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:160,&quot;335559739&quot;:80}\"><br \/><\/span><\/h4><p><span data-contrast=\"auto\">While public preview documentation confirms a <\/span><b><span data-contrast=\"auto\">14-day free trial of AuraDB Professional<\/span><\/b><span data-contrast=\"auto\"> and shows a <\/span><b><span data-contrast=\"auto\">pay-as-you-go pricing model<\/span><\/b><span data-contrast=\"auto\"> for AuraDB, the full cost model for the Graph Workload in Fabric,\u00a0 combining AuraDB subscription + Fabric capacity usage,\u00a0 is <\/span><b><span data-contrast=\"auto\">still being finalized by Microsoft and Neo4j<\/span><\/b><span data-contrast=\"auto\">.\u00a0 No clear documentation about this was found<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><h4><span data-contrast=\"none\">Behind the Scenes: Building a Connected Movie Universe in Microsoft Fabric<\/span><\/h4><p><span data-contrast=\"auto\">To make the new Neo4j Graph Workload more tangible, we explored it with a simple but familiar dataset: <\/span><b><span data-contrast=\"auto\">movie data stored in OneLake<\/span><\/b><span data-contrast=\"auto\">.<\/span>\u00a0<br \/><span data-contrast=\"auto\">This dataset contains tables for:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"7\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Movies<\/span><\/b><span data-contrast=\"auto\"> (title, release year, genre, \u2026),<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"7\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Persons<\/span><\/b><span data-contrast=\"auto\"> (actors, directors, producers)<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"7\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Users <\/span><\/b><span data-contrast=\"auto\">(people watching the movies)\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"7\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Roles<\/span><\/b><span data-contrast=\"auto\"> (links between people and the movies they acted in, users rating movies and following other users (friends)).<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><p><span data-contrast=\"auto\">In a traditional table-based view, these data sources are easy to query for facts:\u00a0 for example <\/span><i><span data-contrast=\"auto\">\u201cWhich movies did Tom Hanks play in?\u201d<\/span><\/i>\u00a0<br \/><span data-ccp-props=\"{}\">\u00a0<br \/><\/span><span data-contrast=\"auto\">But the moment you start asking <\/span><i><span data-contrast=\"auto\">\u201cWho tends to act together?\u201d<\/span><\/i><span data-contrast=\"auto\">, <\/span><i><span data-contrast=\"auto\">\u201cWhich actor communities exist?\u201d<\/span><\/i><span data-contrast=\"auto\">, or <\/span><i><span data-contrast=\"auto\">\u201cWhich movies can be recommended to certain users?\u201d<\/span><\/i><span data-contrast=\"auto\">, relational joins become complex, inefficient, and difficult to reason about.<\/span>\u00a0<br \/><span data-contrast=\"auto\">This is exactly where the graph approach shines.\u00a0\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">Let\u2019s explore step by step, You\u2019ll see how to:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><ol><li aria-setsize=\"-1\" data-leveltext=\"%1.\" data-font=\"\" data-listid=\"20\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Start in Fabric<\/span><\/b><span data-contrast=\"auto\">:\u00a0 Load movie-data into a Lakehouse.<\/span>\u00a0<br \/><span data-contrast=\"auto\"><span data-contrast=\"auto\">Here, your data still lives in tables, the perfect starting point for structured analytics.<\/span><\/span><\/li><li aria-setsize=\"-1\" data-leveltext=\"%1.\" data-font=\"\" data-listid=\"20\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Turn it into a Graph<\/span><\/b><span data-contrast=\"auto\"><span data-contrast=\"auto\">:\u00a0 Use the Neo4j Graph Workload to automatically detect entities and relationships and transform tabular data into a graph model.<\/span><\/span><\/li><li aria-setsize=\"-1\" data-leveltext=\"%1.\" data-font=\"\" data-listid=\"20\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Analyze and Enrich the Graph<\/span><\/b><span data-contrast=\"auto\">:\u00a0 Explore and analyze your graph using visual explorer and Cypher queries and use graph data science algorithms such as PageRank or Louvain to uncover communities, influencers or collaboration clusters and write back new insights.<\/span><\/li><li aria-setsize=\"-1\" data-leveltext=\"%1.\" data-font=\"\" data-listid=\"20\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Operationalize it<\/span><\/b><span data-contrast=\"auto\"> :\u00a0 Use Fabric notebooks to turn insights into action: for example, generate friend-based movie recommendations using the relationships in your graph, and write results back to your Lakehouse\u00a0<\/span><\/li><li aria-setsize=\"-1\" data-leveltext=\"%1.\" data-font=\"\" data-listid=\"20\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"5\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Visualize it<\/span><\/b><span data-contrast=\"auto\"> : Bring your results to life in Power BI, either through direct connection to Neo4j AuraDB for real-time graph visuals or through your Lakehouse for governed analytics and dashboards.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ol><h4 aria-level=\"3\"><span data-contrast=\"none\">Start in Fabric<br \/><\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:160,&quot;335559739&quot;:80}\"><br \/><\/span><\/h4><p aria-level=\"4\"><b><i><span data-contrast=\"none\">Add the Neo4j Graph Workload<\/span><\/i><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:80,&quot;335559739&quot;:40}\">\u00a0<\/span><\/b><\/p><p><span data-contrast=\"auto\">In your Fabric workspace:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><ol><li aria-setsize=\"-1\" data-leveltext=\"%1.\" data-font=\"\" data-listid=\"8\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Click New \u2192 <\/span><a href=\"https:\/\/neo4j.com\/docs\/graph-intelligence\/\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">Neo4j Graph Workload<\/span><\/a><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><li aria-setsize=\"-1\" data-leveltext=\"%1.\" data-font=\"\" data-listid=\"8\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">Choose a name for your workload and confirm the region (it must match your Fabric capacity region).<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><li aria-setsize=\"-1\" data-leveltext=\"%1.\" data-font=\"\" data-listid=\"8\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">Fabric will connect to Neo4j AuraDB and automatically create a 14-day free trial of AuraDB Professional tied to your tenant.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><li aria-setsize=\"-1\" data-leveltext=\"%1.\" data-font=\"\" data-listid=\"8\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\"><span data-contrast=\"auto\">The setup finishes in less than a minute, and from then on, you have a fully functional Neo4j graph database integrated directly into your Fabric environment.<\/span><span data-ccp-props=\"{}\">\u00a0<br \/><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter size-large wp-image-12042\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture1-1024x574.png\" alt=\"\" width=\"1024\" height=\"574\" srcset=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture1-1024x574.png 1024w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture1-300x168.png 300w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture1-768x431.png 768w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture1.png 1305w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><br \/><\/span><\/li><\/ol><p><span data-contrast=\"auto\"><img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/svg\/1f4a1.svg\" alt=\"\ud83d\udca1\" \/><\/span> <b><i><span data-contrast=\"auto\">Tips:<\/span><\/i><\/b><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"9\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:768,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><i><span data-contrast=\"auto\">If you\u2019re deploying Neo4j in a new Fabric tenant, make sure an Azure SQL Server principal exists first. When we tried to enable the Neo4j Graph Workload in a newly created Fabric tenant, the setup failed with an \u201cunauthorized\u201d error.\u00a0 This happened because the tenant had no existing SQL Server principal, which Fabric relies on for secure authentication between Fabric and the managed AuraDB instance.<\/span><\/i>\u00a0<br \/><i><span data-contrast=\"auto\">Creating a basic Azure SQL Server resource immediately resolved the issue<\/span><\/i><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"9\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:768,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><i><span data-contrast=\"auto\">Don\u2019t forget to copy the password you get when creating the Neo4J instance, because you need it when connecting to the auraDB with notebook or PowerBI with default created user neo4j.\u00a0\u00a0<\/span><\/i><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><p><span data-ccp-props=\"{&quot;335559685&quot;:768}\"> <img decoding=\"async\" class=\"aligncenter size-large wp-image-12043\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture2-1024x518.png\" alt=\"\" width=\"1024\" height=\"518\" srcset=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture2-1024x518.png 1024w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture2-300x152.png 300w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture2-768x389.png 768w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture2.png 1031w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/span><\/p><p><span data-contrast=\"auto\">This instance is managed by Fabric but powered by Neo4j AuraDB \u2014 meaning you can query, visualize, and analyze your data without leaving Fabric.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p aria-level=\"4\"><b><i><span data-contrast=\"none\">Load and model movie data to lakehouse<\/span><\/i><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:80,&quot;335559739&quot;:40}\">\u00a0<\/span><\/b><\/p><p><span data-contrast=\"auto\">We created some dummy movie data in csv\u2019s.\u00a0 Downloadable at <\/span><a href=\"https:\/\/github.com\/DLandAConsulting\/Fabric-Neo4J-Graph-Intelligence\/tree\/main\/Data\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">Github<\/span><\/a><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">This data we <\/span><a href=\"https:\/\/learn.microsoft.com\/en-us\/fabric\/data-engineering\/get-started-csv-upload\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">loaded into delta tables<\/span><\/a><span data-contrast=\"auto\"> in a Lakehouse in our Workspace Demo<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-ccp-props=\"{}\"> <img decoding=\"async\" class=\"aligncenter size-full wp-image-12044\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture3.png\" alt=\"\" width=\"436\" height=\"550\" srcset=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture3.png 436w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture3-238x300.png 238w\" sizes=\"(max-width: 436px) 100vw, 436px\" \/><\/span><\/p><p><strong><i>Turn it into a Graph<br \/><\/i><\/strong><span data-contrast=\"auto\">First create a new item \u2018Neo4j Graph Dataset\u2019 in the workspace where you added the Neo4j graphic workload.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-ccp-props=\"{}\"> <img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-12045\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture4-1024x529.png\" alt=\"\" width=\"1024\" height=\"529\" srcset=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture4-1024x529.png 1024w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture4-300x155.png 300w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture4-768x397.png 768w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture4.png 1078w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/span><\/p><p><span data-ccp-props=\"{}\">\u00a0<\/span><span data-contrast=\"auto\">Select the lakehouse you created with the moviedata, and select all the tables in there.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-ccp-props=\"{}\"> <img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-12046\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture5-1024x662.png\" alt=\"\" width=\"1024\" height=\"662\" srcset=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture5-1024x662.png 1024w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture5-300x194.png 300w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture5-768x496.png 768w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture5.png 1063w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/span><\/p><p><span data-contrast=\"auto\">Using the GenAI-assisted graph modeling in the Fabric workload, the lakehouse tables gets transformed into a graph structure:\u00a0\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-ccp-props=\"{&quot;335551550&quot;:2,&quot;335551620&quot;:2}\"> <img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12047\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture6.png\" alt=\"\" width=\"570\" height=\"221\" srcset=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture6.png 570w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture6-300x116.png 300w\" sizes=\"(max-width: 570px) 100vw, 570px\" \/><\/span><\/p><p><span data-contrast=\"auto\">At this stage, the graph model has been generated, but the data has not yet been loaded into the AuraDB.\u00a0 You can still explore and refine the model before committing it.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">If you click on a node or a relationship, the panel on the right shows which lakehouse table it is mapped to and which properties have been assigned.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">This gives you a clear view of how your OneLake data will translate into a graph structure.<\/span><\/p><p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-12048\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture7-1024x543.png\" alt=\"\" width=\"1024\" height=\"543\" srcset=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture7-1024x543.png 1024w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture7-300x159.png 300w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture7-768x407.png 768w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture7.png 1346w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p><p><span data-ccp-props=\"{}\">\u00a0<\/span><span data-contrast=\"auto\">The interface allows you to extend the model before loading:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"10\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">To add a new node, hover over the edge of an existing node until a small plus (+) icon appears. Clicking it creates a new node in the diagram.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"10\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">To add a new relationship, drag the new node toward an existing one:\u00a0 a relationship line will appear automatically.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><p><span data-contrast=\"auto\">You can then define how this new node or relationship maps to your source data, ensuring that it connects to the correct tables and fields and that it represents a logical relationship within your data domain.\u00a0\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">For example,\u00a0 you can add Country (a field of table movie and user)\u00a0 as a node and FILMED-IN, LIVED IN\u00a0 as new relationships like showed in below picture:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-ccp-props=\"{}\"> <img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12049\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture8.png\" alt=\"\" width=\"873\" height=\"490\" srcset=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture8.png 873w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture8-300x168.png 300w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture8-768x431.png 768w\" sizes=\"(max-width: 873px) 100vw, 873px\" \/><\/span><\/p><p><span data-contrast=\"auto\">This editing step is useful if your data model evolves or if you want to include additional entities and relationships.\u00a0\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">To load the data into graphDB click on\u00a0 \u2018<\/span><b><span data-contrast=\"auto\">Transform to graph\u2019<\/span><\/b><span data-contrast=\"auto\">\u00a0\u00a0\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-ccp-props=\"{&quot;335551550&quot;:2,&quot;335551620&quot;:2}\"> <img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12050\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture9.png\" alt=\"\" width=\"488\" height=\"310\" srcset=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture9.png 488w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture9-300x191.png 300w\" sizes=\"(max-width: 488px) 100vw, 488px\" \/><\/span><\/p><h5><span data-contrast=\"none\"><br \/>Analyze and Enrich the Graph<\/span><\/h5><p aria-level=\"4\"><strong><i>Exploring Your Graph Visually<\/i>\u00a0<\/strong><\/p><p><span data-contrast=\"auto\">The Explore tool, powered by Neo4j Bloom,\u00a0 lets you interact with your graph data visually, directly inside the Fabric environment.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">Instead of writing queries, you can search for patterns, expand relationships, and style or filter nodes to uncover hidden connections.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">Explore turns your data into an interactive network view,\u00a0 surfacing the relationships you already suspect exist, and revealing new ones you may never have noticed.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">It\u2019s an intuitive way to see context: how users, movies, and actors connect, cluster, or influence each other.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">User manual of this functionality you find <\/span><a href=\"https:\/\/neo4j.com\/docs\/graph-intelligence\/user-guide\/explore\/\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">here<\/span><\/a><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-ccp-props=\"{}\"> <img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-12051\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture10-1024x512.png\" alt=\"\" width=\"1024\" height=\"512\" srcset=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture10-1024x512.png 1024w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture10-300x150.png 300w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture10-768x384.png 768w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture10.png 1379w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/span><\/p><p><strong><i>Querying Your Graph<\/i>\u00a0<\/strong><\/p><p><span data-contrast=\"auto\">You can also explore your data programmatically using Cypher, Neo4j\u2019s powerful graph query language.<\/span>\u00a0<br \/><span data-contrast=\"auto\">From the <\/span><a href=\"https:\/\/neo4j.com\/docs\/graph-intelligence\/user-guide\/query\/\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">Query button<\/span><\/a><span data-contrast=\"auto\"> in the Fabric ribbon, you can write, run, and visualize Cypher queries directly against your graph dataset.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">The Query tool focuses on three key capabilities:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"21\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Write and run Cypher queries to navigate, filter, and analyze your graph.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"21\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">View and write results back as new nodes or relationships<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"21\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">Visualize query results that include graph entities such as nodes, relationships, or full paths.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><p><span data-contrast=\"auto\">When your query returns graph structures, Fabric automatically switches to the Graph View, showing an interactive network of connected nodes and relationships.<\/span>\u00a0<br \/><span data-contrast=\"auto\">If your query only returns scalar values (like names, counts, or metrics), the tool will instead display the Raw or Table views for a clear, tabular result.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><h5><span data-contrast=\"none\">Example 1:\u00a0 Aggregated Query (Table View)<\/span><\/h5><p><span data-contrast=\"auto\">This query counts how many movies each actor has appeared in.<\/span>\u00a0<br \/><span data-contrast=\"auto\">Because it returns only scalar values, it will be displayed in Table View:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1872cdd elementor-widget elementor-widget-code-highlight\" data-id=\"1872cdd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>MATCH (p:Person)-[:ACTS_IN]->(m:Movie)\r\nRETURN p.name AS actor, count(m) AS movies\r\nORDER BY movies DESC\r\nLIMIT 50;\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c9199ce elementor-widget elementor-widget-text-editor\" data-id=\"c9199ce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><i><span data-contrast=\"auto\">What it shows:<\/span><\/i>\u00a0<br \/><span data-contrast=\"auto\">A ranked list of the 50 most active actors, including how many movies each has appeared in.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><h5><span data-ccp-props=\"{&quot;335551550&quot;:2,&quot;335551620&quot;:2}\"> <img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12055\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture11.png\" alt=\"\" width=\"526\" height=\"681\" srcset=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture11.png 526w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture11-232x300.png 232w\" sizes=\"(max-width: 526px) 100vw, 526px\" \/><\/span><\/h5><h5 aria-level=\"5\">\u00a0<\/h5><h5 aria-level=\"5\"><span data-contrast=\"none\">Example 2:\u00a0 Relationship Query (Graph View)<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:80,&quot;335559739&quot;:40}\">\u00a0<\/span><\/h5><p>\u00a0<\/p><p><span data-contrast=\"auto\">This query finds actors who have co-starred with Sam Monroe and visualizes the collaboration network.<\/span>\u00a0<br \/><span data-contrast=\"auto\">Because it returns both nodes <\/span><i><span data-contrast=\"auto\">and<\/span><\/i><span data-contrast=\"auto\"> relationships, the results appear in Graph View<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-005c915 elementor-widget elementor-widget-code-highlight\" data-id=\"005c915\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>MATCH (a:Person {name: \"Sam Monroe\"})-[r1:ACTS_IN]->(m:Movie)<-[r2:ACTS_IN]-(co:Person)\r\nRETURN a, r1, m, r2, co\r\nLIMIT 50;\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3f31a8e elementor-widget elementor-widget-text-editor\" data-id=\"3f31a8e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><i><span data-contrast=\"auto\">What it shows:<\/span><\/i>\u00a0<br \/><span data-contrast=\"auto\">An interactive graph where Sam Monroe is connected to the movies they\u2019ve acted in, and those movies link to all other actors who appeared alongside them.<\/span>\u00a0<br \/><span data-contrast=\"auto\">The visualization highlights collaboration patterns: for instance, which actors frequently co-star with Sam Monroe or which films serve as bridges between different acting circles.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-ccp-props=\"{}\"> <img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12056\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture12.png\" alt=\"\" width=\"608\" height=\"363\" srcset=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture12.png 608w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture12-300x179.png 300w\" sizes=\"(max-width: 608px) 100vw, 608px\" \/><\/span><\/p><p aria-level=\"4\"><strong><i>Using Graph Data Science on the Movies Graph<\/i>\u00a0<\/strong><\/p><p><span data-contrast=\"auto\">Once your movie data is in Neo4j, Graph Data Science (GDS) lets you go beyond exploration to measure influence, find communities, and surface similarity and\u00a0 write those insights back for searching, styling, and app logic.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">What you can do with the movie data for example:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"22\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Communities (Louvain \/ LPA):<\/span><\/b><span data-contrast=\"auto\"> discover actor \u201censembles\u201d that frequently co-star (genre crews, recurring director teams).<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"22\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Influence (PageRank \/ Betweenness):<\/span><\/b><span data-contrast=\"auto\"> find bridge actors who connect clusters (great for casting or promo targeting).<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"22\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Similarity (Node Similarity \/ Jaccard):<\/span><\/b><span data-contrast=\"auto\"> suggest new collaborations (\u201cpeople like you co-star with\u2026\u201d), or user\u2013user\/movie\u2013movie lookalikes.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"22\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Connectedness (WCC):<\/span><\/b><span data-contrast=\"auto\"> identify isolated subgraphs (e.g., niche festivals or regional cinema pockets).<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"22\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"5\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Paths (k-hop queries):<\/span><\/b><span data-contrast=\"auto\"> trace collaboration chains (\u201chow is Actor A connected to Actor B?\u201d).<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><p><span data-contrast=\"auto\">We tried the Louvain algorithm\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"25\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:1068,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">in visual explorer<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><li><span data-contrast=\"auto\">in query tool : <br \/><\/span><span data-contrast=\"auto\">&#8211; <\/span><span data-contrast=\"auto\">materialize a co-acting network in query tool<\/span><span data-ccp-props=\"{}\">\u00a0<br \/><\/span><span data-contrast=\"auto\">&#8211; run community detection<br \/><\/span><span data-contrast=\"auto\">&#8211; write properties back to the graph for use in Explorer, Cypher, or downstream notebooks.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li><\/ul><h5 aria-level=\"5\"><span data-contrast=\"none\">Explore Graph in visual explorer<br \/><br \/><\/span><\/h5><p><span data-contrast=\"auto\">Looking for communities of actors co-acting on a regular basis and give a different color to every community.\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-ccp-props=\"{}\"> <img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-12057\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture13-1024x500.png\" alt=\"\" width=\"1024\" height=\"500\" srcset=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture13-1024x500.png 1024w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture13-300x147.png 300w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture13-768x375.png 768w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture13.png 1339w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/span><\/p><p><span data-contrast=\"auto\">See <\/span><a href=\"https:\/\/neo4j.com\/docs\/bloom-user-guide\/current\/bloom-tutorial\/gds-integration\/\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">usermanual<\/span><\/a><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><h5><span data-contrast=\"none\">Materialize a Co-Acting Network in query tool<br \/><\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:80,&quot;335559739&quot;:40}\"><br \/><\/span><\/h5><p><span data-contrast=\"auto\">This query connects the dots between actors who have appeared in the same movie. It starts by finding every pair of people (p1, p2) who acted together in a movie (m).<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335557856&quot;:16777215,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">To avoid duplicates (like creating both A\u2192B and B\u2192A), it keeps only one direction:\u00a0 the person with the lower internal ID points to the one with the higher ID.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335557856&quot;:16777215,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">For each pair of co-actors, it collects:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335557856&quot;:16777215,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335557856&quot;:16777215,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"26\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">movies: the list of movies they share,<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335557856&quot;:16777215,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"26\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">weight: how many times they\u2019ve worked together,<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335557856&quot;:16777215,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/li><\/ul><ul><li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"26\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">firstYear and last year:\u00a0 when they first and last appeared together.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335557856&quot;:16777215,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/li><\/ul><p><span data-contrast=\"auto\">Then it creates or updates a relationship (:Person)-[:CO_ACTED_WITH]-&gt;(:Person) between them and stores those details as properties.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335557856&quot;:16777215,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">The result is a direct actor-to-actor network you can analyze, style, and visualize.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335557856&quot;:16777215,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><span data-contrast=\"auto\">Instead of hopping through movies each time, you now have a compact graph that directly shows collaboration strength between actors.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335557856&quot;:16777215,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-761769c elementor-widget elementor-widget-code-highlight\" data-id=\"761769c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>\/\/ Create one directed edge per pair (deterministic: lower id -> higher id)\r\nMATCH (m:Movie)<-[:ACTS_IN]-(p1:Person),\r\n(m)<-[:ACTS_IN]-(p2:Person)\r\nWHERE ElementId(p1) < ElementId(p2)\r\nWITH p1, p2, collect(m) AS movies, count(*) AS weight,\r\nmin(m.year) AS firstYear, max(m.year) AS lastYear\r\nMERGE (p1)-[r:CO_ACTED_WITH]->(p2)\r\nSET r.weight = weight,\r\nr.titles = [m IN movies | m.title],\r\nr.firstYear = firstYear,\r\nr.lastYear = lastYear;\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e1c82c6 elementor-widget elementor-widget-text-editor\" data-id=\"e1c82c6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h5 style=\"font-style: normal; color: #215972;\" aria-level=\"5\"><span data-contrast=\"none\">Project the Graph to GDS and Run Algorithms<br \/><\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:80,&quot;335559739&quot;:40}\"><br \/><\/span><\/h5><p style=\"font-size: 16px; font-style: normal; font-weight: 400;\"><span data-contrast=\"auto\">Project the Person layer with CO_ACTED_WITH as an undirected relationship and a weight property.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f2592e0 elementor-widget elementor-widget-code-highlight\" data-id=\"f2592e0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>CALL gds.graph.drop('coacting', false); \/\/ ignore if it doesn't exist\r\n\r\nCALL gds.graph.project(\r\n'coacting',\r\n'Person',\r\n{\r\nCO_ACTED_WITH: {\r\norientation: 'UNDIRECTED',\r\nproperties: 'weight'\r\n}\r\n}\r\n);\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1d5f323 elementor-widget elementor-widget-text-editor\" data-id=\"1d5f323\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h5><span data-contrast=\"none\">Community detection (Louvain) : write back to nodes<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:80,&quot;335559739&quot;:40}\"><br \/><\/span><\/h5>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0f68987 elementor-widget elementor-widget-code-highlight\" data-id=\"0f68987\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>CALL gds.louvain.write(\r\n'coacting',\r\n{\r\nrelationshipWeightProperty: 'weight',\r\nwriteProperty: 'communityId'\r\n}\r\n)\r\nYIELD communityCount, modularity, modularities;\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5bc3bf7 elementor-widget elementor-widget-text-editor\" data-id=\"5bc3bf7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span data-contrast=\"auto\">Now every (:Person) has a communityId, which you can use to color nodes in the visual Explorer or filter in Cypher\/Power BI.<\/span><span data-ccp-props=\"{}\">&nbsp;<\/span><\/p>\n<h5><span data-contrast=\"none\">Visualize and Query the Results<br><\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:80,&quot;335559739&quot;:40}\"><br><\/span><\/h5>\n<p><span data-contrast=\"auto\">With communityId and (optionally) pagerank written, you can immediately style and filter in <\/span><b><span data-contrast=\"auto\">Explore<\/span><\/b><span data-contrast=\"auto\"> (Bloom in Fabric):<\/span><span data-ccp-props=\"{}\">&nbsp;<\/span><\/p>\n<ul>\n<li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"23\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Color by<\/span><\/b><span data-contrast=\"auto\"> communityId to reveal ensembles.<\/span><span data-ccp-props=\"{}\">&nbsp;<\/span><\/li>\n<\/ul>\n<h5 aria-level=\"3\"><b><span data-contrast=\"none\">Operationalize it<\/span><\/b><span data-contrast=\"none\"> : Further use of GraphData by notebooks<p><\/p>\n<p><\/p><\/span><\/h5>\n<p><span data-contrast=\"auto\">A natural next step after running your graph algorithms is to turn those insights into data you can act on.<\/span><span data-ccp-props=\"{}\">&nbsp;<\/span><\/p>\n<p><span data-contrast=\"auto\">Take the example of movie recommendations. Using the social graph (User)-[:FOLLOWS]-&gt;(User)-[:RATES]-&gt;(Movie), you can compute which movies a user\u2019s trusted friends rate highly and generate a list of suggested titles they haven\u2019t seen yet.<\/span><span data-ccp-props=\"{}\">&nbsp;<\/span><\/p>\n<p><span data-contrast=\"auto\">Inside Neo4j, those results could be represented as new relationships: for instance, (u)-[:RECOMMENDED]-&gt;(m)&nbsp; or stored as node properties. This is great for exploratory graph analytics, where you want to keep the full connectivity context visible and keep refining your algorithms.<\/span><span data-ccp-props=\"{}\">&nbsp;<\/span><\/p>\n<p><span data-contrast=\"auto\">However, once the recommendations are ready for broader consumption, it\u2019s often more practical to write them back to Fabric Lakehouse:<\/span><span data-ccp-props=\"{}\">&nbsp;<\/span><\/p>\n<ul>\n<li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"27\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">In Fabric, you can easily join recommendations with other datasets (e.g., user profiles, watch history, marketing segments).<\/span><span data-ccp-props=\"{}\">&nbsp;<\/span><\/li>\n<\/ul>\n<ul>\n<li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"27\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">Data engineers can feed the results into pipelines, surfacing them to BI reports, dashboards, or personalization APIs.<\/span><span data-ccp-props=\"{}\">&nbsp;<\/span><\/li>\n<\/ul>\n<ul>\n<li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"27\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">You can version, govern, and share the derived data alongside other enterprise data assets.<\/span><span data-ccp-props=\"{}\">&nbsp;<\/span><\/li>\n<\/ul>\n<p><span data-contrast=\"auto\">In short, the graph gives you discovery,&nbsp; understanding patterns that are hard to express in SQL, while the Lakehouse gives you the ability to operationalize and reuse those insights across analytics, ML, and applications.<\/span><span data-ccp-props=\"{}\">&nbsp;<\/span><\/p>\n<p><span data-contrast=\"auto\">For example, after generating friend-based movie recommendations in Neo4j, you might export the top 5 titles per user to a Delta table in your Lakehouse. Power BI can then visualize them as \u201cRecommended for You\u201d dashboards, or Synapse ML can train a ranking model on top.<\/span><span data-ccp-props=\"{}\">&nbsp;<\/span><\/p>\n<p><strong><i>The Friends-Based Recommendation Notebook<\/i>&nbsp;<\/strong><\/p>\n<p><span data-contrast=\"auto\">To operationalize this logic, we built a Fabric notebook that computes <\/span><b><span data-contrast=\"auto\">Top 5 friend-based movie recommendations per user<\/span><\/b><span data-contrast=\"auto\"> and writes them as a structured table.<\/span><span data-ccp-props=\"{}\">&nbsp;<\/span><\/p>\n<ol>\n<li><strong>Connect to Neo4j AuraDB<\/strong><br>The notebook uses the official Neo4j Python driver to connect securely to your Aura instance.&nbsp; Use the password that you got when adding the Neo4J Graph workload.&nbsp;<\/li>\n<li><strong>Execute the Cypher logic<\/strong><br>For each user, it:\n<ul>\n<li>Finds friends and their rated movies.<\/li>\n<li>Excludes movies the user has already rated.<\/li>\n<li>Calculates the average friend rating and vote count.<\/li>\n<li>Returns the top 5 movies per user.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Transform with Pandas<\/strong><br>The results are collected into a DataFrame, ranked per user, and enriched with a rank column.<\/li>\n<li><strong>Write to Delta \/ Lakehouse<\/strong><br>Finally, the notebook saves the dataset to<br><strong>Tables\/neo4j_movies_recs_friends<\/strong>, either as a Delta table (in Fabric) or a Parquet file (if Spark isn\u2019t available):<\/li>\n<li>write_delta(recs, &#8220;neo4j_movies_recs_friends&#8221;)<\/li>\n<\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1a19333 elementor-widget elementor-widget-code-highlight\" data-id=\"1a19333\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp># Welcome to your new notebook\r\n# Type here in the cell editor to add code!\r\n# =============================\r\n# Friends-based recommendations (RATES \/ ACTS-IN)\r\n# Writes: Tables\/neo4j_movies_recs_friends\r\n# =============================\r\n\r\n%pip install --quiet neo4j~=5.28.0 pandas~=2.2.2\r\n\r\nfrom neo4j import GraphDatabase\r\nimport pandas as pd\r\n\r\n# ---- AuraDB config ----\r\nAURA_URI = \"neo4j+s:\/\/<YOURINSTANCE>.databases.neo4j.io\"\r\nAURA_USER = \"neo4j\"\r\nAURA_PASSWORD = \"<YOURPASSWORD>\"\r\nWRITE_MODE = \"overwrite\"   # or \"append\"\r\n\r\n# If your data model uses different labels\/properties, adjust here:\r\n# Model-specific names (adjust if needed)\r\nUSER_LABEL         = \"User\"\r\nMOVIE_LABEL        = \"Movie\"\r\nFOLLOWS_REL        = \"FOLLOWS\"\r\nRATES_REL          = \"RATES\"     # per your graph\r\nRATING_PROPERTY    = \"rating\"    # property on RATES\r\nTOP_N_PER_USER     = 5\r\n\r\ndef run_df(query: str, params: dict | None = None) -> pd.DataFrame:\r\n    with GraphDatabase.driver(AURA_URI, auth=(AURA_USER, AURA_PASSWORD)) as driver:\r\n        with driver.session() as session:\r\n            return pd.DataFrame(session.run(query, params or {}).data())\r\n\r\ndef write_delta(df: pd.DataFrame, table_path: str, mode: str = \"overwrite\"):\r\n    if df is None or df.empty:\r\n        print(f\"[WARN] No data for {table_path}; nothing written.\")\r\n        return\r\n    try:\r\n        spark  # Fabric Spark available?\r\n        sdf = spark.createDataFrame(df)\r\n        sdf.write.format(\"delta\").mode(mode).save(f\"Tables\/{table_path}\")\r\n        print(f\"[OK] Wrote Delta: Tables\/{table_path}  (rows: {len(df)})\")\r\n    except NameError:\r\n        fp = f\"\/mnt\/data\/{table_path}.parquet\"\r\n        df.to_parquet(fp, index=False)\r\n        print(f\"[OK] No Spark; wrote Parquet: {fp}  (rows: {len(df)})\")\r\n\r\n# Connectivity (optional)\r\nver = run_df(\"CALL dbms.components() YIELD name, versions RETURN versions[0] AS version\")\r\nprint(f\"[OK] Connected to Neo4j {ver.iloc[0]['version'] if not ver.empty else 'unknown'}\")\r\n\r\n# ---- Cypher: variable-scoped subquery without returning `u` ----\r\ncypher = f\"\"\"\r\nMATCH (u:{USER_LABEL})\r\nCALL (u) {{\r\n  WITH u\r\n  MATCH (u)-[:{FOLLOWS_REL}]->(f:{USER_LABEL})-[r:{RATES_REL}]->(m:{MOVIE_LABEL})\r\n  WHERE NOT (u)-[:{RATES_REL}]->(m)\r\n  WITH m,\r\n       avg(coalesce(r.{RATING_PROPERTY}, 0.0)) AS score,\r\n       count(*) AS votes\r\n  ORDER BY score DESC, votes DESC, m.title ASC\r\n  LIMIT $top\r\n  RETURN m.title AS movie, score, votes\r\n}}\r\nRETURN u.name AS user, movie, score, votes\r\nORDER BY user ASC, score DESC, votes DESC, movie ASC\r\n\"\"\"\r\n\r\nrecs = run_df(cypher, {\"top\": TOP_N_PER_USER})\r\n\r\n# Rank per user (1..TOP_N_PER_USER)\r\nif not recs.empty:\r\n    recs[\"rank\"] = recs.groupby(\"user\", sort=False).cumcount() + 1\r\n\r\nwrite_delta(recs, \"neo4j_movies_recs_friends\")\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-592388e elementor-widget elementor-widget-text-editor\" data-id=\"592388e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h5 aria-level=\"3\"><span data-contrast=\"none\">Visualizing Graph Insights in Power BI<br \/><\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:160,&quot;335559739&quot;:80}\"><br \/><\/span><\/h5><p><span data-contrast=\"auto\">Power BI can connect straight to Neo4j AuraDB using the Neo4j BI Connector (ODBC\/JDBC).<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">This connector translates Cypher query results into a virtual SQL layer, allowing Power BI to query graph data as if it were relational,\u00a0 while keeping the speed and flexibility of graph traversal.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">Install the Neo4j BI Connector from the <\/span><a href=\"https:\/\/neo4j.com\/download-center\/bi-connector\/\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">Neo4j Download Center<\/span><\/a><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">The authentication is done with the default user <\/span><b><span data-contrast=\"auto\">neo4j <\/span><\/b><span data-contrast=\"auto\">and <\/span><b><span data-contrast=\"auto\">the password that you copied<\/span><\/b><span data-contrast=\"auto\"> when you first created a Neo4j graphDB<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-ccp-props=\"{}\"> <img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12064\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture14.png\" alt=\"\" width=\"638\" height=\"790\" srcset=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture14.png 638w, https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/Picture14-242x300.png 242w\" sizes=\"(max-width: 638px) 100vw, 638px\" \/><\/span><\/p><p><span data-contrast=\"auto\">Instantly build dashboards from graph views, such as actor\u2013movie networks, influencer rankings, or similarity clusters.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-ccp-props=\"{}\">\u00a0<\/span><span data-contrast=\"auto\"><img loading=\"lazy\" decoding=\"async\" class=\"\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/svg\/1f449.svg\" alt=\"\ud83d\udc49\" width=\"18\" height=\"18\" \/><\/span><span data-contrast=\"auto\"> This setup bypasses the Fabric Graph Workload UI for now, connecting directly to the AuraDB instance behind it.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">It\u2019s stable, production-ready, and ideal when you want interactive Power BI dashboards on graph data.\u00a0\u00a0\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9212258 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"9212258\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aa35714 elementor-widget elementor-widget-heading\" data-id=\"aa35714\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">ABOUT THE AUTHOR<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8d15bb1 elementor-widget elementor-widget-author-box\" data-id=\"8d15bb1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"author-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-author-box\">\n\t\t\t\t\t\t\t<a href=\"https:\/\/www.linkedin.com\/in\/an-de-lafonteyne-2600703\/\" class=\"elementor-author-box__avatar\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2022\/09\/People-AnDeLafonteyne-300x300.jpeg\" alt=\"Picture of An De Lafonteyne\" loading=\"lazy\">\n\t\t\t\t<\/a>\n\t\t\t\n\t\t\t<div class=\"elementor-author-box__text\">\n\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.linkedin.com\/in\/an-de-lafonteyne-2600703\/\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t<h4 class=\"elementor-author-box__name\">\n\t\t\t\t\t\t\tAn De Lafonteyne\t\t\t\t\t\t<\/h4>\n\t\t\t\t\t<\/a>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-author-box__bio\">\n\t\t\t\t\t\t<p>Managing Partner BE-Flanders<\/p>\n\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d4671d7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d4671d7\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6000948\" data-id=\"6000948\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b93f6e1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b93f6e1\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-98eb86b\" data-id=\"98eb86b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Microsoft Fabric unifie le data engineering, l'analytique et l'AI \u00e0 travers l'\u00e9cosyst\u00e8me Microsoft.<br \/>\nMais de nombreux probl\u00e8mes m\u00e9tier comme la d\u00e9tection de fraude, le customer 360 ou l'optimisation de la supply chain ne d\u00e9pendent pas de points de donn\u00e9es isol\u00e9s, mais de la fa\u00e7on dont ces points se connectent. <\/p>","protected":false},"author":16,"featured_media":12083,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","footnotes":""},"categories":[5,71,13],"tags":[25,70,58],"class_list":["post-12037","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles","category-fabric","category-technology","tag-data-visualisation","tag-fabric","tag-power-bi"],"acf":[],"uagb_featured_image_src":{"full":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/blogbanner.png",2240,1260,false],"thumbnail":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/blogbanner-150x150.png",150,150,true],"medium":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/blogbanner-300x169.png",300,169,true],"medium_large":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/blogbanner-768x432.png",768,432,true],"large":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/blogbanner-1024x576.png",1024,576,true],"1536x1536":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/blogbanner-1536x864.png",1536,864,true],"2048x2048":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/blogbanner-2048x1152.png",2048,1152,true],"trp-custom-language-flag":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2025\/11\/blogbanner.png",18,10,false]},"uagb_author_info":{"display_name":"Anneli Tomingas","author_link":"https:\/\/sparkle.consulting\/fr\/author\/anneli\/"},"uagb_comment_info":0,"uagb_excerpt":"Microsoft Fabric unifies data engineering, analytics, and AI across the Microsoft ecosystem. But many business problems like fraud detection, customer 360, supply-chain optimization, \u2026 depend not on single data points, but on how those points connect.","_links":{"self":[{"href":"https:\/\/sparkle.consulting\/fr\/wp-json\/wp\/v2\/posts\/12037","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sparkle.consulting\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sparkle.consulting\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sparkle.consulting\/fr\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/sparkle.consulting\/fr\/wp-json\/wp\/v2\/comments?post=12037"}],"version-history":[{"count":35,"href":"https:\/\/sparkle.consulting\/fr\/wp-json\/wp\/v2\/posts\/12037\/revisions"}],"predecessor-version":[{"id":13666,"href":"https:\/\/sparkle.consulting\/fr\/wp-json\/wp\/v2\/posts\/12037\/revisions\/13666"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sparkle.consulting\/fr\/wp-json\/wp\/v2\/media\/12083"}],"wp:attachment":[{"href":"https:\/\/sparkle.consulting\/fr\/wp-json\/wp\/v2\/media?parent=12037"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sparkle.consulting\/fr\/wp-json\/wp\/v2\/categories?post=12037"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sparkle.consulting\/fr\/wp-json\/wp\/v2\/tags?post=12037"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}