From 910f7e2c6b8fddbe4d283efd07c8dac9e852e9b4 Mon Sep 17 00:00:00 2001 From: AlexicaWright <49636617+AlexicaWright@users.noreply.github.com> Date: Fri, 26 May 2023 14:00:47 +0200 Subject: [PATCH 01/96] editorial review and updated images --- documentation/data-importer.adoc | 149 ++++++++++-------- .../img/{preview_1.png => preview.png} | Bin documentation/img/save-load.png | Bin 49986 -> 0 bytes documentation/img/save_load.png | Bin 0 -> 23784 bytes 4 files changed, 84 insertions(+), 65 deletions(-) rename documentation/img/{preview_1.png => preview.png} (100%) delete mode 100644 documentation/img/save-load.png create mode 100644 documentation/img/save_load.png diff --git a/documentation/data-importer.adoc b/documentation/data-importer.adoc index 22dbc50..9d44e12 100644 --- a/documentation/data-importer.adoc +++ b/documentation/data-importer.adoc @@ -12,7 +12,7 @@ == Introduction Workspace's data importer offers a powerful and simple way to model and load data into Neo4j. -It's great if you're new to graphs or have rapid prototyping needs. +It's great if you're new to graphs or have rapid prototyping needs. If you have more advanced needs, checkout the _What's next?_ section at the end of this guide. This guide will teach you how to: @@ -23,7 +23,8 @@ This guide will teach you how to: [TIP] ==== -If you haven't already, we recommend going through the _Getting started with Neo4j_ guide to learn the basics of Neo4j. We're continuing with the Northwind dataset. +If you haven't already, we recommend going through the _Getting started with Neo4j_ guide to learn the basics of Neo4j. +This guide is continuing with the same dataset, Northwind. ==== @@ -31,7 +32,7 @@ If you haven't already, we recommend going through the _Getting started with Neo === Add the Northwind files -To get started, {northwind-subset-data-only-zip-file}[download and unzip this file of CSVs^] and then drop the files onto the highlight:import/import-file-panel[files panel]. +To get started, {northwind-subset-data-only-zip-file}[download and unzip this file of CSVs^] and then drop the files onto the highlight:import/import-file-panel[files panel]. [%collapsible] .Are you having trouble? @@ -43,11 +44,11 @@ button::Add Northwind files[role=NX_IMPORT_LOAD,endpoint={northwind-subset-data- === File structure -Now that you've added the files, you should now be able to see each file's header and the first row of data in the highlight:import/import-file-panel[Files panel]. +Now that you've added the files, you should be able to see each file's header and the first row of data in the highlight:import/import-file-panel[Files panel]. [TIP] ==== -Importer always requires files to have a *header row* as well as at least one *data row* in order to map and import data. +Importer always requires files to have a *header row* as well as at least one *data row* in order to map and import data. ==== The `order-details.csv` file looks like this: @@ -59,7 +60,9 @@ OrderID,ProductID,UnitPrice,Quantity,Discount 10248,72,34.8,5,0 ---- -This file tells us which orders contain specific products and their price. If you inspect the content of the file, you'll notice that `OrderID` is repeated. We'll learn later about how this can be used to create a `CONTAINS` relationship linking `Orders` and `Products`. +This file tells us which orders contain specific products and their price. +If you inspect the content of the file, you'll notice that `OrderID` is repeated. +You'll learn later about how this can be used to create a `CONTAINS` relationship linking `Orders` and `Products`. The `products.csv` and `orders.csv` files refer to the other parts of the Northwind data model. @@ -68,14 +71,14 @@ The `products.csv` and `orders.csv` files refer to the other parts of the Northw === Create the Order node -We're going to create a simple model with two nodes and one relationship. -Add a node using the highlight:import/import-add-node[add node button], and give it the label `Order`. +You are going to create a simple model with two nodes and one relationship. +Add a node using the highlight:import/import-add-node[add node button], and give it the label `Order`. image::simple-model.png[] - + === Map a file -The `Order` node you have just created isn't fully mapped yet; we need it to show a green tick. +The `Order` node you have just created isn't fully mapped yet; it needs to show a green check mark. Select `orders.csv` from the highlight:import/import-node-file-dropdown[file dropdown] in the highlight:import/import-mapping-panel[mapping details panel]. @@ -85,14 +88,16 @@ Let's now add some properties to the `Order` node from our `orders.csv` file. * Click the highlight:import/import-select-from-file-button[select from file] button. * Select the `orderId`, `orderDate` and `requiredDate` columns and click *Confirm*. -* Edit the `orderId` property in the mapping details panel by clicking the pencil icon. -* Change its data type from `integer` to `string`, and then rename it to `id` (it obviously relates to an order). -* Click the tick icon to save your edit. +* Edit the `orderId` property in the mapping details panel by clicking the pencil icon. +* Change its data type from `integer` to `string`, and then rename it to `id` (it obviously relates to an order). +* Click the check mark to save your edit. -[TIP] +[NOTE] ==== -Properties with the same name will be created automatically. -Workspace will guess each datatype based on a sample of the values it found. Always double check this when working with unfamiliar data. For example, Northwind's date/time columns are identified as strings. You can change this if you wish. +When selected from file, properties are given the name of the column selected when created. +Workspace guesses each datatype based on a sample of the values it found. +Always double-check this when working with unfamiliar data. +For example, Northwind's date/time columns are identified as strings, but you can edit that if you want to. ==== // TODO: properties with same name... this needs rewording for clarity. @@ -101,21 +106,25 @@ Workspace will guess each datatype based on a sample of the values it found. Alw === Setting a node ID -Nodes need an ID to define relationships with other nodes. An ID also ensures an import doesn't create a node more than once if it's referenced multiple times in a data file. +Nodes need an ID to define relationships with other nodes. +An ID also ensures an import doesn't create a node more than once if it's referenced multiple times in a data file. -* Return to the _Definition_ tab and note that the `id` property is set as the ID for the node highlight:import/import-node-id[ID]. -* The import tool did this for you automatically based on the property name containing the `id` string. In other cases, you may need to correct it or set it manually. +If you go back to the _Definition_ tab, you can see that the `id` property is set as the ID for the node highlight:import/import-node-id[ID]. +The import tool did this for you automatically based on the property name containing the `id` string. +In other cases, you may need to correct it or set it manually. [TIP] ==== -You can also specify properites and their data types in isolation from mapping by using the highlight:import/import-property-add-button[add property] button. You can then map a column from your data file to the property in the file mapping tab. +You can also specify properites and their data types in isolation from mapping by using the highlight:import/import-property-add-button[add property] button. +You can then map a column from your data file to the property in the file mapping tab. ==== -=== Create the Product node +=== Create the Product node -Now you just need to repeat the process you followed for `Order`, creating a `Product` node from the `products.csv` file. -Here you need to map the `produtId` and `productName` columns, rename the `productId` property to be simply `id` and set it to be a `string`. Ensure `id` is selected as the ID. +Now you just need to repeat the process you followed for `Order` and create a `Product` node from the `products.csv` file. +Here you need to map the `produtId` and `productName` columns, rename the `productId` property to be simply `id` and set it to be a `string`. +Ensure `id` is selected as the ID. [%collapsible] .Are you having trouble? @@ -130,49 +139,55 @@ button::Load Northwind node mapping[role=NX_IMPORT_LOAD,endpoint={northwind-subs [TIP] ==== -As we've observed in our data file, `Orders` `CONTAIN` `Products`. We use a convention of https://en.wikipedia.org/wiki/Camel_case[CamelCase^] for node Labels and capitalized https://en.wikipedia.org/wiki/Snake_case[SNAKE_CASE^] for Relationships. +As you've seen already, your data concerns `Orders` that `CONTAIN` specific `Products`. +Conventionally, https://en.wikipedia.org/wiki/Camel_case[CamelCase^] is used for node labels and capitalized https://en.wikipedia.org/wiki/Snake_case[SNAKE_CASE^] for relationship types. ==== You have two nodes and now you need to create a relationship to connect them. * Hover by the edge of the `Order` node circle and you'll see a `+` sign. * Click and hold it and you'll see another circle. -* Drag the new circle on to the `Product` node and relase to create the relationship. -* With the relationship arrow selected, we can now name how `Order` relates to `Product`. +* Drag the new circle on to the `Product` node and relase to create the relationship. +* With the relationship arrow selected, you can now specify how `Order` relates to `Product`. * In the highlight:import/import-relationship-type[type] section of the highlight:import/import-mapping-panel[mapping details panel], enter the text `CONTAINS`. [TIP] ==== -Just like newly created nodes, the relationship will only show a green tick once you have completed its mapping. +Just like newly created nodes, the relationship will only show a green check mark once you have completed its mapping. You can also name relationships by double-clicking the arrow in the graph model and typing it directly. -You can rapidly add nodes with a linking relationship by hovering over an existing node; when a green plus icon appears, click-drag from the node and then release onto the canvas. +You can rapidly add nodes with a linking relationship by releasing the circle on an empty space the canvas instead of an existing node. Selected nodes can be deleted by clicking the highlight:import/import-delete-node-or-rel[delete button] or with the backspace key. ==== -=== Map a file to a relationship +== Map a file to a relationship -The next stage is critical in helping the importer understand how a file defines a relationship. This is what will give you a connected graph. +The next stage is critical in helping the importer understand how a file defines a relationship. +This is what will give you a connected graph. -* If you look in the highlight:import/import-file-panel[Files panel], you'll see `order-details.csv` has columns that correspond with the `id` of our `Order` and `Product` nodes. +* If you look in the highlight:import/import-file-panel[Files panel], you'll see `order-details.csv` has columns that correspond with the `id` of our `Order` and `Product` nodes. * Ensuring you have the relationship selected, select the `order-details.csv` file from the highlight:import/import-relationship-file-dropdown[File dropdown]. // TODO: Add id selector for relationship dropdown to enable UI higlighting * In the highlight:import/import-relationship-mapping-table[relationship mapping table] you will see the nodes and ID properties at each end of the `CONTAINS` relationship. Setup the *From* and *To* for the `CONTAINS` relationship: -* The `From` end of the node is the `Order` node with the `id` property (remember that this property was mapped to the `orderId` column in the `orders.csv` file). -* Our `order-details.csv` file also contains an `orderId` column, so select this in the highlight:import/import-rel-from-dropdown[from dropdown]. This gives Data Importer the information it requires to link up the From end of the relationship. -* We need to select the correct file column for the `To` end of the relationship (the Product node). As you might guess, this is the `productId` in the highlight:import/import-rel-to-dropdown[to dropdown] +* The `From` end of the node is the `Order` node with the `id` property (remember that this property was mapped to the `orderId` column in the `orders.csv` file). +* Your `order-details.csv` file also contains an `orderId` column, so select this in the highlight:import/import-rel-from-dropdown[from dropdown]. +This gives Data Importer the information it requires to link up the From end of the relationship. +* You need to select the correct file column for the `To` end of the relationship (the Product node). +As you might guess, this is the `productId` in the highlight:import/import-rel-to-dropdown[to dropdown] -There should now be no dashed outlines in the highlight:import/import-model-panel[Graph Model pane] as we have successfully mapped the file. +Everything in the highlight:import/import-model-panel[Graph Model pane] should now have green check marks as you have successfully mapped the file. === More properties for richer queries -For relationships, you can add properties that might be useful for your queries. +For relationships, you can add properties that may be useful for your queries. -In the `order-details.csv` file you'll notice the columns `unitPrice`, `quantity` and `discount` could be useful to add as properties to the `CONTAINS` relationship. These properties are well suited to being on the relationship since they couldn't easily be encapsulated on the nodes at either end of the relationship. For example `quantity` does not belong on either the `Product` or `Order` nodes since products will be sold in different quantities on different orders. +In the `order-details.csv` file, you'll notice the columns `unitPrice`, `quantity` and `discount` could be useful to add as properties to the `CONTAINS` relationship. +These properties are well suited to being on the relationship since they couldn't easily be encapsulated on the nodes at either end of the relationship. +For example `quantity` does not belong on either the `Product` or `Order` nodes since products will be sold in different quantities on different orders. -Just as we did for nodes, use the highlight:import/import-select-from-file-button[select from file] button to map those columns to new properties on the relationship. +Just as you did for nodes, use the highlight:import/import-select-from-file-button[select from file] button to map those columns to new properties on the relationship. [TIP] ==== @@ -191,29 +206,31 @@ button::Load model and mapping[role=NX_IMPORT_LOAD,endpoint={northwind-subset-no === Relationship defined in the same file as one node -In this example, a separate link table `order-details.csv` defines the relationship linking `Orders` and `Products`. +In this example, a separate flat file, `order-details.csv`, defines the relationship linking `Orders` and `Products`. -However, it can be quite common to have files where the relationship is defined by the same file as that used for the node at one (or sometimes both) ends of the relationship. In our example, you can see how the `orders.csv` file also contains a `shipVia` column which could be used to define the relationship to a `Shipper` node created from the `shippers.csv` file. +However, it is quite common to have files where the relationship is defined by the same file as that used for the node at one (or sometimes both) ends of the relationship. +In this example, you can see how the `orders.csv` file also contains a `shipVia` column which could be used to define the relationship to a `Shipper` node created from the `shippers.csv` file. -To see how this mapping looks, we have prepared an example for you to inspect the configuration. +To see how this mapping looks, here's an example for you to inspect the configuration. button::Load Northwind shipper mapping[role=NX_IMPORT_LOAD,endpoint={northwind-subset-shipper-mapping-zip-file}] -Here you can see we are using the `orders.csv` file to define both the `Order` node and the `SHIPS` relationship, as well as mapping the `Shipper` node to `shippers.csv`. +Here you can see that the `orders.csv` file is used to define both the `Order` node and the `SHIPS` relationship, as well as mapping the `Shipper` node to `shippers.csv`. === Relationship defined in the same file as both nodes -In examples where the nodes at each end of the relationship are both mapped to the same file, the relationship can ususally be inferred by the same file. If you first setup the nodes with their IDs and mapping, when you draw the relationship we will assist you by mapping the `From`` and `To`` parts of the relationship automatically. +In examples where the nodes at each end of the relationship are both mapped to the same file, the relationship can ususally be inferred by the same file. +If you first set up the nodes with their IDs and mapping, when then you draw the relationship, the `From` and `To` parts of the relationship will be mapped automatically. You can try this out by loading the simple example below and connecting the two nodes that are mapped to the same file: button::Load people and locations[role=NX_IMPORT_LOAD,endpoint={people_locations_nodes_only_zip_file}] -The model we are aiming for is as below. +The model you are aiming for is as below. image::import-people and locations.png[] -If you add the relationships and label their types as above, you'll observe that the `From` and `To`` relationships are automatically mapped for you. +If you add the relationships and label their types as above, you'll observe that the `From` and `To` relationships are automatically mapped for you. // TO-DO: Is not so neat in this example switching to a completely different context - would be better to add a Northwind related example of ths - look at doing this as it's a good example to show. @@ -227,11 +244,11 @@ button::Load configuration[role=NX_IMPORT_LOAD,endpoint={people_locations_full_z == Ready to import? -Let's get back to the Nortwind model so we can pick up where we left off, start by reloading what we created earlier. +Let's get back to the Nortwind model, start by reloading the small Northwind model you created. button::Load model and mapping[role=NX_IMPORT_LOAD,endpoint={northwind-subset-node-and-relationship-mapping-zip-file}] -Any dashed lines in your model means that the mapping is not complete. +Any object in your model without a green check mark means that the mapping is not complete. If the mapping is not complete, you will not be able to run the import. The following items **must be** mapped on a **node**: @@ -260,17 +277,17 @@ But you should keep in mind that it is only a preview and only a sample of your The actual graph may look different once the full import is complete. You want to have your mapping completely done before previewing, but if you have missed something, you are still able to do a preview, but the incomplete elements will not be rendered. -In other words, any dashed element in your model will not show up in the preview. +In other words, any element without a check mark in your model will not show up in the preview. -As mentioned before, if any element in your model is dashed, you will **not** be able to run the import. +As mentioned before, if any element in your model not mapped, you will **not** be able to run the import. == Running an import -Click highlight:import/import-run-import-button[Run import] to import the files specified in your model. -The simple model you have created in this example only maps to 3 of the 11 available files. -The files not specified in your model are **not** imported, but they remain in the highlight:import/import-file-panel[Files panel]. +Click highlight:import/import-run-import-button[Run import] to import the files specified in your model. + +If any uploaded files are not specified in your model, these are **not** imported, but they remain in the highlight:import/import-file-panel[Files panel]. -If any mapping is incomplete, we will tell you that your model has errors and add a red exclamations mark next to the incomplete element in the model. +If any mapping is incomplete, you will be informed that your model has errors and a red exclamation mark is shown next to the incomplete element in the model. When you select an incomplete element, the mapping pane also highlights the missing details. Once you've addressed any errors, go ahead and run the import again. @@ -278,10 +295,11 @@ You should see a popup window showing the successful results. image::import_results.png[] -The summary shows what was included in the import. +The summary shows what was included in the import. You can compare to your CSV files to verify that everything was imported. -Congratulations on modelling, mapping, and loading your data! You can now explore and query it to learn more about the power of graphs and Neo4j. +Congratulations on modelling, mapping, and loading your data! +You can now explore and query it to learn more about the power of graphs and Neo4j. We have a few very useful importer tips to complete this guide. [TIP] @@ -300,7 +318,7 @@ Ensure you are in the import tab. button::Import[role=NX_TAB_NAV,tab=import] -image::save-load.png[] +image::save_load.png[] When you choose to download your model, with or without data, you are essentially saving it. The model doesn't have to be mapped for you to download. @@ -317,8 +335,8 @@ The changes you made will overwrite what you had before, but no existing element === When you outgrow the Data Importer -Workspace's importer may not meet _all_ of your varied load needs, whether they are transformations or differing data formats. -If you need more control, the chances are you can achieve the load using some of the other approaches to loading data into Neo4j. +Workspace's importer may not meet _all_ of your varied load needs, whether they are transformations or differing data formats. +If you need more control, the chances are you can achieve the load using some of the other approaches to loading data into Neo4j. The following are useful resources for different needs: - https://neo4j.com/docs/cypher-manual/current/clauses/load-csv/[LOAD CSV]] for writing your own bespoke Cypher load scripts from CSVs, leveraging the full capabilities of Cypher. @@ -328,24 +346,25 @@ The following are useful resources for different needs: == Frequently Asked Questions -*Missing files - why does the importer say I need to provide my files after I've aready provided them?* +*Missing files - why does Data Importer say I need to provide my files after I've aready provided them?* -When you provide the importer with your files, you are actually providing your web browser with a link to those files on your local file system, they aren't uploaded anywhere. The importer streams the content of the files to you database only when you run the import. +When you provide the importer with your files, you are actually providing your web browser with a link to those files on your local file system, they aren't uploaded anywhere. +The importer streams the content of the files to you database only when you run the import. If you reload the page, the importer loses access to the connection to those files due to security restrictions. -These are in place to prevent web applications accessing files you haven't given express permission to use on page load. +These are in place to prevent web applications accessing files you haven't given express permission to use on page load. You simply need to re-provide the files when requested by data importer to be able to run an import. *How can I replace a file?* -The importer doesn't currently allow you to swap out files in the UI. -However, there is a workaround that may prove useful. +The importer doesn't currently allow you to swap out files in the UI. +However, there is a workaround that may prove useful. If you want to provide a different file with the same column structure to data importer, you can rename it to match and then simply add the file to the files panel. This will replace the reference to the latest file and be available for use by your import. -*How do I change the database data importer loads into?* +*How do I change the database Data Importer loads into?* -If you are using a Neo4j instance that supports multiple databases, the importer will use the home database to import data into. +If you are using a Neo4j instance that supports multiple databases, the importer will use the home database to import data into. You may have the facility to change the home database for the user that you connect to your DBMS with, read more on setting the home database for a user https://neo4j.com/docs/cypher-manual/current/access-control/manage-users/[here]. diff --git a/documentation/img/preview_1.png b/documentation/img/preview.png similarity index 100% rename from documentation/img/preview_1.png rename to documentation/img/preview.png diff --git a/documentation/img/save-load.png b/documentation/img/save-load.png deleted file mode 100644 index 554b2f444a534a21d281017d205a4277af57d2ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49986 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 Zlvx%eeIdU%>TZBPNin%MMX&XI{~t)Jw~YV* diff --git a/documentation/img/save_load.png b/documentation/img/save_load.png new file mode 100644 index 0000000000000000000000000000000000000000..99c85d847f67f6d9e1965032b4716c17edda3a2c GIT binary patch literal 23784 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