Thursday, 23 February 2017

Moyenne Mobile À 4 Quarts

Lors du calcul d'une moyenne mobile courante, placer la moyenne dans la période de temps moyenne a un sens Dans l'exemple précédent, nous avons calculé la moyenne des 3 premières périodes et l'avons placée à côté de la période 3. Nous aurions pu placer la moyenne au milieu de la Intervalle de temps de trois périodes, c'est-à-dire à côté de la période 2. Cela fonctionne bien avec des périodes de temps impaires, mais pas aussi bon pour des périodes de temps même. Alors, où placer la première moyenne mobile lorsque M 4 Techniquement, la moyenne mobile tomberait à t 2,5, 3,5. Pour éviter ce problème, nous lisser les MA en utilisant M 2. Ainsi, nous lisser les valeurs lissées Si nous avons un nombre moyen pair de termes, nous devons lisser les valeurs lissées Le tableau suivant montre les résultats en utilisant M 4.Pour simplifier ma question, Disons que j'ai un tableau des dates trimestrielles et des chiffres de ventes par titre. Monthenddate, ID, Ventes J'ai besoin de calculer 4 moyennes mobiles trimestre de Ventes par ID. J'ai essayé de faire ce qui suit: La première étape pour créer un index de dates a fonctionné très bien, mais la partie CALCULATE MOVING AVERAGE me donne une erreur Un nom d'objet ou de colonne est manquant ou vide. Si je retire le MAX (monthenddate) de la ligne SELECT il s'exécute sans erreur mais me donne un résultat de table vide. Peut-être que mon approche est fondamentalement erronée. Merci d'avance pour votre aide. Également essayé à l'aide d'une sous-requête: FROM TempDateIndex l WHERE r. dateidx4 GROUP BY ID Msg 156, niveau 15, état 1, ligne 3 Syntaxe incorrecte près du mot clé SELECT. Msg 102, niveau 15, état 1, ligne 6 Syntaxe incorrecte près).David, Oui, MapReduce est prévu pour fonctionner sur une grande quantité de données. Et l'idée est qu'en général, les fonctions de carte et de réduction ne devraient pas prendre en compte le nombre de cartographes ou de combien de réducteurs il y a, c'est simplement l'optimisation. Si vous pensez soigneusement à l'algorithme que j'ai posté, vous pouvez voir qu'il n'a pas d'importance quel mappeur obtient ce que les portions des données. Chaque enregistrement d'entrée sera disponible pour chaque opération de réduction qui en a besoin. Ndash Joe K Sep 18 12 at 22:30 Au mieux de ma compréhension de la moyenne mobile n'est pas bien des cartes au paradigme MapReduce car son calcul est essentiellement glisser la fenêtre sur les données triées, tandis que MR est le traitement des plages non intersectées de données triées. La solution que je vois est la suivante: a) Pour implémenter un partitionneur personnalisé pour pouvoir faire deux partitions différentes en deux exécutions. Dans chaque course, vos réducteurs obtiendront des gammes de données différentes et calculeront la moyenne mobile si cela est approprié. Je vais essayer d'illustrer ceci: Dans la première exécution, les données pour les réducteurs devraient être: R1: Q1, Q2, Q3, Q4 R2: Q5, Q6, Q7, Q8 . Ici vous allez cacluate moyenne mobile pour certains Qs. Dans la prochaine exécution vos réducteurs devraient obtenir des données comme: R1: Q1. Q6 R2: Q6. Q10 R3: Q10..Q14 Et cacluler le reste des moyennes mobiles. Ensuite, vous aurez besoin d'agréger les résultats. Idée de partitionneur personnalisé qu'il aura deux modes de fonctionnement - chaque fois se divisant en gammes égales, mais avec un certain changement. Dans un pseudocode, il ressemblera à ceci. Partition (keySHIFT) (MAXKEYnumOfPartitions) où: SHIFT sera extrait de la configuration. MAXKEY valeur maximale de la clé. Je suppose pour la simplicité qu'ils commencent par zéro. RecordReader, IMHO n'est pas une solution puisqu'elle est limitée à la division spécifique et ne peut pas glisser sur la frontière splits. Une autre solution consisterait à implémenter une logique personnalisée de fractionnement des données d'entrée (elle fait partie de InputFormat). Il peut être fait pour faire 2 diapositives différentes, semblable au partitionnement.


No comments:

Post a Comment