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



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

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

这里有几件事需要提及。首先,我不认为你真的想要一个事实,这看起来像一个属性。事实通常包含一些可以应用sum/avg等操作的内容。除了你可以计数属性值,甚至"翻译"。一个属性值为一个度量值,带有"Max([Attribute])"。

我不会说这是不可能的,你真的想要一个事实,但除了min/max/count之外的任何东西都不会产生合理的结果。因为什么会&;Sum('Other')&;意味着(除了在你的数据库上生成错误)?

除此之外,在你的语句中还有另外两件事不起作用。

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

此外,当您发布错误消息和生成的SQL代码时,将更容易检查您正在寻找的内容。

这应该工作(替换正则表达式w有意义的东西,你想这个大小写不敏感等):ApplySimple("case when #0 ~ 'As Is' then 'As Is' when #0 ~ 'New' then 'New' ELSE 'Other' END",[NAME])

最新更新