-1
votes

Regex | Cas quand alors sinon "conserver la même valeur"

J'essaie de regrouper certains source / moyenne dimensions dans Google Data Studio et laissez la valeur d'origine pour le reste; Par exemple: xxx

peut être vide pour conserver la même valeur d'origine?


4 commentaires

Avez-vous essayé de voir ce que vous obtenez?


Je reçois un champ vide avec toutes les autres sources.


Stackoverflow.com/Questtions/54863979/...


Fixez vos citations. Vous ne pouvez pas utiliser de citations bouclées dans MySQL.


3 Réponses :


0
votes

Mettez la colonne que vous mettez à jour dans la clause el. / code>, afin d'attribuer la valeur d'origine à la colonne.

SET columnname = CASE WHEN (`source/medium` RLIKE 'lnkd\\.in|linkedin\\.') THEN 'Linkedin' ELSE columnname END


6 commentaires

Cela ne fonctionnera pas car la valeur source / moyenne est variable et il n'y a pas de liste fixe.


L'utilisation de la bonne condition est un problème distinct. Le point principal de votre question était de savoir comment conserver la valeur initiale lorsque la condition n'est pas remplie.


Je pensais que vous parliez d'une déclaration mise à jour . Si ce n'est pas ce que vous voulez dire, vous devez clarifier. Quelle valeur d'origine essayez-vous d'utiliser?


Ce que je veux réaliser, c'est lorsque Source / Medium rencontre une certaine condition (c'est-à-dire contenant 'lnkd.in | linkedin. *' Puis attribuez un nom. Sinon, quittez tel quel. La source / support est tirée de Google Analytics.


= est pour une comparaison exacte. Si vous souhaitez tester si une chaîne contient un motif, vous devez utiliser comme (pour Glorcard PatTterns) ou RLIt (pour des expressions régulières).


De plus, si vous avez une colonne de table nommée source / moyenne , vous devez le mettre en backticks. Sinon, / signifie effectuer une division.



0
votes

Votre clause d'autre devrait être la colonne que vous testez si vous voulez qu'il reste inchangé. Par exemple, si votre nom de colonne est "source / moyen", ce serait comme suit:

CASE WHEN (source/medium = “lnkd.in|linkedin.*”) THEN “Linkedin” ELSE source/medium END


0 commentaires

0
votes

remarqua qu'une fonction de regex n'était pas appelée dans les formules ci-dessus (telles que Regexp_match code> ); Cela fait l'affaire:

1) correspond à lnkd code> [n'importe quel caractère] dans code> ou linkedIn code> [N'importe quelle chose après] strong> p >

CASE
  WHEN REGEXP_MATCH(source/medium, "lnkd\\.in|linkedin.*") THEN "Linkedin"
  ELSE source/medium
END


0 commentaires