Ich habe Daten von Strava abgerufen und in JMP übernommen. Die Daten haben ein JSON-Format wie das beigefügte. Für mich ist es an dieser Stelle ein schmerzhafter Prozess, mehrere Spalten zu stapeln, Spalten zu löschen und viele Daten zu manövrieren. Am Ende möchte ich die beiden Tabellen haben, die ich angehängt habe. Ich hoffe, dass nur mein mangelndes Wissen über das JSON-Parsing die Probleme verursacht. Wenn jemand die Möglichkeit hat, einen Blick darauf zu werfen, würde ich mich über Ideen freuen, wie der Prozess weniger schmerzhaft werden kann.
**** BEARBEITEN: Stellen Sie sicher, dass Sie Ihren Pfad in Zeile 5 dahin ändern, wo sich Ihre Datei befindet.
Pete, versuch das mal. Nach dem Ausführen des Importassistenten scheint es, dass das, was zurückkommt, obwohl es auf den ersten Blick unbrauchbar ist, ausreicht, um fortzufahren, zumindest für den vorliegenden Datensatz. Lassen Sie mich wissen, wie es Ihnen bei diesem (und im Idealfall einem anderen) Datensatz geht. Ich habe Annahmen darüber getroffen, wie die Daten zurückkommen, was für andere Daten möglicherweise ungültig ist.
Names Default To Here( 1 );
jsonFromWizardExpr = Expr(
dt = Open(
"/Users/brady.brady@jmp.com/Downloads/Morning_Run_.json",
JSON Settings(
Stack( 0 ),
Row( "/root/data/values" ),
Col(
"/root/data/values",
Column Name( "values" ),
Fill( "Use Once" ),
Type( "Numeric" ),
Format( {"Best"} ),
Modeling Type( "Continuous" )
),
Col(
"/root/data/fields",
Column Name( "fields" ),
Fill( "Use Once" ),
Type( "Character" ),
Format( {"Best"} ),
Modeling Type( "Continuous" )
)
),
JSON Wizard( 0 )
)
);
jsonFromWizardExpr;
//get nonempty rows in column 2. These follow the data having the fields indicated
{rowA, rowB} = As List( dt << get rows where( dt:fields != "" ) );
//main logic is here; note latlng needs to be split to lat, lng
colList = Words( Substitute( dt:fields[rowA], "latlng", "lat, lng" ), " ," );
As Table( Shape( dt[1 :: (rowA - 1), 1], (rowA - 1) / N Items( colList ) ), <<column names( colList ) );
colList = Words( dt:fields[rowB], ", " );
As Table( Shape( dt[((rowA) :: (rowB - 1)), 1], (rowB - rowA) / N Items( colList ) ), <<column names( colList ) );
Schöner Brady. Vielen Dank!