Csv import: header with dots build hierachical data structures

If the header of a CSV file contains dots, the key will be structured hierarchically.

Example:

Header 1;Header1.1;Header 1.2;Header 1.2.1;Header 2;Header 2.1
Value 1.1;Value 2.1;Value3.1;Value 4.1;Value 5.1;Value 6.1
Value 1.2;Value 2.2;Value 3.2;Value 4.2;Value 5.2;Value 6.2

{
  "$trigger": {
    "payload": {
      "Header 1": [
        null,
        null,
        [
          null,
          "Value 4.1"
        ]
      ],
      "Header1": [
        null,
        "Value 2.1"
      ],
      "Header 2": [
        null,
        "Value 6.1"
      ]
    },
    "event": "pv_purchase_order_item.items.create",
    "collection": "pv_purchase_order_item"
  }

Is it possible to interpret the dot as part of the string?

Expected:
	{
      "$trigger": {
        "payload": {
          "Header 1": "Value 1.1",
          "Header 1.1": "Value 2.1",
          "Header 1.2": "Value3.1",
          "Header 1.2.1": "Value 4.1",
          "Header 2": "Value 5.1",
          "Header 2.1": "Value 6.1",
        },
        "event": "pv_purchase_order_item.items.create",
        "collection": "pv_purchase_order_item"
      }	  

2 Answers

2

Another example (with german text) :

Abruf-Nr.,Rahmenvertrag-Nr.,Los-Nr.,Abrufberechtigtes Mitglied,Träger,Stelle,Lieferanschrift des Warenempfängers,Lieferanten- bzw. Hersteller-Art.-Nr.,Artikelkurzbezeichnung,Produktkategorie,Bestell-Nr. des Bestellers,Bestellmenge,“Einzelpreis in EURO ohne MwSt., gemäß Rechnung”,Abrechnungsmonat,Bestell-Datum
99992,PV000010,Los 20,Konstanz,Konstanz,Test Stelle 1,Delivery Address 1,Testlieferantenartikelnummer 1,Testartikelbeschreibung 1,Test Los 20,12345,57,6,2024-02-03,2024-02-03
99991,PVERROR1,Los 20,Konstanz,Konstanz,Test Stelle 1,Delivery Address 1,Testlieferantenartikelnummer 1,Testartikelbeschreibung 1,Test Los 20,12345,57,6,2024-02-03,2024-02-03
99991,PV000010,Los 21,Konstanz,Konstanz,Test Stelle 1,Delivery Address 1,Testlieferantenartikelnummer 1,Testartikelbeschreibung 1,Test Los 20,12345,57,6,2024-02-03,2024-02-03

{
  "$trigger": {
    "payload": {
      "Abruf-Nr": {
        "": "99992"
      },
      "Rahmenvertrag-Nr": {
        "": "PV000010"
      },
      "Los-Nr": {
        "": "Los 20"
      },
      "Abrufberechtigtes Mitglied": "Konstanz",
      "Träger": "Konstanz",
      "Stelle": "Test Stelle 1",
      "Lieferanschrift des Warenempfängers": "Delivery Address 1",
      "Lieferanten- bzw": {
        " Hersteller-Art": {
          "-Nr": {
            "": "Testlieferantenartikelnummer 1"
          }
        }
      },
      "Artikelkurzbezeichnung": "Testartikelbeschreibung 1",
      "Produktkategorie": "Test Los 20",
      "Bestell-Nr": {
        " des Bestellers": "12345"
      },
      "Bestellmenge": "57",
      "Einzelpreis in EURO ohne MwSt": {
        ", gemäß Rechnung": "6"
      },
      "Abrechnungsmonat": "2024-02-03",
      "Bestell-Datum": "2024-02-03"
    },
    "event": "pv_purchase_order_item.items.create",
    "collection": "pv_purchase_order_item"
  }

The CSV import uses the column headers to map to the columns in Directus. It does indeed use the dot-syntax (f.e.) author.name for nested relational data.

Can I disable this behaviour?

No, this is the default behavior which matches the format of exports as well. On import, Directus expects the CSV column headers to match the field names in Directus