2015-11-04 1 views
0

J'ai un champ nommé field, et je voudrais voir si elle est nulle, mais je reçois une erreur dans la requête, mon code est la suivante:Condition IF Dans avancée Power Query Editor

let 
    Condition= Excel.CurrentWorkbook(){[Name="test_table"]}[Content], 
    field= Condition{0}[fieldColumn], 
    query1="select * from students", 
    if field <> null then query1=query1 & " where id = '"& field &"', 
    exec= Oracle.Database("TESTING",[Query=query1]) 
in 
    exec 

mais Je reçois une erreur dans la condition, identifiez-vous l'erreur? Je suis Expression.SyntaxError: Token Identifier expected.

+0

Si vous souhaitez en savoir plus sur le langage de programmation (M) de Power Query, nous avons un guide de démarrage sur MSDN: https://msdn.microsoft.com/fr-fr/library/mt299038.aspx –

Répondre

4

Vous devez affecter la ligne if à une variable. Chaque ligne M doit commencer par une affectation:

let 
Condition= Excel.CurrentWorkbook(){[Name="test_table"]}[Content], 
field= Condition{0}[fieldColumn], 
query1="select * from students", 
query2 = if field <> null then query1 & " some stuff" else " some other stuff", 
exec= Oracle.Database("TESTING",[Query=query2]) 
in 
exec 

Dans query2, vous pouvez créer l'instruction select. Je l'ai simplifié, parce que vous avez aussi des conflits avec les guillemets.

+1

@SergeyLossev - vous avez édité cette réponse de 17 mois pour changer un seul espace? Réel, mec! Arrêtez de chasser les points de brownie. Faites quelque chose d'utile à la place. – teylyn

0

Je pense que vous cherchez:

if Not IsNull(field) then .... 

Certains types de données que vous pourriez avoir à vérifier à l'aide IsEmpty() ou « champ est rien » aussi. Selon le type de données et ce que vous utilisez. Pour résoudre le problème, il est préférable d'essayer de définir un point d'arrêt et de localiser l'emplacement de l'erreur, puis d'observer la variable pour éviter cette valeur spécifique.

+0

pourtant, je continue à avoir: Expression.SyntaxError: Token Identifier attendu. –

+0

cela ressemble à un problème de formatage de requête, pas un problème d'Excel. Je connais sql, mais c'est en dehors de mon expertise. –

+0

Je ne pense pas, car je peux ajouter la requête manuellement et il fonctionne, il doit être sintaxis dans Power requête, où je ne suis pas si fort –

0

Pour répondre à cette exigence, je créer une nouvelle requête à l'aide de l'interface utilisateur PQ pour sélectionner la table/vue étudiants d'Oracle, puis utiliser l'interface utilisateur pour filtrer la colonne [id] sur n'importe quelle valeur. Puis, dans l'éditeur avancé, j'éditerais la ligne FilteredRows générée en utilisant le code de vos étapes de champ Condition +, par ex.

FilteredRows = Table.SelectRows(TESTING_students, each [id] = Excel.CurrentWorkbook(){[Name="test_table"]}{0}[fieldColumn])

Ce changement est mineur d'un script généré, plutôt que d'essayer d'écrire la chose à partir de zéro.