PowerBi partie 2 : Importer des données et les nettoyer
Importation
Comme indiqué dans la partie 1, nous allons utiliser PowerBi desktop pour commencer. Une fois PowerBi lancé, vous arrivez sur la fenêtre d’accueil.
Pour tester, je vous conseille d’utiliser un format type Excel qui sera simple à créer et à utiliser.
Voici mon fichier Excel (si vous souhaitez être sur la même base de données de départ que moi).
Mon exemple se base sur un chiffre d’affaire d’une boutique et sur le nombre de ventes par jour sur un mois. J’ai volontairement séparé les deux valeurs pour mettre en place des liens entre nos tableaux.
J’ai donc choisi le format Excel et j’ai sélectionné mon fichier exemple. Une fois fait, PowerBi repere les diffèrent tableaux disponible dans votre fichier. A vous de cocher ceux dont vous avez besoin. Dans notre cas nous prendrons les tableaux 1 et 2.
A ce moment-là, ne faites pas « charger » mais « modifier » car cette action va vous permettre de nettoyer vos données. Par exemple nous allons pouvoir enlever les lignes à valeur nulles, retirer les colonnes qui ne nous intéresse pas, créer des liens entre les tableaux,....
Nettoyage des données
Vous arrivez sur une fenêtre qui vous permet de visualiser vos valeurs. A gauche se trouve la liste de vos différents tableaux. Au milieu s’affiche le contenu du tableau sélectionné et à droite le panneau de filtrage et modification de vos données.
Notez que toutes les modifications faites ici ne s’effectuent jamais sur vos données même. PowerBi va importer vos données et ensuite faire les tris.
Sur le tableau 1 nous allons enlever les lignes pour lesquelles le « CA » est null (ce sont les dimanche et il ne nous intéressent donc pas).
Sur une case « null » faite un clic droit => Filtre numérique => « n’est pas égal à ». Cette manipulation indique que l’on ne veut pas les lignes où « CA » est null (les dimanches).
Faites la même chose pour le tableau 2.
Voici le résultat :
Vérifiez le type des données du tableau : Clic droit sur le nom de la colonne puis « modifier le type ». Par défaut, PowerBi essai de mettre les bon type par lui-même.
Une fois revenu sur l’interface de base de PowerBi, nous allons pouvoir ajouter une relation entre nos deux tableaux (sur la date). Cette relation va nous permettre de faire des rapprochements entre les valeurs de ceci.
Commencez par cliquer sur le bouton « Gérer les relations » du menu « Dossier racine » du ruban supérieur.
Cliquez sur « nouveau… »
Indiquez alors les deux tables à lier, puis cliquez sur les colonnes à lier.
Ensuite choisissez le type de relation et cliquez sur OK.
La relation est opérationnelle.
Vous vennez d'importer et nettoyer (de façon simple) des données dans PowerBi.
Je vous propose de continuer sur la mise en place d’une page de rapport qui nous servira à remplir notre dashboard. A tout de suite dans la Partie 3.
PowerBi partie 1 : Mise en place
Bonjour, je vais mettre en ligne une série d'articles sur PowerBi. Dans un premier temps ces articles seront à destination des débutants PowerBi avec le passage en revue des bases : importation des données, nettoyage des données, mise en forme des données dans des rapports, création de dashboard, ....
Qu'est ce que PowerBi :
''Microsoft Power BI est un ensemble de services et de fonctionnalités en ligne qui vous permettent de rechercher et de visualiser des données, de partager des découvertes et de collaborer en utilisant de nouvelles méthodes intuitives''
source Microsoft
Connexion à la plateforme PowerBi
Pour commencer nous allons nous connecter sur le site PowerBi : ici
Cliquez sur connexion en haut à droite. Si vous avez un compte microsoft, connectez-vous avec, sinon créez en un gratuitement (les comptes gratuits MS vous donne accès à une version limité mais, déjà largement suffisante pour commencer).
Vous arrivez alors sur l’interface de base de PowerBi online. Vous pouvez déjà télécharger la version desktop pour gagner du temps (je vais vous expliquer ensuite la différence entre online et desktop). Le téléchargement ce fait via l’icône de téléchargement en haut sur la droite de la fenêtre.
PowerBi online ou PowerBi desktop ?
Ces deux versions ne doivent pas être vues comme un choix à faire car elles sont complémentaires. Voici le descriptif simplifié des deux versions.
Desktop
Cette version va s’utiliser comme vous utiliseriez Word, Excel, … en local sur votre ordinateur. Elle vous permet de créer vos rapports (import de données, nettoyage des données, mise en page des données au travers de graphiques et de cartes, …).
Retenez que c’est la version à utiliser pour créer les rapports.
Online
Cette version va vous permettre de mettre en ligne vos rapports et dashboards. Vous pourrez modifier les rapports directement dessus mais en cas d’actualisation depuis la version desktop, ces modifications seront écrasées.
Retenez que cette version sert surtout à publier vos rapports et dashboards.
Je vous invite à lire la partie 2 dans laquelle nous allons importer des données et les nettoyer.
Metafizzy : utilisation dans un projet Asp.net MVC
Bonjour,
je vais vous présenter la librairie Metafizzy qui va nous permettre d'afficher des listes triables.
Dans un premier temps allez sur Metafizzy.
ensuite cliquez sur isotope.
Cliquez droit sur le bouton "Download isotope.pkgd.min.jsDownload" puis, "enregistrer la cible du lien sous...".
Ensuite nous allons créer les objets à afficher (photos, block de texte, ...).
Mon txt objet 1
Mon txt objet 2
Mon txt objet 3
Mon txt objet 4
Quand nous cliquerons sur le bouton avec l'identifiant "categorie2", seul les objets 3 et 4 seront visibles.
Enfin passons au script :
A vous maintenant d'ajuster le css pour avoir quelque chose de propre et adapté à vos besoins.
Bonne journée et bon code =)
Evénement : Global Azure Bootcamp 2016 Lyon : IoT, Open Source et Cloud Azure
A venir tres prochainement, le Global azure bootcamp se tiendra à la Manufacture des tabacs (université Jean Moulin Lyon III) le 16 Avril 2016 de 8h30 à 16h30.
Tres gros événement qui regroupera dans les 10 000 participants (136 villes dans 56 pays).
''Plus de 12 experts de renom venus des 4 coins de France et de Suisse réaliseront 3 tracks en parralèles pour contenter les Décideurs, les Architects ou Novices, dans un lieu somptueux.''
Lien : Meetup GAB Lyon 2016
Ajax : Formater le champ ‘data’ d’une requête Ajax pour transmettre les valeurs à un controller ASP.Net model MVC.
Bonjour, si vous voulez récupérer des valeurs dans une vue .cshtm et les envoyer à un controller, vous pouvez les envoyer via une requête Ajax. Vous allez ainsi pouvoir traiter une requête sans changer ni recharger la page.
Nous allons utiliser une fonction JsonResult dans notre controller et retourner via un Json une réponse à notre vue.
Code controller :
Code script de la vue :
Pour passer un model en data, découpez encore plus la syntaxe. Par exemple si vous voulez une premiere valeur en model User user(nom, prenom, age) et un int id :
Data : { user : { nom : valNom, prenom : valPrenom, age : valAge }, id : valId }
Bon code.
MUG Lyon : Docker: briques légos pour infrastructures : 25/02/2016
Le mug Lyon organise une session Docker ce jeudi 25 Février (19:00 - 21:00) : N'hésitez pas à vous inscrire : http://www.meetup.com/fr-FR/MUGLyon/events/228501689/
ARTICLE :
Le MUG Lyon organise une session "Docker: briques légos pour infrastructures" animée par Haikel Guemar, suivie d'un afterwork; ces événements sont gratuits et ouverts à tou(te)s.
--
Description
Lors de cette session, nous découvrirons Docker et son écosystème.
Comment celui-ci entraine un changement de paradigme dans la gestion
d'infrastructure et facilite
la mise en place de processus de Continuous Delivery.
Mais également, l'avenir de Docker sur plateforme Microsoft avec le
support sous Azure et l'arrivée des conteneurs natifs dans Docker
(Windows & HyperV)
Merci à Docker, Inc de nous envoyer des T-shirts Docker pour cette occasion !
--
Événement suivi d'un apéro sur place, puis vers 21h, d'un after au Ninkasi. Attention pour l'after, les consommations sont à votre charge. (Inscription obligatoire)
Retrouvez nos événements et suivez l'actualité du MUG Lyon sur notre site https://muglyon.github.io/ ou contactez-nous sur [masked].
En espérant vous voir nombreu(ses)x.
Merci à Viseo et Open, nos sponsors annuels qui financent le MUG-Lyon. Merci à Sciences-U qui héberge cet événement.
L'équipe du MUG Lyon
Ajouter un document joint à un formulaire ASP.net MVC en AJAX
Bonjour,
Aujourd’hui nous allons voir comment créer un formulaire avec pièce jointe, le tout avec un beginform Ajax sur un site ASP.net MVC codé en C#.
La création d’un formulaire Ajax.beginform ne pose en général pas de soucis du moment que l’on ne veut pas envoyer une pièce jointe. Dans notre cas nous allons contourner quelques peu le fonctionnement du formulaire avec Ajax et utiliser un script.
Dans un premier temps, assurez-vous d’avoir les références nécessaires pour ’utiliser javascript et Ajax.
Je vais considérer que vous avez un site ASP.net MVC avec une page « Contact ».
Créez une class « ContactModel » dans le dossier model :
namespace MonProjet
{
public class ContactModel
{
public string Nom { get; set; }
public string Prenom { get; set; }
public string Sujet { get; set; }
public string Corp { get; set; }
public HttpPostedFileBase Attachment { get; set; }
}
}
Cette classe va nous permettre de récupérer les données via notre formulaire.
Dans votre page Contact ajoutez un using du model puis un using de la localisation du model :
@using MonProjet.Models
@Model ContactModel
Ajoutez ensuite votre formulaire de façon classique :
@using (Ajax.BeginForm("SaveContact", "Home", new { id = "MonFormulaire" }, new AjaxOptions()
{
HttpMethod = "POST"
},
new { enctype = "multipart/form-data" }
))
{
<fieldset class="formulaire">
<div class="form-group">
<div class="input-group">
@Html.TextBoxFor(x => x.Nom, "", new { @class = "form-control", @placeholder = "Nom" })
</div>
</div>
<div class="form-group">
<div class="input-group">
@Html.TextBoxFor(x => x.Prenom, "", new { @class = "form-control", @placeholder = "Prénom" })
</div>
</div>
<div class="form-group">
<div class="input-group">
@Html.TextBoxFor(x => x.Sujet, "", new { @class = "form-control", @placeholder = "Sujet" })
</div>
</div>
<div class="form-group">
<h4 class="blanc">Ma demande</h4>
@Html.TextAreaFor(x => x.Corp, new { @class = "form-control", @cols = 60, @rows = 10 })
</div>
<div class="form-group">
<h4>Mon CV</h4>
<input type="file" name="attachment" id="attachment" />
</div>
<input type="submit" value="Envoyer" class="btn btn-default" />
</fieldset>
}
A la suite Ajoutez le script suivant : Ce script permet de courcicuiter l’envoi du formulaire et de faire un envoi par lui-même (avec la pièce jointe). Sans la ligne event.stopImmediatePropagation, vous auriez plusieurs envois en même temps.
Merci à Demian Flavius (stackOverflow) pour le script de base sur lequel je me suis basé.
<script type="text/javascript">
$(function() {
$("#MonFormulaire ").submit(function(event) {
var dataString;
event.preventDefault();
event.stopImmediatePropagation(); //Permet de stopper l’action du formulaire et donc de ne pas lancer deux requêtes sur le controller.
var monUrl = $("#MonFormulaire").attr("action");
if ($("#MonFormulaire ").attr("enctype") == "multipart/form-data") {
dataString = new FormData($("#MonFormulaire ").get(0));
contentType = false;
processData = false;
}
$.ajax({
type: "POST",
url: monUrl,
data: dataString,
dataType: "json",
contentType: contentType,
processData: processData,
success: function (args) {
alert("Ok");
},
error: function(jqXHR, textStatus, errorThrown) {
alert("Erreur");
}
});
});
});
</script>
Nous allons ensuite gérer le controller. Dans le controller qui gère votre page « Contact », nous allons codé « SaveContact » que sera la fonction qui récupère le formulaire (voir dans les paramètres du ajax.beginform).
public JsonResult SaveContact(ContactModel model)
{
Bool pJ ;
If(model.Attachment != null){
pJ = true ;
}else{
pJ = false ;
}
return Json("Nom = {0} – Prénom = {1} – Sujet = {2} – piece jointe ? {3}", model.Nom, model.Prenom, model.Sujet, pJ.toString());
}
A vous d’effectuer les action qu’il vous faut avec le model reçu (envoi de mail, sauvegarde en base de données, …).
Lors de l’envoi du formulaire vous aurez en retour une pop-up qui vous indiquera les informations envoyées. Mettez un point d’arrêt en début de fonction SaveContact et regarder si la pièce jointe est bien dans le model.
En espèrent avoir apporté des piste de réflexion ou une solution à votre problème.
C# : transformer une date format string en DateTime
Bonjour, je vais vous expliquer comment transformer une date au format string en DateTime.
Imaginons que vous receviez un Json qui comporte des données et une date de relevé de ces données, vous voulez récupérer la date et la transformer en DateTime.
Date récupérée :
string myDate = "16/02/2016 14:57:23 AM";
Transformation :
Nous allons utiliser la fonction ParseExact(string dateStr, string formatDate, CultureInfo)
.
Concrètement :
date = DateTime.ParseExact(myDate, "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture) ;
Note : à vous de modifier le format de la date pour l’adapter à le type de date que vous voulez modifier.
Si vous voulez modifier la date au format DateTime, vous pouvez utiliser par exemple .AddHours(1), .AddMinutes(4)
.
Merci et bon code.
Connaitre la taille d’une base de données
Pour connaitre l’espace utilisé par une base de données, il faut utiliser une requête dans sql management studio. La commande à utiliser est « sp_spaceused ». Si l’on veux rentrer dans le détail de la fonction, elle se présente comme l’exemple ci-dessous :
sp_spaceused [[@obet1 =] 'objet1'] <br/>
[,[@objet2 =] 'objet2']<br/>
Objet1 est le nom de la table et objet2 est un varchar qui vaut « true » ou « false ». S’il est à true, sql server recalcule la taille des pages de données.
Dans notre cas, nous ne préciserons pas objet1 et objet2 pour calculer la base de données entière.
USE MA_BDD
GO
EXEC sp_spaceused
GO
Azure : changer le mot de passe administrateur d'une database sql server (nouveau portail)
Bonjour, je vais vous détailler la marche à suivre pour changer le mot de passe de votre compte administrateur SQL Server database dans le nouveau portail azure.
1. connectez vous à votre portail azure (logique).
2. Ouvrez le menu "toutes les ressources" (1*) puis sélectionnez votre base de données (2*).
voir ci dessous.
3. Cliquez sur le nom du serveur.
4. Un nouvel onglet Serveur s’ouvre. Dans les options en haut vous trouverez "Réinitialiser le mot de passe".