对用户进行权限控制,编辑filter 时,选择维度,和事实表,那么权限控制不一样,需要对每一个展示表进行控制吗?
可否全局控制
INT和DOUBLE型数据
整形数据相除不会得到小数
在后台将起改成浮点型即可
添加报表连接,下载、刷新、复制等等
清理缓存时可以 查看 管理会话 通过日志可以知道 当前查看的是否为缓存数据
如果是缓存会显示 cache hit XXX
连查两次相同的 看会话 就能看出来了
下钻排序问题,如果对下钻列进行了排序,那么下钻的得到的明细也会排序,明细会排序完成后再跳到其他字段的排序
表格列格式隐藏某个字段,透视图中点击该字段属性,点击隐藏,再反选隐藏,就可以显示出来,从而实现表格隐藏,而透视图不隐藏
两个不同主题联合查询
1 获取第一个主题的逻辑SQL,获取第二个主题的逻辑SQL
2 将两个SQL进行拼接,然后填入逻辑SQL中
3 条件就会变成如下效果
资源来源:
4.3 - Against two Subject Areas (Multiple Subject Area)
In the 10g version, the GUI of Answer is not able to provide a wizard to create a SQL (answer) against multiple subject with the JOIN clause, you have to create it manually and past it in the advanced tab.
To develop your Logical SQL, you can use an ODBC client such as the Issue SQL module of BI Presentation Service.
Steps:
SELECT
SubjectArea1.saw_0 saw_0,
SubjectArea1.saw_1 saw_1,
SubjectArea1.saw_2 saw_2,
SubjectArea2.saw_2 saw_3
FROM
(
SELECT
Customers."Cust Id" saw_0,
Customers."Cust Last Name" saw_1,
"Sales Facts"."Amount Sold" saw_2
FROM
SH
WHERE
Customers."Cust Id" < 10
) SubjectArea1 FULL OUTER JOIN
(
SELECT
Customers."Cust Id" saw_0,
Customers."Cust Last Name" saw_1,
"FactWithCustomerDim"."Amount" saw_2
FROM
SH2
WHERE
Customers."Cust Id" < 9 ) SubjectArea2
ON
SubjectArea1."Cust Id" = SubjectArea2.saw_0
ORDER BY saw_0, saw_1
来自 <https://gerardnico.com/dat/obiee/obis/logical_sql/multiple_subject_area>
https://gerardnico.com/dat/obiee/obis/logical_sql/multiple_subject_area
华哥提供的列子:
SELECT f1.s_1 saw_0,
f1.s_2 saw_1,
f1.s_3 saw_2,
f1.s_4 saw_3,
f1.s_7 saw_4,
f1.s_6 saw_5,
f3.s7 saw_6,
f3.s2 saw_7,
CAST(f3.s1 AS CHAR) saw_8,
SUM((CASE
WHEN f1.s_3 = '主营业务收入-出口' AND f1.s_6 = '2014' THEN
f1.s_5
ELSE
NULL
END) BY f1.s_2,
f1.s_4,
f1.s_1,
f1.s_6,
f1.s_3) saw_9,
SUM((CASE
WHEN f1.s_3 = '主营业务成本-出口' AND f1.s_6 = '2014' THEN
f1.s_5
ELSE
NULL
END) BY f1.s_2,
f1.s_4,
f1.s_1,
f1.s_6,
f1.s_3) saw_10,
SUM((CASE
WHEN f1.s_3 = '营业费用-外贸合同费用-佣金' AND f1.s_6 = '2014' THEN
f1.s_5
ELSE
NULL
END) BY f1.s_2,
f1.s_4,
f1.s_1,
f1.s_6,
f1.s_3) saw_11,
CAST(SUM((CASE
WHEN f1.s_3 = '主营业务收入-出口' AND f1.s_6 = '2014' THEN
f1.s_5
ELSE
NULL
END) BY f1.s_2,
f1.s_4,
f1.s_1,
f1.s_6,
f1.s_3) AS DOUBLE) /
CAST((CASE
WHEN f1.s_3 = '主营业务收入-出口' AND f1.s_6 = '2014' THEN
f1.s_7
ELSE
NULL
END) AS DOUBLE) * 100 saw_12,
f3.s6 saw_13,
CAST(f3.s8 AS DOUBLE) saw_14,
REPORT_AGGREGATE(CAST(SUM((CASE
WHEN "f1"."s_3" = '主营业务收入-出口' AND "f1"."s_6" = '2014' THEN
"f1"."s_5"
ELSE
NULL
END) BY "f1"."s_2",
"f1"."s_4",
"f1"."s_1",
"f1"."s_6",
"f1"."s_3") AS DOUBLE) /
CAST((CASE
WHEN "f1"."s_3" = '主营业务收入-出口' AND "f1"."s_6" = '2014' THEN
"f1"."s_7"
ELSE
NULL
END) AS DOUBLE) * 100 BY "f1"."s_6",
CAST("f3"."s1" AS CHAR)),
REPORT_AGGREGATE("f3"."s6" BY "f1"."s_6", CAST("f3"."s1" AS CHAR)),
REPORT_AGGREGATE(CAST("f3"."s8" AS DOUBLE) BY "f1"."s_6",
CAST("f3"."s1" AS CHAR))
FROM (SELECT 0 s_0,
"北方工业-总账"."维度 - 北方合同(带国家)"."合同号" s_1,
"北方工业-总账"."维度 - 北方合同(带国家)"."国家" s_2,
"北方工业-总账"."维度 - 北方科目"."科目名称" s_3,
"北方工业-总账"."维度 - 北方部门"."部门名称" s_4,
"北方工业-总账"."指标 - 日记账借贷方金额"."本位币金额" s_5,
"北方工业-总账"."维度 - 时间"."年份" s_6,
PeriodRolling("北方工业-总账"."指标 - 日记账借贷方金额"."本位币金额",
-unbound,
0) s_7
FROM "北方工业-总账"
WHERE (("指标 - 日记账借贷方金额"."本位币金额" <> 0) AND
("维度 - 北方科目"."科目编码" IN ('54010101', '51010101', '55010101')) AND
"北方工业-总账"."维度 - 时间"."年份" = '2014')) f1
LEFT OUTER JOIN (select f2.s_1 as s1,
f2.s_2 as s2,
f2.s_3 as s3,
f2.s_4 as s4,
f2.s_5 as s5,
f2.s_6 as s6,
f2.s_7 as s7,
f2.s_8 as s8
from (SELECT 0 s_0,
"北方工业-经营分析"."维度 - 项目多维"."销售主合同" s_1,
"北方工业-经营分析"."维度 - 项目管理时间"."付款年份" s_2,
"北方工业-经营分析"."维度 - 项目多维"."国家名称" s_3,
"北方工业-经营分析"."维度 - 项目多维"."国家编码" s_4,
"北方工业-经营分析"."维度 - 项目多维"."销售部门名称" s_5,
SUM((IFNULL(FILTER("北方工业-经营分析"."指标 - 合同测算"."人民币金额"
USING "北方工业-经营分析"."维度 - 合同测算信息"."测算类别" =
'RECEIVE'),
0) -
IFNULL(FILTER("指标 - 合同测算"."人民币金额"
USING "维度 - 合同测算信息"."测算类别" =
'PAYMENT'),
0) -
(IFNULL(FILTER("指标 - 合同测算"."人民币金额"
USING "维度 - 合同测算信息"."测算类别" =
'EXPENSE'),
0) -
IFNULL(FILTER("指标 - 合同测算"."人民币金额"
USING "北方工业-经营分析"."维度 - 合同测算信息"."类别" =
'其他费用'),
0))) BY
"北方工业-经营分析"."维度 - 项目多维"."销售主合同",
"北方工业-经营分析"."维度 - 合同测算信息"."状态",
"北方工业-经营分析"."维度 - 项目多维"."国家名称",
"北方工业-经营分析"."维度 - 项目多维"."国家编码",
"北方工业-经营分析"."维度 - 项目多维"."销售部门名称") /
SUM(FILTER("指标 - 合同测算"."人民币金额" USING
"维度 - 合同测算信息"."测算类别" = 'RECEIVE') BY
"北方工业-经营分析"."维度 - 项目多维"."销售主合同",
"北方工业-经营分析"."维度 - 合同测算信息"."状态",
"北方工业-经营分析"."维度 - 项目多维"."国家名称",
"北方工业-经营分析"."维度 - 项目多维"."国家编码",
"北方工业-经营分析"."维度 - 项目多维"."销售部门名称") * 100 s_6,
"北方工业-经营分析"."维度 - 项目多维"."项目名称" s_7,
PeriodRolling(FILTER("北方工业-经营分析"."指标 - 付款实际明细"."人民币金额"
USING("北方工业-经营分析"."维度 - OU"."OU Number" = '22') AND
("北方工业-经营分析"."指标 - 付款实际明细"."TASK_TYPE" NOT IN
('合同收入', '库存')) AND
("北方工业-经营分析"."指标 - 付款实际明细"."预算性质" =
'合同费用')),
-unbound,
0) s_8
FROM "北方工业-经营分析"
WHERE ("维度 - 项目多维"."组织编号" = '22')) f2
WHERE f2.s_2 = '2014') f3
on (f1.s_1 = f3.s1)
WHERE CAST(f3.s1 AS CHAR) IS NOT NULL
ORDER BY saw_0, saw_1, saw_2, saw_3, saw_5, saw_6, saw_7, saw_8
使用PeriodRolling函数,直接计算某个度量值从无到有的总值,加入filter 进行限制