Skip to main content

Indicateur de

Quel est l'indicateur? Veuillez consulter la photo ci-dessous:

Les ventes mensuelles sur la photo, les ventes mensuelles, les ventes mensuelles sont de jour non. 1 Commencez à ajouter des ventes pour la journée en cours. Par exemple: dans l'image ci-dessus, au 2020-01-11, les ventes mensuelles +02 Sales + ... + 11 ventes sont vendues + ... + 11.

Ville, mois à présenter, puis a dit, puis , vente de vente de cette année = vente + mois 2 mois 1 + ... + ... + ... + ... + ... + ... + ... + 0 er février Vente 1 + Ventes + 31 mars.

Sales + Ventes + MARDI VENTE + MERCREDI Sales + Ward Sales + Sales Sales + Sales Sunday + Sunday Sales


] Il s'appelle les indicateurs appelés.

Comment calculer


Quel est l'indicateur de fin? Disons n'importe quoi pour calculer l'index.

Premièrement, parlez d'utiliser la fonction de fenêtre pour calculer aujourd'hui. S'il vous plaît voir:

with detail as ( select '2019-06-06' as sale_date , 'shop1' as shop_id , 10 as sale_amt union all select '2019-06-05' as sale_date , 'shop1' as shop_id , 14 as sale_amt union all select '2019-06-03' as sale_date , 'shop1' as shop_id , 17 as sale_amt union all select '2019-06-02' as sale_date , 'shop1' as shop_id , 18 as sale_amt union all select '2019-06-01' as sale_date , 'shop1' as shop_id , 13 as sale_amt union all select '2019-06-06' as sale_date , 'shop2' as shop_id , 11 as sale_amt union all select '2019-06-05' as sale_date , 'shop2' as shop_id , 15 as sale_amt union all select '2019-06-03' as sale_date , 'shop2' as shop_id , 18 as sale_amt union all select '2019-06-02' as sale_date , 'shop2' as shop_id , 19 as sale_amt union all select '2019-06-01' as sale_date , 'shop2' as shop_id , 16 as sale_amt), dim_date as ( select '2019-06-01' as date_d , '2019-06' as month_code union all select '2019-06-02' as date_d , '2019-06' as month_code union all select '2019-06-03' as date_d , '2019-06' as month_code union all select '2019-06-04' as date_d , '2019-06' as month_code union all select '2019-06-05' as date_d , '2019-06' as month_code union all select '2019-06-06' as date_d , '2019-06' as month_code union all select '2019-06-07' as date_d , '2019-06' as month_code union all select '2019-06-08' as date_d , '2019-06' as month_code union all select '2019-06-09' as date_d , '2019-06' as month_code union all select '2019-06-10' as date_d , '2019-06' as month_code union all select '2019-06-11' as date_d , '2019-06' as month_code union all select '2019-06-12' as date_d , '2019-06' as month_code )select a.sale_date , a.shop_id , a.sale_amt , sum(a.sale_amt) over(partition by b.month_code , a.shop_id order by a.sale_date) as agg_sale_amtfrom detail as a left join dim_date as b on a.sale_date = b.date_d TruLa question ci-dessus est déployée avec la fonction Ouvrir la fenêtre.

Nous rencontrerons également les problèmes suivants.

Du point de vue de l'image, nous pouvons voir que B n'est pas ouvert d'ici 2020-01-03, il n'y a donc pas de vente. En 2020-2001-04, il ne peut y avoir aucune entreprise en raison de la cause de la maladie. Après cela, nous avons utilisé la fonction de fenêtre lorsque nous avons utilisé le mois du mois 2020-01-03.

Que dois-je faire? L'une d'abord, cette table contient des dates, stocker des informations, peut être la voie ci-dessous.

Nous gérons cette table nommée Full_Dim, puis nous pouvons l'écrire comme ceci.

Le rôle de Full_DIM est de compléter toutes les valeurs de taille. Cela le fait, et le problème continu mentionné ci-dessus est résolu.
Création de la méthode FULL_DIM peut utiliser les tables de taille pour vous connecter, également, vous pouvez également utiliser la table de fait FIC. with full_dim as ( select '2019-01-01' as date_d, '2019-01' as month_code , 'shop1' as shop_code union all select '2019-01-02' as date_d, '2019-01' as month_code , 'shop1' as shop_code union all select '2019-01-03' as date_d , '2019-01' as month_code , 'shop1' as shop_code union all select '2019-01-04' as date_d , '2019-01' as month_code , 'shop1' as shop_code union all select '2019-01-05' as date_d , '2019-01' as month_code , 'shop1' as shop_code union all select '2019-01-06' as date_d , '2019-01' as month_code , 'shop1' as shop_code union all select '2019-01-02' as date_d , '2019-01' as month_code , 'shop2' as shop_code union all select '2019-01-03' as date_d , '2019-01' as month_code , 'shop2' as shop_code union all select '2019-01-04' as date_d , '2019-01' as month_code , 'shop2' as shop_code union all select '2019-01-05' as date_d , '2019-01' as month_code , 'shop2' as shop_code union all select '2019-01-06' as date_d , '2019-01' as month_code , 'shop2' as shop_code )select a.date_d ,a.shop_code ,sum(b.sale_amt) over(partiton by a.shop_code order by a.date_d) as sale_amtfrom full_dim as aleft join fct_sale_d as b on a.shop_code = b.shop_code and a.date_d = b.date_d

Méthode:


Comment calculer la fonction de fenêtre

select a.date_d ,b.shop_code ,b.shop_name from dim_date as a-- 日期维表cross join dim_store as b -- 门店维表 Peut atteindre un montant total pour les calculer. Ensuite, il est dit que comment augmenter.
J'ai résumé les étapes suivantes: select shop_code , shop_name , sale_datefrom fct_sale_d where ts between 'start_date' and 'end_date' group by shop_code , shop_name , sale_date Calcul des ventes de la boutique quotidien
Calculez les données de la boutique quotidiennes

T et T + 1 Données pour utiliser Data T + 1 Coalesece () Effectuer la valeur du Maison de jour, et la valeur de différents magasins quotidiens définissent la valeur d'origine.

Utilisation de l'état d'avancement du processus pour évaluer, quel est le début de l'année et le début de l'année est maintenant.

Day Jour Sait:


Deuxièmement, calculez les ventes du magasin quotidien T + 1


Les données du troisième, T et t + 1 effectue l'ensemble

select sale_date ,shop_code ,shop_name ,sum(sale_amt) as sale_amt from fct_sale_d where ts between 'T' and 'T'

Quatrièmement, l'utilisation de la déclaration de jugement de processus actuelle et des mois en cours, la période est le début

select sale_date ,shop_code ,shop_name ,sum(sale_amt) as sale_amt from fct_sale_d where ts between 'T+1' and 'T+1' Avantages et inconvénients avancés et complets

Résumé: with table_t as (select sale_date ,shop_code ,shop_name ,sum(sale_amt) as sale_amt from fct_sale_d where ts between 'T' and 'T' ), table_t_1 as (select sale_date ,shop_code ,shop_name ,sum(sale_amt) as sale_amt from fct_sale_d where ts between 'T+1' and 'T+1' )select 'T+1' as sale_date , coalesce(a.shop_code ,b.shop_code) as shop_code , coalesce(a.shop_name ,b.shop_name) as shop_name , coalesce(a.sale_amt ,0)+coalesce(b.sale_amt ,0) as sale_amt from table_t as a full join table_t_1 as b on a.shop_code = b.shop_code Montant total adapté à la gestion des historique des données. Par exemple, nécessite des données historiques d'un an, nous cVous pouvez exécuter des données pendant une période de temps.
Des moyens croissants s'appliquent aux mises à jour chaque jour, où résout naturellement les lacunes de la taille la journée.Cependant, lors de la gestion des données historiques, vous devez exécuter une fois par jour.Tout le monde sait que la plate-forme informatique est prête à exécuter le processus de ressource pour une tâche de requête et la fréquentation des tâches exécutées de longue durée, mais de commencer et d'arrêter des tâches à proximité, cela ne profite donc pas aux données historiques.
with table_t as (select sale_date ,shop_code ,shop_name ,sum(sale_amt) as sale_amt from fct_sale_d where ts between 'T' and 'T' ), table_t_1 as (select sale_date ,shop_code ,shop_name ,sum(sale_amt) as sale_amt from fct_sale_d where ts between 'T+1' and 'T+1' ) , dim_date as ( select date_d , month_code , month_first_day_ind from dim_date where date_d between 'T+1' and 'T+1' )select 'T+1' as sale_date , coalesce(a.shop_code ,b.shop_code) as shop_code , coalesce(a.shop_name ,b.shop_name) as shop_name -- 如果sale_date为所在月的第一天,那不用向sale_amt字段中加入 T 的销售额 , if(c.month_first_day_ind= 1 , 0 , coalesce(a.sale_amt ,0))+coalesce(b.sale_amt ,0) as sale_amt from table_t as a full join table_t_1 as b on a.shop_code = b.shop_codeleft join dim_date as c on c.date_d = a.sale_date

Sujets

Catégories