微策略应用简单的特定文本

问题描述 投票:0回答:2

在 Microstrategy 中,我尝试创建一个新事实,该事实根据 NAME 字段中包含的文本类型返回特定名称。以下是我尝试过的方法,但没有成功。

ApplySimple("case when #0 contains 'As Is' then 'As Is' when contains 'New'  then 'New' ELSE 'Other' END",[NAME])

case microstrategy
2个回答
0
投票

这里有几件事要提一下。 首先,我认为您并不真正想要一个事实,这对我来说看起来像是一个属性。事实通常包含一些用于应用诸如求和/平均值等操作的内容。此外,您可以计算属性值,甚至可以使用f.e.将属性值“转换”为度量值。 “最大([属性])”。

我不会说你确实想要一个事实,但除了最小/最大/计数之外的任何东西都不会产生合理的结果。因为“Sum('Other')”是什么意思(除了在数据库上生成错误之外)?

除此之外,你的陈述中还有两件事是行不通的。

  1. 第二个CASE条件必须重复与#0/[NAME]的比较,即“当#0包含'NEW'时”。为此,您可以在查询中重复使用位置参数,无需为此传递重复的参数。
  2. 您不能在 applysimple 查询中使用 MSTR 函数,您必须使用特定于数据库的代码。这是直通函数的缺点之一。我认为这在这里不会有问题,只是切换数据库时需要注意的事情。

此外,当您发布错误消息并生成 SQL 代码时,会更容易检查您要查找的内容。

这应该有效(将正则表达式替换为有意义的内容,您是否希望不区分大小写等等):

ApplySimple("case when #0 ~ 'As Is' then 'As Is' when #0 ~ 'New'  then 'New' ELSE 'Other' END",[NAME])


0
投票

我使用Applysimple: ApplySimple("'#0'", REDUCAO),但返回 #0 namecolumn 不是一个值,请帮助我...

© www.soinside.com 2019 - 2024. All rights reserved.