Salut, j'ai des questions pour différents scénarios comme ci-dessous. J'apprécie vraiment toute aide!
Scénario A : Je veux ajouter cette dernière colonne, en calculant pour cet ID utilisateur, quelle est la différence de jour par rapport à première Web vers première date de réservation. S'il n'a eu aucune action Web avant l'action de réservation, laissez-le vide. Quelqu'un pourrait-il m'aider avec à quoi devrait ressembler la formule en utilisant la fonction mais pas jsl?
| ID de l'utilisateur | action | Date | première date Web à la première date de réservation |
| 2523 | la toile | 06/05/2018 | 22 |
| 2523 | la toile | 16/05/2018 | 22 |
| 2523 | réservation | 28/05/2018 | 22 |
| 2523 | réservation | 08/06/2018 | 22 |
| 2523 | la toile | 08/07/2018 | 22 |
| 2523 | réservation | 08/08/2018 | 22 |
Scénario B : basé sur le tableau ci-dessus, je veux calculer un autre tableau comme celui ci-dessous qui contient pour chaque userID, la différence de jour entre ' la date de la première action Web «avant les réservations» à chaque date de réservation . Sur la base de la logique, le résultat idéal avec le tableau ci-dessus comme entrée sera comme ci-dessous, 3 instances de différence de jour pour cet ID utilisateur. Comme dans le scénario A, nous ne considérons que le moment où le Web est avant la réservation.
| ID de l'utilisateur | exemple | calcul |
| 2523 | 22 | 5/28 moins 5/6 |
| 2523 | 33 | 6/8 moins 5/6 |
| 2523 | 31 | 8/8 moins 7/8 |
Merci!
Salut Joann,
Après avoir joué un peu, j'ai pu produire un ensemble de formules de colonnes qui produisent le résultat souhaité (voir ci-joint). Il est important de noter que la table doit être triée par "userId" et "date" pour que les formules fonctionnent correctement.
Meilleur,
TS
Je pense que la formule suivante fera l'affaire pour le scénario A:
Il n'est pas encore optimisé, mais peut vous montrer comment faire de telles choses.
Il utilise un simple jsl dans une formule, étape par étape.

Veuillez consulter le script complet pour la génération de table:
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
)
)