Microstrategy 简单应用特定文本

Microstrategy Apply Simple with Certain Text

在 Microstrategy 中,我试图创建一个新事实,即 returns 一个特定的名称,具体取决于字段 NAME 中包含的文本类型。以下是我尝试过但没有用的方法。

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

这里有几件事要提一下。 首先,我不认为你真的想要一个事实,这对我来说看起来像是一个属性。事实通常包含一些应用操作的东西,例如 sum/avg/etc。此外,您 可以 计算属性值,甚至可以使用 f.e 将属性值“翻译”为度量值。 “最大值([属性])”。

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

除此之外,您的陈述中还有另外两点行不通。

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

此外,当您 post 错误消息并生成 SQL 代码时,检查您正在寻找的内容会更容易。

这应该有效(将正则表达式替换为有意义的内容,您是否需要不区分大小写等):ApplySimple("case when #0 ~ 'As Is' then 'As Is' when #0 ~ 'New' then 'New' ELSE 'Other' END",[NAME])