2016-10-18 2 views
0

J'ai des données granulaires stockées dans Redshift. Je veux une table agrégée créée régulièrement. Je cherche à utiliser AWS Data Pipeline pour ce faire.Création d'une table agrégée dans AWS Data Pipeline

Disons pour la conversation que j'ai une table de tous les vols. Je veux générer une table des aéroports et le nombre de vols qui y sont originaires. Mais parce que cette table est grande (et peut-être que je veux rejoindre des éléments d'autres tables), plutôt que d'écrire cette agrégation à chaque endroit, je décide de construire une table dérivée à partir de cette table.

J'ai configuré mon pipeline de données. Il ressemble donc

enter image description here

Il TOURNE SQL dans le domaine Create Table Sql

CREATE TABLE IF NOT EXISTS data.airports (
airport_id int not null 
,flights int null); 

je peux enregistrer (aucune erreur), mais après que je l'activer, cette table ne montre jamais en haut J'ai vérifié les (quelques) paramètres impliqués, mais rien ne ressort comme étant manifestement faux. Malgré tout, j'ai peaufiné certains mais toujours pas de table.

Que dois-je commencer à chercher?

Répondre

1

Le premier endroit à regarder est dans le pipeline de données, pour s'assurer qu'il n'y a aucune erreur là. (Je pense que vous l'avez déjà fait)

Vous devriez maintenant vérifier les commandes sql/load qui ont été exécutées sur redshift, pour vous assurer qu'elles sont présentes comme prévu et qu'elles ont réussi.

Pour ce faire, un moyen simple est d'ouvrir votre cluster dans la console aws. à partir de là, vous pouvez cliquer sur les onglets "Requêtes" pour voir le SQL qui a été exécuté et "Charges" pour voir les commandes de copie etc. qui ont été exécutées.

Il est également possible de voir les mêmes détails sans utiliser aws en exécutant pour les requêtes:

select query, trim(querytxt) as sqlquery 
from stl_query 
order by query desc limit 50; 

pour les charges, voir les erreurs de la dernière charge

select d.query, substring(d.filename,14,20), 
d.line_number as line, 
substring(d.value,1,16) as value, 
substring(le.err_reason,1,48) as err_reason 
from stl_loaderror_detail d, stl_load_errors le 
where d.query = le.query 
and d.query = pg_last_copy_id();