我有一个用户数据库,每个用户记录都有“用户ID”和“组”。过滤掉一大块记录后,我想总计每组中的用户数量。目前我正在通过计算这样做:
#include <iostream>
using namespace std;
int replace(char *s2, char target, char replacementChar);
const int MAX_SIZE = 128;
int main()
{
char str2[MAX_SIZE], target, replacement;
int change;
cout << "Enter your string : " << endl;
cin.getline(str2, MAX_SIZE);
cout << "What's your target?" << endl;
cin >> target;
cout << "What do you want to replace it with?" << endl;
cin >> replacement;
replace(str2, target, replacement);
}
int replace(char *s2, char target, char replacementChar)
{
int change = 0;
for(int i=0; s2[i]!='\0'; i++)
{
if(s2[i] == target)
{
swap(s2[i], replacementChar);
change++;
}
}
cout << "There were " << change << " change(s)." << endl;
cout << s2;
return change;
}
这里的问题是这个计算似乎忽略了我过滤掉的所有记录,只是从所有未过滤的数据中得出每组的总计数。
是否有一种快速方法可以在应用过滤器后对每个组中的可见用户数进行求和?
答案 0 :(得分:3)
解决此问题的最简单方法是利用Tableau中的操作顺序。
您目前遇到的问题是在维度过滤器之前执行LOD计算。
如果要计算不同细节级别的字段,那么视图比LOD仍然是可行的方法。您需要做的就是在计算固定计算之前强制使用过滤器来应用过滤器。
要执行此操作,请将过滤器更改为上下文过滤器。通过右键单击过滤器并选择“添加到上下文来完成此操作。您将看到过滤器从蓝色变为灰色。
您的计算字段现在应该对任何上下文过滤器都很敏感。
了解更多here