Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 如何使用with子句正确携带值_Neo4j_Cypher - Fatal编程技术网

Neo4j 如何使用with子句正确携带值

Neo4j 如何使用with子句正确携带值,neo4j,cypher,Neo4j,Cypher,我有一个很长的密码查询,我从文件中加载记录并尝试创建节点和关系。文件中可能不存在某些值,因此节点和边的创建必须是有条件的 我已经创建了查询的不同部分,并使用WITH语句,希望将对节点的引用传递给需要它们来创建边的后续语句 // Mandatory Nodes MERGE (session:Session{sessionId:"_d6648bbf-f747-42e5-a9b0-adb2cb0aea66-F3AC584AA3E2969240F3E9B285F23C03"}) ON CREATE

我有一个很长的密码查询,我从文件中加载记录并尝试创建节点和关系。文件中可能不存在某些值,因此节点和边的创建必须是有条件的

我已经创建了查询的不同部分,并使用WITH语句,希望将对节点的引用传递给需要它们来创建边的后续语句

// Mandatory Nodes
MERGE (session:Session{sessionId:"_d6648bbf-f747-42e5-a9b0-adb2cb0aea66-F3AC584AA3E2969240F3E9B285F23C03"})
  ON CREATE SET session.ipAddress="207.54.58.254"
MERGE (user:User {UserId:"dfd75378-a6df-4101-aeb7-fc2f866a75cc"})
MERGE (environment:Environment{server:"qac-portal.qac.awsdev.acme.com", type:"MT"})
MERGE (browser:Browser{type:"Chrome"})
  ON CREATE SET browser.version="70"
MERGE (os:OS{name:"Win10"})
  ON CREATE SET os.version="Win10"
MERGE (device:Device{type:"10.0"})
MERGE (city:City{name:"Atlanta"})
MERGE (country:Country{name:"United States", code:"US"})
MERGE (geoLocation:GeoLocation{latitude:"33.8274", longitude:"-84.3244"})
MERGE (tenant:Tenant{TenantId:"TAMTA1AT2_AX1"})

// Edges between mandatory nodes. 
MERGE (session)-[:ASSIGNED_TO]->(user)
MERGE (session)-[:STARTED_AT]->(geoLocation)
MERGE (geoLocation)-[:COORDINATES_FOR]->(city)
MERGE (city)-[:LOCATED_IN]->(country)
MERGE (session)-[:CONNECTED_WITH]->(browser)
MERGE (browser)-[:RUNS_ON]->(device)
MERGE (browser)-[:SUPPORTS]->(os)
MERGE (os)-[:OPERATES]->(device)
MERGE (environment)-[:HOSTS]->(tenant)

WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant

// Optional nodes
CALL apoc.do.when(("TAMTA1AT2_AX1" <> ''),
"MERGE (company:Company{name:'TAMTA1AT2_AX1'})",
'', {})
YIELD value AS company

WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, company
CALL apoc.do.when(("" <> ''),
"MERGE (cloudSuite:CloudSuite{name:''})",
'', {})
YIELD value AS cloudSuite

WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, company, cloudSuite
CALL apoc.do.when(('sample-hr' <> ''),
"MERGE (application:Application{name:'sample-hr'})",
'', {})
YIELD value AS application

WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, company, cloudSuite, application
CALL apoc.do.when(('lid://acme.sample-hr.ng1' <> ''),
"MERGE (applicationInstance:ApplicationInstance{applicationId:'lid://acme.sample-hr.ng1'})",
'', {})
YIELD value AS applicationInstance

WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, company, cloudSuite, application, applicationInstance
CALL apoc.do.when(('sample-hr_form_Employee_LRCMyGoalsForm' <> ''),
"MERGE (screen:Screen{name:'sample-hr_form_Employee_LRCMyGoalsForm'})",
'', {})
YIELD value AS screen

WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, company, cloudSuite, application, applicationInstance, screen
CALL apoc.do.when(('sample-hr_form_Employee_LRCMyGoalsForm.ng1' <> '' ),
"MERGE (screenInstance:ScreenInstance{screenId:'sample-hr_form_Employee_LRCMyGoalsForm.ng1'})",
'', {})
YIELD value AS screenInstance

WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, company, cloudSuite, application, applicationInstance, screen, screenInstance
CALL apoc.do.when(((company IS NOT NULL) AND (tenant IS NOT NULL)),
'MERGE (company)-[r:OWNS]->(tenant)', '',{company:company, tenant:tenant}) YIELD value AS owns

// Edges between optional nodes
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant,
     company, cloudSuite, applicationInstance, application, screen, screenInstance
CALL apoc.do.when((("Accessed" = "Accessed") AND (screen IS NOT NULL) AND (screenInstance IS NOT NULL)),
'MERGE (screenInstance)-[r:INSTANCE_OF]->(screen)', '',{screen:screen, screenInstance:screenInstance}) YIELD value AS instanceOf

WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, company, cloudSuite, application, applicationInstance, screen, screenInstance
CALL apoc.do.when(((application IS NOT NULL) AND (applicationInstance IS NOT NULL)) AND ("Accessed" IN ["Accessed", "Launched", "Entered", "Exited"]),
'MERGE (application)-[r:DEPLOYS]->(applicationInstance)', '',{application:application, applicationInstance:applicationInstance}) YIELD value AS deploys

WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, company, cloudSuite, application, applicationInstance, screen, screenInstance
CALL apoc.do.when(((application IS NOT NULL) AND (cloudSuite IS NOT NULL)) AND ("Accessed" IN ["Accessed", "Launched", "Entered", "Exited"]),
'MERGE (application)-[r:BELONGS_TO]->(cloudSuite)' , '',{application:application, cloudSuite:cloudSuite}) YIELD value AS belongs_to

WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, company, cloudSuite, application, applicationInstance, screen, screenInstance
CALL apoc.do.when(((application IS NOT NULL) AND (browser IS NOT NULL)) AND ("Accessed" IN ["Accessed", "Launched", "Entered", "Exited"]),
'MERGE (application)-[r:COMPATIBLE_WITH]->(browser)', '',{application:application, browser:browser}) YIELD value AS compatible_with

WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, company, cloudSuite, application, applicationInstance, screen, screenInstance
CALL apoc.do.when((("Accessed" = "Accessed") AND (screenInstance IS NOT NULL) AND (applicationInstance IS NOT NULL)),
'MERGE (screenInstance)-[r:VIEWED_ON]->(applicationInstance)', '',{screenInstance:screenInstance, applicationInstance:applicationInstance}) YIELD value AS viewed_on

WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, company, cloudSuite, application, applicationInstance, screen, screenInstance
CALL apoc.do.when((("Accessed" = "Accessed") AND (application IS NOT NULL) AND (screen IS NOT NULL)),
'MERGE (application)-[:IMPLEMENTS]->(screen)', '',{application:application, screen:screen}) YIELD value AS implements

WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, company, cloudSuite, application, applicationInstance, screen, screenInstance
CALL apoc.do.when(((tenant IS NOT NULL) AND (application IS NOT NULL)),
'MERGE (tenant)-[r:PROVISIONED]->(application)', '',{tenant:tenant, application:application}) YIELD value AS provisioned

WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, company, cloudSuite, application, applicationInstance, screen, screenInstance
CALL apoc.do.case(
[ "Accessed" = "Logged In", "MERGE (session)-[:LOGGED_IN {start='2018-11-06 11:39:10'}]->(applicationInstance)",
  "Accessed" = "Logged Out", "MERGE (session)-[:LOGGED_OUT {end='2018-11-06 11:39:10'}]->(tenant)",
  "Accessed" = "Time Out", "MERGE (session)-[:TIMED_OUT {timeout='2018-11-06 11:39:10'}]->(tenant)",
  "Accessed" = "Accessed", 'MERGE (session)-[:ACCESSED]->(screenInstance)',
  "Accessed" = "Launched", 'MERGE (session)-[:LAUNCHED]->(applicationInstance)',
  "Accessed" = "Entered", 'MERGE (session)-[:ENTERED]->(applicationInstance)',
  "Accessed" = "Exited", 'MERGE (session)-[:EXITED]->(applicationInstance)' ],
'',
{applicationInstance:applicationInstance, screenInstance:screenInstance, session:session, tenant:tenant})
YIELD value AS action
RETURN *
编辑2
MERGE(会话:会话{sessionId:“\u d6648bbf-f747-42e5-a9b0-adb2cb0aea66-F3AC584AA3E2969240F3E9B285F23C03”)
在创建集合会话时。ipAddress=“207.54.58.254”
会期
合并(用户:用户{UserId:“dfd75378-a6df-4101-aeb7-fc2f866a75cc”})
使用会话,用户
合并(环境:环境{server:“xxx.yyy.zzz.com”,键入:“MT”})
使用会话、用户、环境
合并(浏览器:浏览器{type:“Chrome”})
在创建集浏览器时。version=“70”
使用会话、用户、环境、浏览器
合并(os:os{name:“Win10”})
在创建集os.version=“Win10”时
使用会话、用户、环境、浏览器、操作系统
合并(设备:设备{type:“10.0”})
使用会话、用户、环境、浏览器、操作系统、设备
合并(城市:城市{名称:“亚特兰大”})
使用会话、用户、环境、浏览器、操作系统、设备、城市
合并(国家:国家{名称:“美国”,代码:“美国”})
具有会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区
合并(地理位置:地理位置{纬度:“33.8274”,经度:“-84.3244”})
使用会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置
合并(租户:租户{TenantId:“TAMTA1AT2_AX1”})
使用会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户
合并(会话)-[:分配给]->(用户)
使用会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户
合并(会话)-[:开始于]->(地理位置)
使用会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户
合并(地理位置)-[:坐标\u FOR]->(城市)
使用会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户
合并(城市)-[:位于]->(国家)
使用会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户
合并(会话)-[:已连接]->(浏览器)
使用会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户
合并(浏览器)-[:在]->(设备上运行)
使用会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户
合并(浏览器)-[:支持]->(操作系统)
使用会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户
合并(操作系统)-[:操作]->(设备)
使用会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户
合并(环境)-[:主机]->(租户)
使用会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户
//创建可选节点。
调用apoc.do.when('sfgsfgn-ghr''),
“合并(应用程序:应用程序{name:'afasdfn-ghr'})返回应用程序”,
'', {})
屈服值及其应用
将会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户、mapApplication.application作为应用程序
当((“TAMTA1AT2_AX1”)时,呼叫apoc.do,
“合并(公司:公司{名称:'TAMTA1AT2_AX1'})退货公司”,
'', {})
作为公司的收益率
将会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户、应用程序、mapCompany.company作为公司
当((“”)时呼叫apoc.do,
“合并(cloudSuite:cloudSuite{name:''})返回cloudSuite”,
'', {})
作为mapCloudSuite的收益值
将会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户、应用程序、公司、mapCloudSuite.cloudSuite作为cloudSuite
什么时候打电话给apoc.dolid://afasfafdsghr.ng1'  ''),
“合并(applicationInstance:applicationInstance{applicationId:”lid://gfsgsr.ng1“})返回应用程序实例”,
'', {})
收益率
会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户、应用程序、公司、cloudSuite、value.applicationInstance作为applicationInstance
当(‘lawson-ghr表格’、‘员工表格’、‘LRCMyGoalsForm’)时,请致电apoc.do.when(‘lawson-ghr表格’、‘员工表格’),
“合并(屏幕:屏幕{name:'lafsafsdfn-ghr_form_Employee_LRCMyGoalsForm'})返回屏幕”,
'', {})
收益率
将会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户、应用程序、公司、cloudSuite、applicationInstance、value.screen作为屏幕
呼叫apoc.do.when('sfgfsg-ghr_form_Employee_LRCMyGoalsForm.ng1''),
“合并(screenInstance:screenInstance{screenId:'sgfdn-ghr_form_Employee_LRCMyGoalsForm.ng1')返回screenInstance”,
'', {})
收益率
将会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户、应用程序、公司、cloudSuite、applicationInstance、screen、value.screenInstance作为screenInstance
//为可选节点创建边
当(((公司不为空)和(租户不为空))时,调用apoc.do,
'与公司,承租人合并(公司)-[r:OWNS]->(承租人)',{company:company,承租人:承租人})产生作为拥有人的价值
使用会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户、应用程序、公司、cloudSuite、应用程序实例、屏幕、屏幕实例
调用apoc.do.when(((“已访问”=“已访问”)和(屏幕不为空)以及(屏幕实例不为空)),
'与screen,screenInstance合并(screenInstance)-[i:INSTANCE\u OF]->(screen)',{screenInstance:screenInstance,screen:screen}将值作为
使用会话、用户、环境、浏览器、操作系统、设备、城市、国家/地区、地理位置、租户、应用程序、公司、cloudSuite、应用程序实例、屏幕、屏幕实例
调用apoc.do.when(((应用程序不为NULL)和(应用程序实例不为NULL))和(“在[“已访问”、“已启动”、“已输入”、“已退出”]中已访问”),
'使用application,applicationInstance合并(application)-[d:DEPLOYS]->(applicationInstance)',',{application:application,applicationInstance:applicationInstance}在部署时产生值
具有会话、用户、环境、浏览器、操作系统、设备、城市、c
CALL apoc.do.when(('xxxForm.ng1' <> '' ),
"MERGE (screenInstance:ScreenInstance{screenId:'ljhgjhn-gjhhkjhkhr_form_Employee_LRCMyGoalsForm.ng1'}) RETURN screenInstance",
'', {})
YIELD value
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, value.application as application, value.company as company, value.cloudSuite as cloudSuite, value.applicationInstance as applicationInstance, value.screen as screen, value.screenInstance as screenInstance
CALL apoc.do.when(((company IS NOT NULL) AND (tenant IS NOT NULL)),
'MERGE (company)-[r:OWNS]->(tenant) RETURN company, tenant', '',{company:company, tenant:tenant}) YIELD value
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, value.application as application, value.company as company, value.cloudSuite as cloudSuite, value.applicationInstance as applicationInstance, value.screen as screen, value.screenInstance as screenInstance

CALL apoc.do.when((("Accessed" = "Accessed") AND (screen IS NOT NULL) AND (screenInstance IS NOT NULL)),
'MERGE (screenInstance)-[r:INSTANCE_OF]->(screen) RETURN screenInstance, screen', '',{screen:screen, screenInstance:screenInstance}) YIELD value
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, value.application as application, value.company as company, value.cloudSuite as cloudSuite, value.applicationInstance as applicationInstance, value.screen as screen, value.screenInstance as screenInstance
MERGE (session:Session{sessionId:"_d6648bbf-f747-42e5-a9b0-adb2cb0aea66-F3AC584AA3E2969240F3E9B285F23C03"})
  ON CREATE SET session.ipAddress="207.54.58.254"
WITH session

MERGE (user:User {UserId:"dfd75378-a6df-4101-aeb7-fc2f866a75cc"})
WITH session, user

MERGE (environment:Environment{server:"xxx.yyy.zzz.com", type:"MT"})
WITH session, user, environment

MERGE (browser:Browser{type:"Chrome"})
  ON CREATE SET browser.version="70"
WITH session, user, environment, browser

MERGE (os:OS{name:"Win10"})
  ON CREATE SET os.version="Win10"
WITH session, user, environment, browser, os

MERGE (device:Device{type:"10.0"})
WITH session, user, environment, browser, os, device

MERGE (city:City{name:"Atlanta"})
WITH session, user, environment, browser, os, device, city

MERGE (country:Country{name:"United States", code:"US"})
WITH session, user, environment, browser, os, device, city, country

MERGE (geoLocation:GeoLocation{latitude:"33.8274", longitude:"-84.3244"})
WITH session, user, environment, browser, os, device, city, country, geoLocation

MERGE (tenant:Tenant{TenantId:"TAMTA1AT2_AX1"})
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant

MERGE (session)-[:ASSIGNED_TO]->(user)
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant

MERGE (session)-[:STARTED_AT]->(geoLocation)
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant

MERGE (geoLocation)-[:COORDINATES_FOR]->(city)
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant

MERGE (city)-[:LOCATED_IN]->(country)
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant

MERGE (session)-[:CONNECTED_WITH]->(browser)
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant

MERGE (browser)-[:RUNS_ON]->(device)
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant

MERGE (browser)-[:SUPPORTS]->(os)
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant

MERGE (os)-[:OPERATES]->(device)
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant

MERGE (environment)-[:HOSTS]->(tenant)
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant

// Creating Optional nodes.
CALL apoc.do.when(('sfgsfgn-ghr' <> ''),
"MERGE (application:Application{name:'afasdfn-ghr'}) RETURN application",
'', {})
YIELD value AS mapApplication
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, mapApplication.application as application

CALL apoc.do.when(("TAMTA1AT2_AX1" <> ''),
"MERGE (company:Company{name:'TAMTA1AT2_AX1'}) RETURN company",
'', {})
YIELD value AS mapCompany
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, application, mapCompany.company as company

CALL apoc.do.when(("" <> ''),
"MERGE (cloudSuite:CloudSuite{name:''}) RETURN cloudSuite",
'', {})
YIELD value AS mapCloudSuite
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, application, company, mapCloudSuite.cloudSuite as cloudSuite

CALL apoc.do.when(('lid://afasfafdsghr.ng1' <> ''),
"MERGE (applicationInstance:ApplicationInstance{applicationId:'lid://gfsgsr.ng1'}) RETURN applicationInstance",
'', {})
YIELD value
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, application, company, cloudSuite, value.applicationInstance as applicationInstance

CALL apoc.do.when(('lawson-ghr_form_Employee_LRCMyGoalsForm' <> ''),
"MERGE (screen:Screen{name:'lafsafsdfn-ghr_form_Employee_LRCMyGoalsForm'}) RETURN screen",
'', {})
YIELD value
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, application, company, cloudSuite, applicationInstance, value.screen as screen

CALL apoc.do.when(('sfgfsg-ghr_form_Employee_LRCMyGoalsForm.ng1' <> '' ),
"MERGE (screenInstance:ScreenInstance{screenId:'sgfdn-ghr_form_Employee_LRCMyGoalsForm.ng1'}) RETURN screenInstance",
'', {})
YIELD value
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, application, company, cloudSuite, applicationInstance, screen, value.screenInstance as screenInstance

// Creating Edges for optional nodes
CALL apoc.do.when(((company IS NOT NULL) AND (tenant IS NOT NULL)),
'WITH company, tenant MERGE (company)-[r:OWNS]->(tenant)', '',{company:company, tenant:tenant}) YIELD value as owns
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, application, company, cloudSuite, applicationInstance, screen, screenInstance

CALL apoc.do.when((("Accessed" = "Accessed") AND (screen IS NOT NULL) AND (screenInstance IS NOT NULL)),
'WITH screen, screenInstance MERGE (screenInstance)-[i:INSTANCE_OF]->(screen)', '',{screenInstance:screenInstance, screen:screen}) YIELD value AS instance_of
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, application, company, cloudSuite, applicationInstance, screen, screenInstance

CALL apoc.do.when(((application IS NOT NULL) AND (applicationInstance IS NOT NULL)) AND ("Accessed" IN ["Accessed", "Launched", "Entered", "Exited"]),
'WITH application, applicationInstance MERGE (application)-[d:DEPLOYS]->(applicationInstance)', '',{application:application, applicationInstance:applicationInstance}) YIELD value AS deploys
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, application, company, cloudSuite, applicationInstance, screen, screenInstance

CALL apoc.do.when(((application IS NOT NULL) AND (cloudSuite IS NOT NULL)) AND ("Accessed" IN ["Accessed", "Launched", "Entered", "Exited"]),
'WITH application, cloudSuite MERGE (application)-[b:BELONGS_TO]->(cloudSuite)' , '',{application:application, cloudSuite:cloudSuite}) YIELD value AS belongs_to
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, application, company, cloudSuite, applicationInstance, screen, screenInstance

CALL apoc.do.when(((application IS NOT NULL) AND (browser IS NOT NULL)) AND ("Accessed" IN ["Accessed", "Launched", "Entered", "Exited"]),
"WITH application, browser MERGE (application)-[c:COMPATIBLE_WITH]->(browser)", '',{application:application, browser:browser}) YIELD value AS compatible_with
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, application, company, cloudSuite, applicationInstance, screen, screenInstance

CALL apoc.do.when((("Accessed" = "Accessed") AND (applicationInstance IS NOT NULL)),
"WITH screenInstance, applicationInstance MERGE (screenInstance)-[v:VIEWED_ON]->(applicationInstance)", '',{screenInstance:screenInstance, applicationInstance:applicationInstance}) YIELD value AS viewed_on
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, application, company, cloudSuite, applicationInstance, screen, screenInstance

CALL apoc.do.when((("Accessed" = "Accessed") AND (application IS NOT NULL) ),
"WITH application, screen MERGE (application)-[i:IMPLEMENTS]->(screen)", '',{application:application, screen:screen}) YIELD value AS implements
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, application, company, cloudSuite, applicationInstance, screen, screenInstance

CALL apoc.do.when(((tenant IS NOT NULL) AND (application IS NOT NULL)),
'WITH tenant, application MERGE (tenant)-[r:PROVISIONED]->(application)', '',{tenant:tenant, application:application}) YIELD value AS provisioned
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, application, company, cloudSuite, applicationInstance, screen, screenInstance

CALL apoc.do.case(
[ "Accessed" = "Logged In", "MERGE (session)-[:LOGGED_IN {start='2018-11-06 11:39:10'}]->(applicationInstance)",
  "Accessed" = "Logged Out", "MERGE (session)-[:LOGGED_OUT {end='2018-11-06 11:39:10'}]->(tenant)",
  "Accessed" = "Time Out", "MERGE (session)-[:TIMED_OUT {timeout='2018-11-06 11:39:10'}]->(tenant)",
  "Accessed" = "Accessed", 'MERGE (session)-[:ACCESSED]->(screenInstance)',
  "Accessed" = "Launched", 'MERGE (session)-[:LAUNCHED]->(applicationInstance)',
  "Accessed" = "Entered", 'MERGE (session)-[:ENTERED]->(applicationInstance)',
  "Accessed" = "Exited", 'MERGE (session)-[:EXITED]->(applicationInstance)' ],
'',
{applicationInstance:applicationInstance, session:session, tenant:tenant})
YIELD value
RETURN *
CALL apoc.do.when(("" <> ''),
"MERGE (cloudSuite:CloudSuite{name:''}) RETURN cloudSuite",
'', {})
YIELD value
WITH session, user, environment, browser, os, device, city, country, geoLocation, tenant, company, value.cloudSuite as cloudSuite, application