Hallo, ich habe Fragen zu verschiedenen Szenarien wie unten. Schätzen Sie wirklich jede Hilfe!
Szenario A. : Ich möchte diese letzte Spalte hinzufügen und für diese Benutzer-ID berechnen, wovon der Tagesunterschied abweicht zuerst Web zu zuerst Buchungsdatum. Wenn er vor der Buchungsaktion keine Webaktion hatte, lassen Sie diese leer. Könnte mir jemand helfen, wie die Formel mit der Funktion aussehen soll, aber nicht mit jsl?
| Benutzeridentifikation | Aktion | Datum | erstes Webdatum bis zum ersten Buchungsdatum |
| 2523 | Netz | 2018-05-06 | 22 |
| 2523 | Netz | 2018-05-16 | 22 |
| 2523 | Buchung | 2018-05-28 | 22 |
| 2523 | Buchung | 2018-06-08 | 22 |
| 2523 | Netz | 2018-07-08 | 22 |
| 2523 | Buchung | 2018-08-08 | 22 |
Szenario B. : Basierend auf der obigen Tabelle möchte ich eine andere Tabelle wie die folgende berechnen, die für jede Benutzer-ID die Tagesdifferenz zwischen ' das erste Web-Action-Datum '' vor Buchungen ' zu jedes Buchungsdatum . Basierend auf der Logik ist das ideale Ergebnis mit der obigen Tabelle als Eingabe wie folgt: 3 Instanzen Tagesdifferenz für diese Benutzer-ID. Wie in Szenario A berücksichtigen wir nur, wenn das Web vor der Buchung ist.
| Benutzeridentifikation | Beispiel | Berechnung |
| 2523 | 22 | 5/28 minus 5/6 |
| 2523 | 33 | 6/8 minus 5/6 |
| 2523 | 31 | 8/8 minus 7/8 |
Vielen Dank!
Hallo Joann,
Nachdem ich ein bisschen herumgespielt hatte, konnte ich eine Reihe von Spaltenformeln erstellen, die die gewünschte Ausgabe erzeugen (siehe Anhang). Wichtig ist, dass die Tabelle nach "Benutzer-ID" und "Datum" sortiert ist, damit die Formeln ordnungsgemäß funktionieren.
Beste,
TS
Ich denke, die folgende Formel reicht für Szenario A:
Es ist noch nicht optimiert, kann Ihnen aber zeigen, wie solche Dinge getan werden können.
Es verwendet einige einfache jsl in einer Formel, Schritt für Schritt.

Weitere Informationen zur Tabellengenerierung finden Sie im vollständigen Skript:
New Table( "20210404_user_web_booking_matrixexample",
Add Rows( 12 ),
Compress File When Saved( 1 ),
New Column( "userID",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[2523, 2523, 2523, 2523, 2523, 2523, 2540, 2540, 2540, 2540, 2540, 2540]
),
Set Display Width( 66 )
),
New Column( "action",
Character( 16 ),
"Nominal",
Set Values(
{"web", "web", "booking", "booking", "web", "booking", "web", "web",
"booking", "booking", "web", "booking"}
),
Set Display Width( 73 )
),
New Column( "date",
Numeric,
"Continuous",
Format( "y/m/d", 12 ),
Input Format( "y/m/d" ),
Set Values(
[3608409600, 3609273600, 3610310400, 3611260800, 3613852800, 3616531200,
3647462400, 3647548800, 3647635200, 3647721600, 3647808000, 3647894400]
),
Set Display Width( 92 )
),
New Column( "first web date to first booking date",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [22, 22, 22, 22, 22, 22, ., ., ., ., ., .] ),
Set Display Width( 150 )
),
New Column( "formula",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Names Default To Here( 1 );
dat_vec = :date << get values;
web_vec = :action << get values;
user_vec = :userID << get values;
user_index = user_vec == :userID[Row()];
web_index = Matrix(
Substitute( :action << get values, "web", 1, "booking", 0 )
);
web_dat = dat_vec[Loc( user_index & web_index )];
booking_dat = dat_vec[Loc( user_index & !web_index )];
(Minimum( booking_dat ) - Minimum( web_dat )) / (3600 * 24);
),
Set Selected
)
)