Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssas 在尝试删除某个集合之前,测试该集合是否存在_Ssas_Mdx - Fatal编程技术网

Ssas 在尝试删除某个集合之前,测试该集合是否存在

Ssas 在尝试删除某个集合之前,测试该集合是否存在,ssas,mdx,Ssas,Mdx,在SQL中,在删除表之前,我将首先检查它是否存在,以免引起错误,如下所示: IF OBJECT_ID('TEMPDB..#table') IS NOT NULL BEGIN DROP TABLE #table END 在MDX中,我可以先检查set或member是否已经存在,然后再尝试删除它 目前,我在一些.mdx文件中具有以下结构。我向多维数据集中添加一个自定义集,然后在随后的几个脚本中使用该集,即它们是多批脚本 /* //I run the following m

SQL
中,在删除表之前,我将首先检查它是否存在,以免引起错误,如下所示:

IF OBJECT_ID('TEMPDB..#table') IS NOT NULL 
  BEGIN 
      DROP TABLE #table 
  END
MDX
中,我可以先检查
set
member
是否已经存在,然后再尝试删除它

目前,我在一些
.mdx
文件中具有以下结构。我向多维数据集中添加一个自定义集,然后在随后的几个脚本中使用该集,即它们是多批脚本

/*
//I run the following manually...
DROP SET [XCube].[xSet]
*/

CREATE 
    SET [XCube].[xSet] AS
        blah blah

1.
SELECT x FROM XCube USING variousconditions AND xSet
GO

2.
SELECT y FROM XCube USING variousconditions AND ySet
GO

3.
SELECT y FROM XCube USING variousconditions AND ySet
GO
把上述背景放在一边,我的问题很简单:


如何测试
xSet
是否存在,以便只有在需要时才能执行
DROP SET[XCube].[xSet]

我可以给您一个部分答案:您可以在中找到有关多维数据集对象的信息,这些信息类似于关系数据库中的
信息模式
视图。从SQL Server 2008开始,您可以使用有限的SQL子集(没有联接,只是where子句中的简单
column\u name='value'
条件,…)访问它们,如下所示:

select * 
  from $SYSTEM.MDSCHEMA_SETS
 where SET_NAME = 'xSet'
   and CUBE_NAME = 'XCube'
Analysis Services会自动检测查询是SQL还是MDX(或者,从SQL2012开始,是DAX)


如果集合存在,这将返回一条记录,如果集合不存在,则返回一条记录。但我不知道MDX中有一种机制可以根据结果有条件地执行代码。

您希望在什么上下文中执行此操作?冗长的批处理脚本在SSA中并不常见。可以1)在计算脚本中创建集合,2)在用户会话中创建集合,3)在查询的
WITH
子句中创建集合。至少对于1和3来说,你知道整个环境,对于2来说,你也在控制你所做的事情。我看到的唯一原因是避免2和3与1和2中已经存在的集合发生名称冲突。但在大多数情况下,选择合理的名称应该避免这种情况,特别是在实践中,每个立方体只有几个集合。@FrankPl好的-让我编辑OP,让您了解上下文,尽管我的问题非常简单-“如何在不抛出错误的情况下测试自定义集合的存在?”这很有趣,缺乏条件可能性令人惊讶,值得提出一个新问题