Type de données dans des expressions d’un rapport paginé (Power BI Report Builder)
S’APPLIQUE À : Générateur de rapports Power BI
Power BI Desktop
Les données sont représentées par différents types de données dans un rapport paginé permettant de les stocker et de les traiter de manière efficace. Les types de données typiques incluent du texte (également appelé chaînes), des numéros avec et sans décimales, des dates, des heures et des images. Le rapport doit contenir des valeurs d’un type de données RDL (Report Definition Language). Vous pouvez mettre en forme une valeur selon votre préférence lorsque vous l'affichez dans un rapport. Par exemple, un champ qui représente une devise est stocké dans la définition de rapport sous la forme d'un nombre à virgule flottante, mais peut être affiché sous divers formats en fonction de la propriété de format choisie.
Pour plus d’informations sur les formats d’affichage, consultez Mise en forme des éléments de rapport (Power BI Report Builder).
Types de données RDL (Report Definition Language) et CLR (Common Language Runtime)
Les valeurs spécifiées dans un fichier RDL doivent être un type de données RDL. Lorsque le rapport est compilé et traité, les types de données RDL sont convertis en types de données CLR. Le tableau suivant affiche la conversion, marquée Valeur par défaut :
Type RDL | Types CLR |
---|---|
String | Valeur par défaut : String Chart, GUID, Timespan |
Boolean | Valeur par défaut : Boolean |
Integer | Valeur par défaut : Int64 Int16, Int32, Uint16, Uint64, Byte, Sbyte |
DateTime | Valeur par défaut : DateTime DateTimeOffset |
Float | Valeur par défaut : Double Single, Decimal |
Binary | Valeur par défaut : Byte[] |
Variant | Une des valeurs ci-dessus à l'exception de Byte[] |
VariantArray | Tableau de type Variant |
Sérialisable | Variant ou types marqués avec Serializable ou qui implémentent ISerializable. |
Comprendre les types de données et l’écriture d’expressions
Il est important de maîtriser les types de données lorsque vous écrivez des expressions de comparaison ou de combinaison de valeurs, notamment lorsque vous définissez des expressions de groupe ou de filtre ou calculez des agrégats. Les comparaisons et calculs sont uniquement valides entre éléments du même type de données. Si les types de données ne concordent pas, vous devez convertir le type de données de manière explicite dans l'élément de rapport à l'aide d'une expression.
La liste suivante décrit les circonstances dans lesquelles vous pouvez être amené à convertir des données dans un type différent :
Comparaison de la valeur d'un paramètre de rapport d'un type de données spécifique avec un champ de dataset d'un type de données différent.
Écriture d'expressions de filtre qui comparent des valeurs de types de données différents.
Écriture d'expressions de tri qui associent des champs de types de données différents.
Écriture d'expressions de groupe qui associent des champs de types de données différents.
Conversion d'une valeur extraite d'une source de données d'un type de données à un autre.
Déterminer le type de données d'un rapport
Pour déterminer le type de données d'un élément de rapport, vous pouvez écrire une expression qui retourne son type de données. Par exemple, pour afficher le type de données du champ MyField
, ajoutez l'expression suivante à une cellule de tableau : =Fields!MyField.Value.GetType().ToString()
. Le résultat affiche le type de données CLR utilisé pour représenter MyField
, par exemple, System.String ou System.DateTime.
Convertir les champs d’un jeu de données en un type de données différent
Vous pouvez également convertir des champs de dataset avant de les utiliser dans un rapport. La liste suivante décrit les différentes méthodes de conversion d'un champ de dataset existant :
Modifiez la requête de dataset pour ajouter un nouveau champ de requête avec les données converties. Pour les sources de données relationnelles ou multidimensionnelles, cette procédure utilise les ressources de la source de données pour effectuer la conversion.
Créez un champ calculé à partir d'un champ de dataset du rapport existant en écrivant une expression qui convertit toutes les données d'une colonne d'ensemble de résultats en une nouvelle colonne utilisant un type de données différent. Par exemple, l'expression suivante convertit la valeur du champ Année de nombre entier en chaîne :
=CStr(Fields!Year.Value)
. Pour plus d’informations, consultez Ajouter, modifier ou actualiser des champs dans le volet des données de rapport (Power BI Report Builder).Vérifiez si l'extension de traitement des données que vous utilisez inclut les métadonnées permettant d'extraire des données préformatées. Par exemple, une requête MDX SQL Server Analysis Services inclut une propriété étendue FORMATTED_VALUE pour les valeurs de cube qui ont déjà été mises en forme pendant le traitement du cube. Pour plus d’informations, consultez Propriétés de champ étendues pour une base de données Analysis Services (SSRS).
Comprendre les types de données des paramètres
Les paramètres de rapport doivent avoir l’un des cinq types de données : Boolean, DateTime, Integer, Float ou Text (également appelé String). Lorsqu'une requête de dataset comprend des paramètres de requête, des paramètres de rapport sont automatiquement créés et liés aux paramètres de requête. Le type de données par défaut d'un paramètre de rapport est String. Pour modifier le type de données par défaut d'un paramètre de rapport, sélectionnez la valeur correcte dans la liste déroulante Type de données de la page Général de la boîte de dialogue Propriétés de paramètres du rapport.
Notes
Les paramètres de rapport utilisant le type de données DateTime ne prennent pas en charge les millisecondes. Même s'il est possible de créer un paramètre basé sur des valeurs incluant des millisecondes, dans une liste déroulante de valeurs disponibles, vous ne pouvez pas sélectionner des valeurs temporelles incluant des millisecondes.
Écrire des expressions pour convertir des types de données ou extraire des données partielles
Lorsque vous associez des champs de dataset et de texte à l'aide de l'opérateur de l'opérateur de concaténation (&), le common language runtime (CLR) fournit généralement des formats par défaut. Lorsque vous devez convertir explicitement un champ de dataset ou un paramètre dans un type de données spécifique, vous devez utiliser une méthode CLR ou une fonction de bibliothèque Runtime Visual Basic pour convertir les données.
Le tableau suivant présente des exemples de conversion de types de données.
Type de conversion | Exemple |
---|---|
DateTime en String | =CStr(Fields!Date.Value) |
String en DateTime | =DateTime.Parse(Fields!DateTimeinStringFormat.Value) |
String en DateTimeOffset | =DateTimeOffset.Parse(Fields!DateTimeOffsetinStringFormat.Value) |
Extraction de l'année | =Year(Fields!TimeinStringFormat.Value) -- or -- =Year(Fields!TimeinDateTimeFormat.Value) |
Boolean en Integer | =CInt(Parameters!BooleanField.Value) -1 est True et 0 est False. |
Boolean en Integer | =System.Convert.ToInt32(Fields!BooleanFormat.Value) 1 est True et 0 est False. |
Uniquement la partie DateTime d'une valeur DateTimeOffset | =Fields!MyDatetimeOffset.Value.DateTime |
Uniquement la partie Offset d'une valeur DateTimeOffset | =Fields!MyDatetimeOffset.Value.Offset |
Vous pouvez également utiliser la fonction Format pour contrôler le format d'affichage de la valeur. Pour plus d’informations, consultez Fonctions (Visual Basic).
Exemples avancés
Lorsque vous vous connectez à une source de données par le biais d'un fournisseur de données qui ne prend pas en charge la conversion de tous les types de données de la source, le type de données par défaut utilisé pour les types de source de données non pris en charge est Chaîne. Les exemples suivants proposent des solutions pour les types de données spécifiques retournés en tant que chaîne.
Concaténer une chaîne et un type de données CLR DateTimeOffset
Pour la plupart des types de données, le CLR assure des conversions par défaut vous permettant de concaténer des valeurs utilisant des types de données différents en une seule chaîne à l'aide de l'opérateur &. Par exemple, l’expression suivante concatène le texte « Les date et heure sont : » avec un champ de dataset StartDate, qui est une valeur DateTime : ="The date and time are: " & Fields!StartDate.Value
.
Pour certains types de données, il peut être nécessaire d'inclure la fonction ToString. Par exemple, l’expression suivante affiche le même exemple en utilisant le type de données CLR DateTimeOffsetqui inclut la date, l’heure et un décalage de fuseau horaire par rapport au fuseau horaire UTC : ="The time is: " & Fields!StartDate.Value.ToString()
.
Convertir un type de données String en type de données CLR DateTime
Si une extension de traitement de données ne prend pas en charge tous les types de données définis dans une source de données, les données peuvent être extraites au format texte. Par exemple, une valeur utilisant le type de données datetimeoffset(7) peut être extraite en tant que type de données String. À Perth, en Australie, la valeur de chaîne pour le 1er juillet 2008, à 6:05:07.9999999 A.M. s'affiche alors sous la forme :
2008-07-01 06:05:07.9999999 +08:00
Cet exemple montre la date (le 1er juillet 2008), suivie de l'heure avec une précision de 7 chiffres (6:05:07.9999999 A.M.), suivie d'un décalage par rapport au fuseau horaire UTC exprimé en heures et en minutes (plus 8 heures, 0 minutes). Dans les exemples suivants, cette valeur a été placée dans un champ Chaîne appelé MyDateTime.Value
.
Vous pouvez utiliser l'une des méthodes suivantes pour convertir ces données en une ou plusieurs valeurs CLR :
Dans une zone de texte, utilisez une expression pour extraire certaines parties de la chaîne. Par exemple :
L'expression suivante extrait uniquement la partie Heure du décalage par rapport au fuseau horaire UTC et la convertit en minutes :
=CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60
Le résultat est
480
.L'expression suivante convertit la chaîne en une valeur de date et heure :
=DateTime.Parse(Fields!MyDateTime.Value)
Si la chaîne
MyDateTime.Value
utilise un décalage UTC, la fonctionDateTime.Parse
ajuste tout d’abord le décalage UTC (7 A.M.- [+08:00
] de manière à afficher l’heure UTC 11 P.M. la nuit précédente). La fonctionDateTime.Parse
applique ensuite le décalage UTC du serveur de rapports local et, si nécessaire, ajuste à nouveau l'heure pour tenir compte de l'heure d'été. Par exemple, à Redmond, dans l'état de Washington, le décalage horaire local ajusté pour tenir compte de l'heure d'été est[-07:00]
, ou 7 heures avant 11 PM. Le résultat correspond à la valeur DateTime suivante :2007-07-06 04:07:07 PM
(6 juillet 2007 à 4:07 P.M).
Pour plus d’informations sur la conversion de chaînes en types de données DateTime , consultez les rubriques Analyse des chaînes de date/heure, Mise en forme de la date et de l’heure pour une culture spécifiqueet Choix entre Between DateTime, DateTimeOffset et TimeZoneInfo.
Ajoutez un nouveau champ calculé au dataset du rapport qui utilise une expression pour extraire certaines parties de la chaîne. Pour plus d’informations, consultez Ajouter, modifier ou actualiser des champs dans le volet des données de rapport (Power BI Report Builder).
Modifiez la requête de dataset du rapport pour utiliser des fonctions Transact-SQL afin d’extraire indépendamment les valeurs de date et heure et de créer des colonnes séparées. L'exemple suivant montre comment utiliser la fonction DatePart afin d'ajouter une colonne pour l'année et une autre pour le fuseau horaire UTC converti en minutes.
SELECT
MyDateTime,
DATEPART(year, MyDateTime) AS Year,
DATEPART(tz, MyDateTime) AS OffsetinMinutes
FROM MyDates
L'ensemble de résultats comporte trois colonnes. La première colonne correspond à la date et à l'heure, la deuxième à l'année, et la troisième au décalage UTC en minutes La ligne suivante affiche des exemples de données :
2008-07-01 06:05:07 2008 480
Pour plus d’informations sur les types de bases de données SQL Server, consultez Types de données (Transact-SQL) et Types de données et fonctions de date et d’heure (Transact-SQL).
Pour plus d’informations sur les types de données SQL Server Analysis Services, consultez Types de données dans Analysis Services.