ServicesÀ proposNotesContact Me contacter →
EN FR
Note

Hébergement des rapports Elementary

Comment héberger les rapports HTML Elementary sur S3, GCS ou Azure Blob Storage pour que toute l'équipe y ait accès, et comment automatiser la génération des rapports dans les pipelines CI.

Planté
elementarydbtdata qualityautomation

La commande edr send-report d’Elementary génère et télécharge le rapport HTML vers le stockage cloud en une seule étape, le rendant accessible aux parties prenantes, aux ingénieurs d’astreinte et à toute personne ayant besoin de visibilité sur la qualité des données. Elle accepte les mêmes flags que edr report pour contrôler le contenu du rapport, plus les identifiants cloud pour la destination.

AWS S3

Terminal window
edr send-report \
--aws-access-key-id $AWS_ACCESS_KEY_ID \
--aws-secret-access-key $AWS_SECRET_ACCESS_KEY \
--s3-bucket-name your-reports-bucket \
--bucket-file-path reports/elementary.html \
--update-bucket-website true

Avec --update-bucket-website true, S3 sert le fichier comme site web statique. L’URL suit ce pattern :

http://your-reports-bucket.s3-website-us-east-1.amazonaws.com/index.html

Le bucket doit avoir l’hébergement de site web statique activé et une politique de bucket autorisant la lecture publique. Pour les outils internes où l’accès public est inapproprié, utilisez des URL pré-signées S3 ou configurez le bucket pour être accessible uniquement depuis votre VPC.

Google Cloud Storage

Terminal window
edr send-report \
--google-service-account-path /path/to/service-account.json \
--gcs-bucket-name your-reports-bucket \
--update-bucket-website true

Accès à l’adresse :

https://storage.googleapis.com/your-reports-bucket/index.html

Le compte de service a besoin de storage.objectAdmin sur le bucket. Pour les environnements utilisant workload identity ou application default credentials plutôt qu’un fichier de compte de service, consultez la documentation d’Elementary pour les flags d’authentification alternatifs.

Azure Blob Storage

Terminal window
edr send-report \
--azure-container-name your-container \
--azure-connection-string $AZURE_CONNECTION_STRING \
--update-bucket-website true

Accès à l’adresse :

https://your-account.blob.core.windows.net/your-container/index.html

Automatisation en CI

Le rapport est le plus utile lorsqu’il se met à jour automatiquement après chaque exécution dbt, de sorte que l’équipe voit toujours l’état actuel de la qualité des données plutôt qu’un snapshot de la dernière exécution manuelle de la commande.

Dans GitHub Actions, ajoutez l’étape send-report dans votre pipeline dbt :

- name: Generate Elementary report
run: |
edr send-report \
--gcs-bucket-name ${{ secrets.REPORTS_BUCKET }} \
--google-service-account-path ./sa.json

Dans Airflow, ajoutez edr send-report comme tâche en aval de votre tâche dbt build. La dépendance garantit que le rapport n’est généré que si l’exécution dbt s’est terminée, et il reflète toujours l’état actuel.

La clé est le séquencement : edr send-report s’exécute après dbt build, pas avant. Puisque la commande lit depuis les tables d’entrepôt d’Elementary, l’exécuter avant le run dbt génèrerait un rapport basé sur les données de l’exécution précédente.

Considérations de contrôle d’accès

Les sites web statiques sur le stockage cloud sont publics par défaut dans la plupart des configurations. Pour les rapports de qualité des données en production qui peuvent exposer des échantillons de lignes en échec ou des métriques sensibles au plan d’affaires, configurez des restrictions d’accès appropriées à votre environnement. Les options incluent :

  • Des politiques IAM au niveau du bucket restreignant l’accès aux plages IP de votre organisation
  • Des proxies d’authentification devant le site statique
  • L’utilisation d’URL pré-signées avec expiration, distribuées via Slack lorsque le rapport est généré

Si les PII sont une préoccupation, rappellez-vous que --disable-samples retire les échantillons de lignes en échec du rapport avant même qu’il soit généré, ce qui est plus simple que le contrôle d’accès et plus approprié lorsque la sensibilité réside dans les données elles-mêmes plutôt que dans les métriques.