英文:
How to do Descriptive Statistics in Qlik Sense
问题
在Qlik Sense中如何进行描述性统计?
我指的描述性统计是在一个表格中显示均值、标准误差、中位数、众数、标准偏差、样本方差、峰度、偏度、范围、最小值、最大值、总和和计数。
在Excel中,这非常容易实现。你只需转到顶部功能区的“数据”选项卡,然后选择“数据分析”,再选择“描述性统计”。你选择输入和输出,就完成了。请查看附加的图片了解我的意思。
在Qlik Sense中,我在哪里找到这个功能呢?
英文:
How to do Descriptive Statistics in Qlik Sense?
What I mean by Descriptive Statistics is to display Mean, Standard Error, Median, Mode, Standard Deviation, Sample Variance, Kurtosis, Skewness, Range, Minimum, Maximum, Sum, Count in one table.
This is really easy to do in Excel. All you need to do is go to 'Data' tab on top ribbon. Then 'Data Analysis'. Then 'Descriptive Statistics'. You select the input and then output and that is it. Please see attached image to know what I mean.
Where do I find this feature in Qlik Sense?
答案1
得分: 1
Qlik具有以下功能:
Sum()
:求和Count()
:计数Avg()
:平均值StErr()
:标准误差Median()
:中位数Mode()
:众数StDev()
:标准偏差Sqr()
:平方Kurtosis()
:峰度Skew()
:偏度Max()
:最大值Min()
:最小值
关于如何应用这些函数,有三种方法:
选项 1:数据加载编辑器
您可以使用以下脚本:
[Stats]:
Load
// [在此处分组字段...]
Sum([MyField]) as [MyField Sum]
, Count([MyField]) as [MyField Count]
, Avg([MyField]) as [MyField Mean]
, StErr([MyField]) as [MyField Standard Error]
, Median([MyField]) as [MyField Median]
, Mode([MyField]) as [MyField Mode]
, StDev([MyField]) as [MyField Standard Deviation]
, Sqr(StDev([MyField])) as [MyField Sample Variance]
, Kurtosis([MyField]) as [MyField Kurtosis]
, Skew([MyField]) as [MyField Snewness]
, Max([MyField]) - Min([MyField]) as [MyField Range]
, Min([MyField]) as [MyField Min]
, Max([MyField]) as [MyField Max]
Resident [Transactions]
// 按[在此处分组字段...]分组
;
选项 2:工作表 - 固定代码
您可以使用直接表格或数据透视表对象,并将所需函数作为单独的字段使用,如下所示:
- Sum:
=Sum([MyField])
- Count:
=Count([MyField])
- Mean:
=Avg([MyField])
- Standard Error:
=StErr([MyField])
- Median:
=Median([MyField])
- Mode:
=Mode([MyField])
- Standard Deviation:
=StDev([MyField])
- Sample Variance:
=Sqr(StDev([MyField]))
- Kurtosis:
=Kurtosis([MyField])
- Snewness:
=Skew([MyField])
- Range:
=Max([MyField]) - Min([MyField])
- Min:
=Min([MyField])
- Max:
=Max([MyField])
选项 3:工作表 - 动态
通过一些额外的努力,您可以使用户能够从筛选窗格中选择字段,以动态显示表中的描述性统计信息。
假设使用数据透视表,您可以使用以下表达式作为维度:
=ValueList('$(=Concat(distinct [$Field], ''', '''))')
这使用了 ValueList()
和 Concat()
函数来从应用程序的数据模型中获取可用字段的列表。
有关更多信息,请查看上述内容中的详细解释。
英文:
Qlik has functions for each of those items:
As far as applying those functions, you can achieve this in three ways.
Option 1: Data Load Editor
You can use script like this:
[Stats]:
Load
// [Group fields here...]
Sum([MyField]) as [MyField Sum]
, Count([MyField]) as [MyField Count]
, Avg([MyField]) as [MyField Mean]
, StErr([MyField]) as [MyField Standard Error]
, Median([MyField]) as [MyField Median]
, Mode([MyField]) as [MyField Mode]
, StDev([MyField]) as [MyField Standard Deviation]
, Sqr(StDev([MyField])) as [MyField Sample Variance]
, Kurtosis([MyField]) as [MyField Kurtosis]
, Skew([MyField]) as [MyField Snewness]
, Max([MyField]) - Min([MyField]) as [MyField Range]
, Min([MyField]) as [MyField Min]
, Max([MyField]) as [MyField Max]
Resident [Transactions]
// Group By [Group fields here...]
;
Option 2: Sheet - hard-coded
You can use a straight table or pivot table object and use the requisite functions as separate fields, like so:
- Sum:
=Sum([MyField])
- Count:
=Count([MyField])
- Mean:
=Avg([MyField])
- Standard Error:
=StErr([MyField])
- Median:
=Median([MyField])
- Mode:
=Mode([MyField])
- Standard Deviation:
=StDev([MyField])
- Sample Variance:
=Sqr(StDev([MyField]))
- Kurtosis:
=Kurtosis([MyField])
- Snewness:
=Skew([MyField])
- Range:
=Max([MyField]) - Min([MyField])
- Min:
=Min([MyField])
- Max:
=Max([MyField])
Option 3: Sheet - dynamic
With some extra effort, you can make it so that users can select fields from a filter pane to see descriptive stats in a table dynamically.
Assuming a pivot table is used, you can use this expression as the dimension:
=ValueList( '$(=Concat(distinct [$Field], ''', '''))' )
This uses the ValueList()
and Concat()
functions to get the list of available fields from the app's data model.
<Edit 1 for more info:>
The key here is the use of the $Field
system field, which is a field that is generated automatically by Qlik whenever you reload the data model. They are "hidden" fields, so they don't show up in the Assets pane or the selections bar.
The values of the field include all available fields from the data model. We use this because we want for the user to be able to select which fields are shown in our Descriptive Stats pivot table.
Here's what the expression is doing:
=Concat(distinct [$Field], ''', ''')
<-- Here, we are concatenating each distinct field in our data model, separating each field name with "quote, apostrophe, space, quote" like', '
. The reason we use three quotes together is because we want to include a quote in our resulting string so we have to escape it by using two quotes together.'$(= Concat(...) )'
<-- TheConcat()
function from above is "dollar sign expanded," meaning it is evaluated in-place. Note the quotes used ('$(...)'
) -- this means that the result of our dollar sign expansion will be a string.- When Qlik evaluates the above expression, it will see:
=ValueList( 'SalesAmount', 'MyField', 'Quota Number', etc. )
- ...instead of:
=ValueList( '$(=Concat(distinct [$Field], ''', '''))' )
- ^^That's the usefulness of the dollar sign expansion in this case.
- The
ValueList()
function is used to generate a "synthetic dimension", which is essentially a on-the-fly field that is precluded from being used in selections. It's entirely ephemeral. Now, normally you cannot use this function "dynamically" -- the function expects only a list of hard-coded strings as parameters. We get around this by using the dollar sign expansion shown in the above examples.
</Edit 1>
For our measures, we'll have to use some tricky script to dynamically insert our field values. This is an example of how you could do this for the Sum()
function:
=Pick(Match( ValueList( '$(=Concat(distinct [$Field], ''', '''))' ), '$(=Concat(distinct [$Field], ''', '''))')
, Sum([$(=Concat(distinct [$Field], ']' & chr(41) & ' , Sum' & chr(40) & '[' ))])
)
This uses the Pick()
and Match()
functions to choose the correct dynamically-created Sum()
function for each of our selected fields.
<Edit 2 for more info:>
Here's how this expression works:
- The
Pick(Match(...), ...)
part of the expression is a way to do pattern matching in Qlik without having to useIf()
statements (and sinceswitch
can't be used in chart expressions).Match()
returns the index of the item in a list of parameters whichPick()
then uses to choose a corresponding value. In this case we use them to say, for example, "when the field name is 'SalesAmount' pick the=Sum(SalesAmount)
expression; when the field name is 'MyField' pick the=Sum(MyField)
expression", etc. Match( ValueList( '$(=Concat(distinct [$Field], ''', '''))' ), '$(=Concat(distinct [$Field], ''', '''))')
<-- This achieves the matching behavior described above.Sum([$(=Concat(distinct [$Field], ']' & chr(41) & ' , Sum' & chr(40) & '[' ))])
<-- This expression uses dollar sign expansion (described in the Edit 1 above) to create a list ofSum()
functions for each field name. So instead of:Sum([$(=Concat(distinct [$Field], ']' & chr(41) & ' , Sum' & chr(40) & '[' ))])
- ...Qlik will see:
Sum([SalesAmount]), Sum([MyField]), Sum([Quota Number]), etc.
</Edit 2>
You can download my example QVF file here.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论