1
votes

Remplacement / suppression d'une valeur pour une clé donnée dans une valeur dynamique dans Kusto

Y a-t-il un moyen dans Kusto d'utiliser lequel nous pouvons remplacer la valeur d'une clé spécifique dans une valeur dynamique dans Kusto? Remplacer la valeur ou même supprimer toute la paire valeur / clé si nécessaire?

MISE À JOUR

Supposons que nous ayons la valeur dynamique suivante dans un tableau: -

  { 
      "SectionA":{ 
                 "Prop1":"abcd",
                 "Prop2":"efgh",
                 "Prop3":"ahd32",
                 "category":"main"
                 },
      "Num1":0,
      "Num2":33.8,
      "City":"New York"
    }

Maintenant, je veux me débarrasser de la paire clé / valeur pour la clé Num1 afin que la sortie résultante soit la suivante: -

   { 
      "SectionA":{ 
                 "Prop1":"abcd",
                 "Prop2":"efgh",
                 "Prop3":"ahd32",
                 "category":"main"
                 },
      "Num2":33.8,
      "City":"New York"
    }

Si cela n'est pas possible, même le masquage suivant peut également fonctionner comme solution, en masquant, je veux dire chaque fois que la clé Num1 apparaît dans la valeur dynamique, une valeur fixe (0 dans cet exemple) lui sera attribuée pour toutes les lignes: -

   { 
      "SectionA":{ 
                 "Prop1":"abcd",
                 "Prop2":"efgh",
                 "Prop3":"ahd32",
                 "category":"main"
                 },
      "Num1":1.33,
      "Num2":33.8,
      "City":"New York"
    }

La valeur peut être n'importe quoi, une chaîne ou un nombre, ici dans cet exemple j'ai utilisé un nombre mais cela peut être n'importe quoi.

p >


4 commentaires

la sortie doit être la valeur dynamique elle-même


même si nous pouvons filtrer une clé spécifique (et quelle que soit la valeur de la clé) de la valeur dynamique et renvoyer une nouvelle valeur en conséquence, cela fonctionnera aussi


Pouvez vous donner un exemple?


a mis à jour le message avec un exemple


3 Réponses :


2
votes

Update:

let t = datatable(mystring:string)
[
'
{     "SectionA":{ 
                 "Prop1":"abcd",
                 "Prop2":"efgh",
                 "Prop3":"ahd32",
                 "category":"main"
                 },
      "Num1":180,           
      "Num2":33.8,
      "City":"New York"
}
'
];
t
| project myjson = parse_json(mystring)
| project Num2=tostring(myjson.Num2), City=tostring(myjson.City), SectionA=tostring(myjson.SectionA)

Le résultat:

 entrez la description de l'image ici

Veuillez essayer le code ci-dessous pour voir s'il peut résoudre le problème:

let t = datatable(mystring:string)
[
'
{     "SectionA":{ 
                 "Prop1":"abcd",
                 "Prop2":"efgh",
                 "Prop3":"ahd32",
                 "category":"main"
                 },
      "Num1":180,           
      "Num2":33.8,
      "City":"New York"
}
'
];
t
| project myjson = parse_json(mystring)
| project Num2=tostring(myjson.Num2), City=tostring(myjson.City), SectionA=tostring(myjson.SectionA)
| extend newColumn=strcat("\"City\":","\"",City,"\", \"Num2\":","", Num2,", \"SectionA\":","", SectionA) 

Le résultat:

 entrez la description de l'image ici


4 commentaires

oui mais cela divise le résultat final en 3 colonnes distinctes, je voulais un résultat de colonne unique, comme indiqué dans mon exemple.


@Dhiraj, oh, je vais essayer et mettre à jour cela plus tard.


il y a cependant un défi ici. Nous devons maintenant connaître le nom de chaque paire clé / valeur qui apparaîtra. Nous n'avons peut-être pas cette information. Je ne connais que la clé que je veux exclure. La logique que vous avez fournie sélectionne explicitement toutes les autres valeurs à l'exception de celle que nous voulons supprimer. Existe-t-il un moyen de supprimer uniquement une clé que nous savons que nous voulons supprimer, nous ne savons pas quelles autres clés pourraient apparaître.


Donc, tout ce que nous savons, c'est le nom et le chemin (dans json) de la clé.



2
votes

Une autre façon de définir une valeur dans un dictionnaire dynamique Kusto \ bag avec des clés inconnues (ou avec trop de clés à lister dans une requête) consiste à utiliser la nouvelle fonction bag_merge :

let t = dynamic({ 
      "SectionA":{ 
                 "Prop1":"abcd",
                 "Prop2":"efgh",
                 "Prop3":"ahd32",
                 "category":"main"
                 },
      "Num1":1.33,
      "Num2":33.8,
      "City":"New York"
    });

print bag_merge(dynamic({"Num1":0}), t)

 entrez la description de l'image ici


0 commentaires

0
votes

Le bag_remove_keys ( ) La fonction supprime les clés et les valeurs associées d'un sac de propriétés dynamique. La seule limitation est que les clés des niveaux imbriqués ne sont pas prises en charge.

datatable(input:dynamic) [
    dynamic({ 
        "SectionA":{ 
                    "Prop1":"abcd",
                    "Prop2":"efgh",
                    "Prop3":"ahd32",
                    "category":"main"
                    },
        "Num1":1.33,
        "Num2":33.8,
        "City":"New York"
    }) ] | extend result=bag_remove_keys(input, dynamic(['Num1']))


0 commentaires