CALL apoc.periodic.repeat( 'chartmetricParticipantIngest', ' CALL apoc.cypher.runMany( \' CALL apoc.log.info("Starting run of chartmetricParticipantIngest at %s", [datetime()]); CALL apoc.periodic.iterate( " WITH \" SELECT cma.id AS cm_artist_id, cma.name, cma.image_url, sa.spotify_artist_id, ia.itunes_artist_id FROM chartmetric.raw_data.cm_artist cma JOIN chartmetric.raw_data.spotify_artist sa ON sa.cm_artist = cma.id LEFT JOIN chartmetric.raw_data.itunes_artist ia ON ia.cm_artist = cma.id WHERE cma.is_duplicate = FALSE AND sa.spotify_artist_id IS NOT NULL \" AS sql CALL apoc.load.jdbc(\"snowflake_orchard\", sql) YIELD row RETURN row ", " MERGE(p:Participant:Chartmetric {chartmetricId: row.CM_ARTIST_ID}) ON CREATE SET p.id = apoc.create.uuid(), p.createdAt = datetime() SET p.spotifyId = row.SPOTIFY_ARTIST_ID, p.appleMusicId = row.ITUNES_ARTIST_ID, p.name = row.NAME, p.imageUrl = row.IMAGE_URL, p.modifiedAt = datetime() MERGE(gp:GlobalParticipant {spotifyId: row.SPOTIFY_ARTIST_ID}) ON CREATE SET gp.id = apoc.create.uuid(), gp.createdAt = datetime() SET gp.appleMusicId = row.ITUNES_ARTIST_ID, gp.name = row.NAME, gp.modifiedAt = datetime() MERGE (gp)-[:REPRESENTS]->(p) ", {batchSize:1000, iterateList:true, parallel:true} ); CALL apoc.log.info("Finished run of chartmetricParticipantIngest at %s", [datetime()]); \', {}, {} ); ', 3600 );