Passer au contenu principal

OData - Meilleures pratiques et dépannage

Ces meilleures pratiques et conseils de dépannage vous permettront de tirer le meilleur parti de votre client OData.

Performance

Les performances des services OData dépendent du type de données auquel vous accédez. Par exemple, la lecture d’un million de points de données prend entre 2 minutes et 30 secondes et 3 minutes environ (soit 6 000 points de données par seconde). Chaque requête complète prend en moyenne 120 ms, et le traitement et la gestion des données du client OData peut représenter une charge supplémentaire.

Respectez ces meilleures pratiques générales afin d’obtenir des performances et une fiabilité maximales :

  • N’utilisez pas d’expressions OR ni de tableau à extension.
  • Utilisez si possible plusieurs requêtes.
  • Utilisez l’actualisation incrémentielle.
  • Partitionnez les jeux de données si possible.
  • Conservez uniquement les données dont vous avez besoin. Supprimez les colonnes et données inutiles.
  • Conservez les données d’historique dans un rapport distinct si vous n’en avez pas besoin quotidiennement. Actualisez le rapport de données d’historique lorsque vous avez besoin des données.

Création de requêtes performantes

Les services OData acceptent plusieurs requêtes simultanées, et traitent les requêtes en parallèle. Les clients OData peuvent également envoyer plusieurs requêtes simultanément lorsque cela est possible.

Il est préférable de formuler et d’utiliser plusieurs requêtes au lieu d’une seule requête complexe, avec par exemple des expressions OR ou des expansions. Une requête complexe unique nécessite des itérations consécutives avec la latence aller-retour associée à chaque requête.

Téléchargez les données au moyen de plusieurs requêtes et effectuez une jointure des tableaux obtenus dans votre client OData afin de travailler avec les tableaux comme s’il s’agissait d’un seul tableau.

Utilisation de l’actualisation incrémentielle

L’actualisation incrémentielle permet d’utiliser de grands jeux de données et présente les avantages suivants :

  • Seules les données qui ont été modifiées doivent être actualisées.
  • Il n’est pas nécessaire de conserver de longues connexions aux systèmes source.
  • La quantité réduite de données à actualiser diminue la consommation globale de mémoire et d’autres ressources.

Les fonctions d’actualisation incrémentielle peuvent varier d’un client OData à un autre. Dans le cas de Microsoft Power BI, voir Actualisation incrémentielle pour des modèles sémantiques dans Power BI.

Partitionnement de grands jeux de données

Si vous devez télécharger de grands jeux de données, partitionnez-les et utilisez une requête distincte pour lire chaque partition. Certains clients OData, tels que Microsoft Power BI, peuvent traiter plusieurs requêtes simultanément. Le partitionnement du jeu de données peut améliorer considérablement les performances.

Par exemple, si vous lisez des points de données des deux dernières années, essayez de diviser la requête en deux requêtes, permettant chacune de lire une année de données. Fusionnez (concaténez) ensuite les tableaux dans Power BI.

Dénomination des propriétés dans les métadonnées et CDF RAW

Les clés de propriétés pour les métadonnées et la zone de transit CDF (RAW) doivent être des identifiants valides, et ne peuvent contenir que des lettres, des numéros et des caractères de soulignement. Les services OData remplacent les autres caractères par un caractère de soulignement. Pour obtenir les résultats les plus fiables et les plus prévisibles, veillez à ce que les données ingérées respectent cette convention de dénomination des clés de propriétés : ^[a-zA-Z][_a-za-z0-9]\*[a-zA-Z0-9]\$.

Dépannage

Vous trouverez ici des informations pour vous aider à résoudre les problèmes lors de l’utilisation de CDF comme source de données pour les clients OData.

Les requêtes prennent trop de temps

Un projet CDF peut contenir des centaines de millions de lignes de données, et il est impossible de toutes les charger dans un client OData. Si l’exécution de votre requête prend des heures, vous essayez probablement de charger trop de données.

Voir Filtrage des éléments dans les modèles de données et Filtrage des types de ressources axés sur les actifs pour connaître les capacités de filtrage prises en charge par les services OData.

Je n’obtiens pas tous les résultats

Si vous obtenez moins de résultats que prévu, vous utilisez peut-être une fonction de filtrage non prise en charge par CDF, comme par exemple startswith sur la colonne Nom pour TimeSeries.

Voir Filtrage des éléments dans les modèles de données et Filtrage des types de ressources axés sur les actifs pour connaître les capacités de filtrage prises en charge par les services OData.

Impossible d’extraire des valeurs minimales de CDF RAW

Si vous utilisez des données provenant de la zone de transit CDF, CDF RAW, dans un client OData, vous pouvez rencontrer des problèmes pour extraire de petits nombres en notation exponentielle.

CDF RAW n’a pas de schéma, mais les bibliothèques OData dans certains clients OData, comme Power BI, essaient de sélectionner le bon format pour les données. Actuellement, Power BI choisit le mauvais décodeur pour les petits nombres en notation exponentielle, et vous pouvez rencontrer une erreur de ce type :

DataSource,Error: OData: Cannot convert the literal '2.89999206870561 to the expected type 'Edm.Decimal',

Pour résoudre le problème, ingérez les valeurs dans CDF RAW comme chaînes plutôt que nombres, et convertissez à nouveau les chaînes en nombres dans Power BI, par exemple, avec la fonction M Decimal.From Power Query. Vous ne perdrez pas de précision, et comme la plupart des décodeurs JSON acceptent des chaînes pour les nombres, les clients qui attendent des nombres fonctionnent encore.