Master Child Datenbank

Moin,


muss mal wieder was erfragen was mir nicht so ganz klar ist, und zwar geht es darum eine Master / Child Datenbank zu erstellen. In der Master Datenbank habe ich die Produktdaten, in der Child sollen dann die Varianten abgebildet werden. Nun habe ich folgende JSON Datei die mir das anlegen soll:


{"part_id":"3710","name":"Prooduktdaten","year1":"1977","year2":"2016","category":"Plates","part_type_id":"10","part_url":"Pfad","part_img_url":"Pfad","colors":[{"rb_color_id":"0","ldraw_color_id":"0","color_name":"Black","num_sets":"1117","num_parts":"5050"},{"rb_color_id":"1","ldraw_color_id":"1","color_name":"Blue","num_sets":"492","num_parts":"1583"},{"rb_color_id":"10","ldraw_color_id":"10","color_name":"Bright Green","num_sets":"4","num_parts":"8"},{"rb_color_id":"212","ldraw_color_id":"212","color_name":"Bright Light Blue","num_sets":"1","num_parts":"1"},{"rb_color_id":"191","ldraw_color_id":"191","color_name":"Bright Light Orange","num_sets":"22","num_parts":"97"},{"rb_color_id":"29","ldraw_color_id":"29","color_name":"Bright Pink","num_sets":"15","num_parts":"30"},{"rb_color_id":"6","ldraw_color_id":"6","color_name":"Brown","num_sets":"21","num_parts":"53"},{"rb_color_id":"321","ldraw_color_id":"321","color_name":"Dark Azure","num_sets":"2","num_parts":"14"},{"rb_color_id":"272","ldraw_color_id":"272","color_name":"Dark Blue","num_sets":"87","num_parts":"597"},{"rb_color_id":"23","ldraw_color_id":"23","color_name":"Dark Blue-Violet","num_sets":"1","num_parts":"1"},{"rb_color_id":"72","ldraw_color_id":"72","color_name":"Dark Bluish Gray","num_sets":"463","num_parts":"2048"},{"rb_color_id":"8","ldraw_color_id":"8","color_name":"Dark Gray","num_sets":"59","num_parts":"278"},{"rb_color_id":"288","ldraw_color_id":"288","color_name":"Dark Green","num_sets":"21","num_parts":"70"},{"rb_color_id":"484","ldraw_color_id":"484","color_name":"Dark Orange","num_sets":"16","num_parts":"64"},{"rb_color_id":"5","ldraw_color_id":"5","color_name":"Dark Pink","num_sets":"4","num_parts":"4"},{"rb_color_id":"85","ldraw_color_id":"85","color_name":"Dark Purple","num_sets":"3","num_parts":"6"},{"rb_color_id":"320","ldraw_color_id":"320","color_name":"Dark Red","num_sets":"104","num_parts":"569"},{"rb_color_id":"28","ldraw_color_id":"28","color_name":"Dark Tan","num_sets":"57","num_parts":"379"},{"rb_color_id":"3","ldraw_color_id":"3","color_name":"Dark Turquoise","num_sets":"1","num_parts":"6"},{"rb_color_id":"2","ldraw_color_id":"2","color_name":"Green","num_sets":"176","num_parts":"713"},{"rb_color_id":"323","ldraw_color_id":"323","color_name":"Light Aqua","num_sets":"1","num_parts":"1"},{"rb_color_id":"71","ldraw_color_id":"71","color_name":"Light Bluish Gray","num_sets":"463","num_parts":"2383"},{"rb_color_id":"7","ldraw_color_id":"7","color_name":"Light Gray","num_sets":"350","num_parts":"1402"},{"rb_color_id":"18","ldraw_color_id":"18","color_name":"Light Yellow","num_sets":"2","num_parts":"2"},{"rb_color_id":"27","ldraw_color_id":"27","color_name":"Lime","num_sets":"89","num_parts":"322"},{"rb_color_id":"313","ldraw_color_id":"313","color_name":"Maersk Blue","num_sets":"3","num_parts":"47"},{"rb_color_id":"26","ldraw_color_id":"26","color_name":"Magenta","num_sets":"25","num_parts":"54"},{"rb_color_id":"322","ldraw_color_id":"322","color_name":"Medium Azure","num_sets":"18","num_parts":"37"},{"rb_color_id":"73","ldraw_color_id":"73","color_name":"Medium Blue","num_sets":"55","num_parts":"224"},{"rb_color_id":"30","ldraw_color_id":"30","color_name":"Medium Lavender","num_sets":"28","num_parts":"130"},{"rb_color_id":"462","ldraw_color_id":"462","color_name":"Medium Orange","num_sets":"5","num_parts":"14"},{"rb_color_id":"25","ldraw_color_id":"25","color_name":"Orange","num_sets":"106","num_parts":"473"},{"rb_color_id":"22","ldraw_color_id":"22","color_name":"Purple","num_sets":"1","num_parts":"2"},{"rb_color_id":"4","ldraw_color_id":"4","color_name":"Red","num_sets":"728","num_parts":"2668"},{"rb_color_id":"70","ldraw_color_id":"70","color_name":"Reddish Brown","num_sets":"263","num_parts":"1174"},{"rb_color_id":"379","ldraw_color_id":"379","color_name":"Sand Blue","num_sets":"9","num_parts":"33"},{"rb_color_id":"378","ldraw_color_id":"378","color_name":"Sand Green","num_sets":"9","num_parts":"51"},{"rb_color_id":"232","ldraw_color_id":"232","color_name":"Sky Blue","num_sets":"1","num_parts":"1"},{"rb_color_id":"19","ldraw_color_id":"19","color_name":"Tan","num_sets":"199","num_parts":"990"},{"rb_color_id":"47","ldraw_color_id":"47","color_name":"Trans-Clear","num_sets":"2","num_parts":"27"},{"rb_color_id":"15","ldraw_color_id":"15","color_name":"White","num_sets":"879","num_parts":"3573"},{"rb_color_id":"14","ldraw_color_id":"14","color_name":"Yellow","num_sets":"534","num_parts":"1843"}]}

Mit dem ersten Datensatz part_id usw kann ich ja die Datenbasis anlegen, das klappt auch soweit, nur wie muss ich nun vorgehen um die Farben in einer Child Datenbank abzulegen? Die part_id dient mir ja als Identifier, aber es müssen jetzt ja in der Child Datenbank - wenn ich es richtig verstehe - die part_id sowie die Farbe in einer Zeile einzeln abgespeichert werden, aber ich habe im JSON File ja nur einmal die ID? Wie speichere ich also das in dem Child ab so dass ich für jede Farbe die ID mit drinne habe? Oder geht das automatisch weil die Spitzen Klammer das ja einschließen?

Moin,


für mich siehst es so aus als würde für den Fall auch ein Parent/Variant Datastore ausreichen. Das würde für dich auch den Import etwas leicher machen. So musst du nur noch eine Parent ID vergeben und dann den Varianten(Farben) zu ordnen.


Anbei nochmal der Link zum Handbuch.


viele Grüße,

Thomas Dressel

ich lese es, ich probiere, aber irgendwie fehlt mir der große Zusammenhang....

bekommt man das mit einem Flow hin? Ich steh da irgendwie auf dem Schlauch...

Der generelle Ansatz ist folgender:


- mit JSON2Spreadsheet muss daraus ein 2-stufiges Spreadsheet gemacht werden


Bsp.:


identifier,parent_identifier,name,color

"3710","","Prooduktdaten",""

"3710_Blue","3710","","Blue"

"3710_Bright_Green","3710","","Bright Green"


Diese Spreadsheet dann in den SpreadsheetDatastoreWriter reingeben. Dadurch landet es automatisch 2-stufig mit Parent-Variant Struktur im Datastore.


d.h. die 1. Zeile ist der Parent

die Zeilen danach sind die Farben.


die Spalte parent_identifier muss nur in den Farbzeile gefüllt sein und sollte im Beispiel die part_id enthalten.

der identifier kann auf parent-eben die part_id sein.

auf Varianten-Ebene muss man sich einen neuen eindeutigen identifier ausdenken und zusammenbauen. z.B. indem man part_id und Farbe aneinander hängt. Ist nur ein bsp. - hauptsache eindeutig.



Soweit das grobe Konzept.


Falls das nicht weiterhilft, dann einfach mal 1-2 Stunden Training buchen.




ich denke damit komme ich weiter, vielen Dank erstmal.

Leider kommt bei der Vorschau zum Mapping für den datastoreWriter immer die folgende Fehlermeldung:


Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request POST /studio/jobController.

Reason: Error reading from remote server

Apache/2.2.16 (Debian) Server at apps.synesty.com Port 443

hat sich erledigt, habe das Limit runtergesetzt, jetzt klappt zumindest die Vorschau

ich brauche hier noch mal einen Denkanstoß, ich habe das JSON File welches ja 2-stufig ist, nur verstehe ich nicht so ganz wie ich jetzt das Zuweise:


<#assign row = target.addRow()>

<#list json as r >

<#assign row = target.addRow()>

${row.addCol("part_id",r["part_id"])}

${row.addCol("name",r["name"])}

${row.addCol("year1",r["year1"])}

${row.addCol("year2",r["year2"])}

${row.addCol("category",r["category"])}

${row.addCol("part_type_id",r["part_type_id"])}

${row.addCol("part_type_id",r["part_type_id"])}

${row.addCol("part_url",r["part_url"])}

${row.addCol("part_img_url",r["part_img_url"])}

<#list r["colors"] as o>

<#assign itemRow= target.addRow()>

${itemRow.addCol("rb_color_id",o["rb_color_id"].getAsString())}

${itemRow.addCol("ldraw_color_id",o["ldraw_color_id"])}

${itemRow.addCol("color_name",o["color_name"])}

${itemRow.addCol("num_sets",o["num_sets"])}

${itemRow.addCol("num_parts",o["num_parts"])}

</#list>

</#list>


Ich muss ja irgendwie bei den colors die parent_id mit reinbekommen um das zuzuweisen, das ist mir nur nicht so ganz klar wie das gehen soll. Die ist bei colors im JSON File ja nur im oberen Bereich, wie bekomme ich die jetzt aber in den Bereich bei colors mit rein, sonst geht doch keine Zuweisung oder? Ich habe mir alles über die JSON Files bei euch durchgelesen, konnte dazu aber nichts finden. Falls ich es nicht hinbekomme, macht mir mal ein Angebot das ich diese Blöde Abfrage der API mit den Parents von euch einrichten lasse. Alles klappt, bis auf die Zuweisung der Parents.... Langsam verzweifel ich hier :-)


Hallo Hifimikael,


du kannst innerhalb der äußeren list Schleife eine Variable mit der parent id speichern und diese in der inneren Schleife in jeder Zeile ausgeben:

Beispiel:

...

<#list json as r >

<#assign parent_part_id = r["part_id"] >

${row.addCol("part_id",r["part_id"])}

...

<#list r["colors"] as o>

${itemRow.addCol("parent_part_id", parent_part_id)}

${itemRow.addCol("rb_color_id",o["rb_color_id"].getAsString())}

...



das war was mir gefehlt hat, melde mich bestimmt noch mal. Macht doch mal Youtube Videos mit Anleitungen, spielt mal den Erklärbär - so erreicht ihr noch mehr Leute die eure Dienste brauchen (und ich lern was :-) )- JTL hat das mit den Videos finde ich gut gelöst.


sag ja ich melde mich nochmal :-)

Die Parent ID muss ja eindeutig sein und soll z.B. aus der part_id und dem Farbnamen color_name bestehen, wie macht man das? Also das die parent_id nacher so aussieht: 3170_Bright_Green - sonst sind die ja alle gleich und können ja nicht unterschieden werden, oder? In der Doku ist nix darüber zu finden.

also im Prinzip zwei Variablen zusammen bauen....und als parent_id dann verwenden, hab schon einiges probiert, aber irgendwie fehlt mir die Doku wie man Variablen "zusammenbaut"


Hallo Hifimikael,


im Prinzip kannst du die Variablen im Script mit + zusammenfügen, z.B.


...

<#list r["colors"] as o>

${itemRow.addCol("parent_part_id", parent_part_id + "-" + o["color_name"])}

...


Alternativ kannst du auch einen SpreadsheetMapper hinter dem JSON2Spreadsheet Step verwenden und im Wert-Feld zusammenfügen.


Also ich habe jetzt alles so gemacht, es wird auch eine parent_id generiert, trotzdessen werden die nicht importiert, bzw. zugewiesen. Da muss jetzt mal einer von euch drüber schauen. Ich komme hier nicht mehr weiter. Wenn fragen sind, gerne :-)


achso, Projekt ist LGO und der Flow heißt GetParts.

Hallo,


damit wir drüber schauen können benötigen wir noch einen Support-User :)


1. In Synesty Studio einloggen

2. In der Navigation zu Mein Konto -> Einstellungen -> Benutzer navigieren

3. Auf den schwarzen Knopf auf der rechten Seite: "Support-Nutzer jetzt erstellen" klicken und bestätigen

4. Fertig

erledigt

Vielen Dank!

Hallo Hifimikael,


wir haben es angepasst. Der Import sollte jetzt mit Parent / Variant funktionieren. Evtl. sollten sie den Datastore vorab nochmal leeren oder einen neuen anlegen.

Werde ich morgen früh gleich mal austesten und mir ansehen was ich da wohl falsch gemacht habe für die Zukunft. Vielen Dank!