更改 PerformancePoint Time Intelligence 后公式默认值
-
20-09-2019 - |
题
有没有办法更改时间智能帖子公式的默认值?
我有一个仪表板,我在其中使用“起始日期”和“截止日期”过滤器来计算用户选择的时间段之间的值,对于这些过滤器,我使用 时间智能后公式,但是,当用户进入页面时,两个过滤器上的默认值始终是今天的日期。 (从今天到今天的分析对此没有意义)
我想要的是让起始日期大约是今天日期之前的 30 天,但不强制接收过滤器的报告,我只是希望过滤器有一个默认值,然后让用户选择他想要的任何值。
有人知道有什么可以做的,或者这是不能做的吗?
编辑:
通过研究 在这个链接上 告诉我这不能通过正常方式完成:
sgrice 提出了这个问题:我喜欢日历以及将其轻松链接到我的立方体;但是,我们从来没有默认日期“今天”的数据。因此,我们的仪表板在第一次出现时始终是空白的,我们的客户必须选择一个日期。有没有办法更改默认日期?
该帖子的作者在评论回复中说道:
不抱歉,但我会将其作为功能建议输入。
谢谢,
艾莉森
所以没有正式的方法可以做到这一点,所以我正在尝试以另一种方式来做到这一点。所以我试图通过 javascript 以一种更加无证和晦涩的方式来做到这一点。如果能找到一种方法来做到这一点,我将不胜感激。
解决方案 3
我已经解决了它的JavaScript throught和JQuery。 我基本上查日历做了什么,并再现它,我已经意识到这toogled日历的可见性,当你点击的一天,因为我不感兴趣的我删除它,叫这个名字pps_TI_calendar_render的方法经过三个参数,一个是日历TD的ID,而另两个是你在一个完整的名称已选定的日期。 我检查它是否会接受只有两个参数,一个简单的格式的日期 结果是这样的JavaScript调用(请注意,我只改变第一PPS日期日历):
pps_TI_calendar_render( $('.pps_calendarToggleDown').first().parent().closest('td').attr('id'),'01/01/2010');
(此日期格式是月/日/年) 如果你把例如14/01/2010它将会把日历月第一2011年因此要小心。
注意在第一个参数我使用一个jQuery选择让我想,这可能是改变了ID,但是参数必须是元素PPS的ID使用。
希望这有助于。
其他提示
好吧,我已经关注这个线程一段时间了,并尝试了很多方法来让它工作,最终我破解了几乎所有 SP2010 和 SP2007 JavaScript,并发现以下内容可以在 SP2010 上工作,并且我让它在 SP2007 中工作不同的 tad 前缀。
步骤1:找出日历部分的 Javascript ID 前缀是什么。
- 为此,请在 IE8 或 IE9 中启动仪表板,然后按 F12 启动 Javascript 调试器。
- 使用 Javascript GetElementByTagName("TD") 获取页面上所有 TD 标签的完整列表。
- 查找 id 中具有 GUID 且以 _Selection 和 Selection_Toggle 结尾的标签。
- 这些将是您的日历过滤器部分。请注意起始前缀(在 SP2007 中为 ct_100_,在 SP2010 中为 pps_)
第2步:将以下 Javascript 添加到用于仪表板的母版页末尾(查看帖子末尾)
步骤3:保存母版页并刷新浏览器,日期应更改为昨天。
我还为仪表板创建了这个,上面有两个日历过滤器,以允许日期范围过滤,这会将第一个日期设置为 11 天前,将第二个日期设置为昨天。任何问题 emil.swanepoel@live.co.za
<script type="text/JavaScript">
var isFirstLoad;
var calendarLoaded = false;
var srcID = "ctl00_m_WebPart_293af46d1c5c4320893d47f86614325bSelection";
var strDate = "Tue Aug 2 00:00:00 UTC+0200 2011";
var t;
var dateBackA = 1;
var dateBackB = 10;
testForCalendar();
function testForCalendar()
{
isFirstLoad = true;
if(calendarLoaded != true)
t = setTimeout("waitForIt()", 5);
}
function waitForIt()
{
var foundControl = -1;
var t = document.getElementsByTagName("TD");
var ts = "";
var subDateFound = false;
var xPoint = 0;
for(var x = 0; x < t.length; x++)
{
if((t[x].id.indexOf("pps_") == 0) && t[x].id.indexOf("Selection_Toggle") > 0)
{
foundControl = x;
ts = t[x].id.substring(0, t[x].id.indexOf("_Toggle"));
xPoint = x;
x = t.length;
}
}
if(foundControl > -1)
{
if(isFirstLoad == true)
{
if(t[xPoint].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML.indexOf("Start Date:") > -1)
calendarIntercept(ts, calendarDate(new Date(), dateBackB));
else
calendarIntercept(ts, calendarDate(new Date(), dateBackA));
waitForItSub(xPoint, ts);
calendarLoaded = true;
isFirstLoad = false;
}
else
t = setTimeout("waitForIt()", 5);
}
else
t = setTimeout("waitForIt()", 5);
}
function waitForItSub(startPoint, firstTag)
{
var foundControl = -1;
var t = document.getElementsByTagName("TD");
var tsub = "";
var xPointNew = 0;
for(var x = (startPoint++); x < t.length; x++)
{
if(t[x].id.indexOf(firstTag) == -1)
{
if((t[x].id.indexOf("pps_") == 0) && t[x].id.indexOf("Selection_Toggle") > 0)
{
foundControl = x;
tsub = t[x].id.substring(0, t[x].id.indexOf("_Toggle"));
xPointNew = x;
x = t.length;
}
}
}
if(foundControl > -1)
{
if(isFirstLoad == true)
{
if(t[xPointNew].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML.indexOf("Start Date:") > -1)
calendarIntercept(tsub, calendarDate(new Date(), dateBackB));
else
calendarIntercept(tsub, calendarDate(new Date(), dateBackA));
calendarLoaded = true;
isFirstLoad = false;
}
}
}
function calendarIntercept(inSrcID, inDate)
{
strDate = (inDate.getMonth()+1) + "/" + inDate.getDate() + "/" + inDate.getFullYear();
pps_TI_calendar_render ( inSrcID, strDate , strDate );
}
function calendarDate(inDate, daysBack)
{
var returnValue = new Date();
returnValue.setDate(returnValue.getDate() - daysBack);
return returnValue;
}
</script>
您必须创建两个日历,然后映射一个开始日期和一个结束日期。这在描述在表现来看博客此评论。
该技术如下:
要与你需要创建2个日历开始和结束日期的工作。然后你一个日历链接到<>,另一个<>。由于公式你只要输入日:天。 在报告中,您将不得不创建一组名为“日期范围”或类似的东西。
WITH
SET [DateRange] AS
<<StartDate>>.Item(0) : <<EndDate>>.Item(0)
SELECT
NON EMPTY
[DateRange]
ON COLUMNS,
{ [Measures].[Price Total] }
ON ROWS
FROM [TurnoverCube]