2017-09-12 8 views
1

J'utilise Power BI Desktop pour créer une requête Web vers l'API de débordement de pile. Je veux obtenir le nombre de questions posées sur le débordement de pile pour chaque utilisateur qui est extrait d'une table préremplie d'utilisateurs dans Power BI.Création d'une requête Web Power BI basée sur la table de données

Je veux quelque chose qui ressemblera à ceci:

utilisateurs pré-remplie:

  • Utilisateur2
  • User3

StackOverflow Questions:

  • 6231494: 5
  • Utilisateur2: 12
  • User3: 10

Voici mon code actuel pour ma requête Web dans l'éditeur avancé:

let 
Source = Json.Document(Web.Contents("http://api.stackexchange.com/2.2/users/6231494/answers?order=desc&sort=activity&site=stackoverflow")), 
items = Source[items], 
#"Converted to Table" = Table.FromList(items, Splitter.SplitByNothing(), null, null, ExtraValues.Error), 
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"owner", "is_accepted", "score", "last_activity_date", "creation_date", "answer_id", "question_id"}, {"Column1.owner", "Column1.is_accepted", "Column1.score", "Column1.last_activity_date", "Column1.creation_date", "Column1.answer_id", "Column1.question_id"}), 
#"Expanded Column1.owner" = Table.ExpandRecordColumn(#"Expanded Column1", "Column1.owner", {"reputation", "user_id", "user_type", "profile_image", "display_name", "link"}, {"Column1.owner.reputation", "Column1.owner.user_id", "Column1.owner.user_type", "Column1.owner.profile_image", "Column1.owner.display_name", "Column1.owner.link"}) 
in 
#"Expanded Column1.owner" 

J'ai besoin essentiellement d'une manière pour définir l'ID codé en dur actuel (6231494) égal à la liste des ID de ma table utilisateur prédéfinie

Répondre

1

Supposons que vous avez un Users table avec colonne ID comme numéro:

users

Vous pouvez faire quelques changements à votre Questions requête pour la transformer en une fonction personnalisée Power BI:

(id as number) => 
let 
    Source = Json.Document(Web.Contents("http://api.stackexchange.com/2.2/users/" & Text.From(id) & "/answers?order=desc&sort=activity&site=stackoverflow")), 
    items = Source[items] 
    ... 

(id as number) => est ajouté à tourner la requête dans une fonction; et l'ID utilisateur est remplacé par Text.From(id).

Ici, je rebaptisés à GetQuestions de garder clairement que c'est une fonction:

get questions

Vous pouvez ensuite ajouter une colonne personnalisée pour appeler la fonction:

add custom column 1

add custom column 2

add custom column 3

Expand et vous trouverez les colonnes de la requête originale:

result

Et vous pouvez travailler avec les données pour obtenir les résultats que vous voulez (par exemple nombre de questions).