需要在 Impala 中创建一个视图,其中 Un-Pivots、Pivots 和 Union 都是它
Need to create a view in Impala which Un-Pivots, Pivots and Union's it altogether
我第一次尝试在 SQL 中做一些适当的事情,只是在复制一些我已经可以通过 Alteryx 轻松完成的事情时遇到了麻烦。
本质上,需要一些基本的数据整理来创建我已经在 Impala/Hive 中创建的 Table 的摘要。基本的 table 需要分解成更小的 table(未旋转和旋转),然后将它们联合在一起以创建聚合的 table.
Table如下:
Run_Code | ID | ColB | ColC | ColD | ColE | ColF | ColG | TaxExpense | RetainedExpense | IncomeExpense | Year
-----------------------------------------------------------------------------------------------------------------
run1 | 21 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234.56789 | 1234.56789 | 1234.56789 | Year1
run1 | 22 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234.56789 | 1234.56789 | 1234.56789 | Year2
run1 | 23 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234.56789 | 1234.56789 | 1234.56789 | Year3
run1 | 24 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234.56789 | 1234.56789 | 1234.56789 | Year4
目前以下是在Alteryx中完成的;其中只有 TaxExpense 被选中,然后为 Year 取消透视,然后作为列透视回。
Run_Code | ID | ColB | ColC | ColD | Name | Year1 | Year2 | Year3 | Year4
-----------------------------------------------------------------------------------------------------------------
run1 | 21 | 1234 | 1234 | 1234 | Tax Expense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | Tax Expense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | Tax Expense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | Tax Expense | (sum) | (sum) | (sum) | (sum)
保留费用和收入支出也是如此。
Run_Code | ID | ColB | ColC | ColD | Name | Year1 | Year2 | Year3 | Year4
-----------------------------------------------------------------------------------------------------------------
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
最终结果如下,所需结果如下:
Run_Code | ID | ColB | ColC | ColD | Name | Year1 | Year2 | Year3 | Year4
-----------------------------------------------------------------------------------------------------------------
run1 | 21 | 1234 | 1234 | 1234 | TaxExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | TaxExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | TaxExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | TaxExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | IncomeExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | IncomeExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | IncomeExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | IncomeExpense | (sum) | (sum) | (sum) | (sum)
感谢任何帮助创建解决上述问题的 SQL。
嗯。 . .如果我理解正确,你可以取消透视并重新聚合:
select Run_Code, ID, ColB, ColC, ColD,
sum(case when year = 'year1' then expense end) as year_1,
sum(case when year = 'year2' then expense end) as year_2,
sum(case when year = 'year3' then expense end) as year_3,
sum(case when year = 'year4' then expense end) as year_4
from ((select Run_Code, ID, ColB, ColC, ColD, 'TaxExpense' as name, TaxExpense as expense, year
from t
) union all
(select Run_Code, ID, ColB, ColC, ColD, 'RetainedExpense' as name, RetainedExpense, year
from t
) union all
(select Run_Code, ID, ColB, ColC, ColD, 'IncomeExpense' as name, IncomeExpense, year
from t
)
) t
group by Run_Code, ID, ColB, ColC, ColD, name
我第一次尝试在 SQL 中做一些适当的事情,只是在复制一些我已经可以通过 Alteryx 轻松完成的事情时遇到了麻烦。
本质上,需要一些基本的数据整理来创建我已经在 Impala/Hive 中创建的 Table 的摘要。基本的 table 需要分解成更小的 table(未旋转和旋转),然后将它们联合在一起以创建聚合的 table.
Table如下:
Run_Code | ID | ColB | ColC | ColD | ColE | ColF | ColG | TaxExpense | RetainedExpense | IncomeExpense | Year
-----------------------------------------------------------------------------------------------------------------
run1 | 21 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234.56789 | 1234.56789 | 1234.56789 | Year1
run1 | 22 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234.56789 | 1234.56789 | 1234.56789 | Year2
run1 | 23 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234.56789 | 1234.56789 | 1234.56789 | Year3
run1 | 24 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234 | 1234.56789 | 1234.56789 | 1234.56789 | Year4
目前以下是在Alteryx中完成的;其中只有 TaxExpense 被选中,然后为 Year 取消透视,然后作为列透视回。
Run_Code | ID | ColB | ColC | ColD | Name | Year1 | Year2 | Year3 | Year4
-----------------------------------------------------------------------------------------------------------------
run1 | 21 | 1234 | 1234 | 1234 | Tax Expense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | Tax Expense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | Tax Expense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | Tax Expense | (sum) | (sum) | (sum) | (sum)
保留费用和收入支出也是如此。
Run_Code | ID | ColB | ColC | ColD | Name | Year1 | Year2 | Year3 | Year4
-----------------------------------------------------------------------------------------------------------------
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
最终结果如下,所需结果如下:
Run_Code | ID | ColB | ColC | ColD | Name | Year1 | Year2 | Year3 | Year4
-----------------------------------------------------------------------------------------------------------------
run1 | 21 | 1234 | 1234 | 1234 | TaxExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | TaxExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | TaxExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | TaxExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | RetainedExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | IncomeExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | IncomeExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | IncomeExpense | (sum) | (sum) | (sum) | (sum)
run1 | 21 | 1234 | 1234 | 1234 | IncomeExpense | (sum) | (sum) | (sum) | (sum)
感谢任何帮助创建解决上述问题的 SQL。
嗯。 . .如果我理解正确,你可以取消透视并重新聚合:
select Run_Code, ID, ColB, ColC, ColD,
sum(case when year = 'year1' then expense end) as year_1,
sum(case when year = 'year2' then expense end) as year_2,
sum(case when year = 'year3' then expense end) as year_3,
sum(case when year = 'year4' then expense end) as year_4
from ((select Run_Code, ID, ColB, ColC, ColD, 'TaxExpense' as name, TaxExpense as expense, year
from t
) union all
(select Run_Code, ID, ColB, ColC, ColD, 'RetainedExpense' as name, RetainedExpense, year
from t
) union all
(select Run_Code, ID, ColB, ColC, ColD, 'IncomeExpense' as name, IncomeExpense, year
from t
)
) t
group by Run_Code, ID, ColB, ColC, ColD, name