当前位置: 首页 > 面试题库 >

在SQL中创建分区函数

陈胤
2023-03-14
问题内容

我已经创建了分区函数,但是无法将其应用于表。我不确定我要去哪里错。

这是我的分区函数:

     CREATE PARTITION FUNCTION StaticDateMonthPartition (int)
     AS RANGE left
     FOR VALUES     (   
                    20120301,
                    20120401,
                    20120501,
                    20120601,
                    20120701,
                    20120801,
                    20120901,
                    20121001,
                    20121101,
                    20121201,
                    20130101,
                    20130201
                    )

尝试应用于此表:

    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[partition_OLAP_Fact_vvv]') AND type in (N'U'))
    DROP TABLE [dbo].[partition_OLAP_Fact_vvv]
    GO

    CREATE TABLE [dbo].[partition_OLAP_Fact_vvv]
    (
        FFFFactvvvId            bigint,
        CORStaticDateId         int,
        CORVersionvvvId         bigint,
        vvvCount                tinyint,
        UPB                     decimal(18, 2)
    ) ON  CORStaticDateMonthPartition ([CORStaticDateId])

但是,当我尝试执行脚本时,出现此错误:

    Invalid partition scheme 'CORStaticDateMonthPartition' specified

请帮忙。

分步骤重新发布我的代码

皮纳尔的补习非常棒!这是一个简短的摘要

  1. 为每个分区添加文件组

    Alter Database [database]   Add FileGroup partition_201207
    
  2. 创建分区功能

    CREATE PARTITION FUNCTION Partition_Range_CORStaticMonth(int)
    

    AS RANGE left
    FOR VALUES (20120301)

  3. 创建分区方案

    CREATE PARTITION SCHEME Partition_Scheme_CORStaticMonth
    

    AS PARTITION Partition_Range_CORStaticMonth
    TO (FFF_Fact_vvv_201203)

  4. 将文件添加到文件组

    ALTER DATABASE [database]
    

    ADD FILE(
    NAME = N’FFF_Fact_vvv_201203’,
    FILENAME = N’C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\FFF_Fact_vvv_201203.ndf’ ,
    SIZE = 2048KB ,
    FILEGROWTH = 1024KB
    )
    TO FILEGROUP [FFF_Fact_vvv_201203]

  5. 应用分区方案的构建表

    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[partition_Table]') AND type in (N'U'))
    

    DROP TABLE [dbo].[partition_Table]
    GO

    CREATE TABLE [dbo].[partition_Table]
    (
    CORStaticDateId int
    ) ON Partition_Scheme_CORStaticMonth ([CORStaticDateId])


问题答案:

您需要一个分区方案才能应用于表。

顺序是:

1)创建文件组

2)创建分区功能

3)将分区方案附加到文件组(使用分区功能)

4)在分区方案上创建表

检查此链接以获取教程



 类似资料:
  • 我有以下制表符分隔的示例数据集: 我正在对此数据运行一些转换,最终数据位于spark dataset中。之后,我用“period”分区将该数据集写入s3。因为我也希望在s3文件中使用period,所以我正在从from period列创建另一列“datasetperiod”。 我的scala函数来保存TSV数据集。 在S3上保存数据集的Scala代码。为S3上的分区添加新列datasetPeriod

  • 这是将Spark dataframe保存为Hive中的动态分区表的后续操作。我试图在答案中使用建议,但无法在Spark 1.6.1中使用 任何推动这一进程的帮助都是感激的。 编辑:还创建了SPARK-14927

  • 我有以下代码: ...原因:java.lang.ClassNotFoundException:com.fasterxml.jackson.databind.jsonNode在java.base/jdk.internal.loader.builtInclassLoader.LoadClass(builtInclassLoader.java:581)在java.base/jdk.internal.lo

  • 使用这种语法,我试图从sql查询中提取用户编写的表达式。 例如,我想从这个查询中提取FNAME、LName和name。 [解析树] 我可以使用ListNor提取“名称”: 但是当我试图用

  • 问题内容: 经过一番搜索和阅读文档后,很明显,您可以在SQL Server中编写用户定义的函数,这些函数被标记为确定性或非确定性的函数,具体取决于主体中使用的内置函数。 RAND()列在非确定性函数下(请参阅msdn article)。那为什么不能在函数中使用它呢? 问题答案: 因为它有副作用。 函数中不允许有副作用的构造。它的副作用是更改某些内部状态,以跟踪上次发布的值。 我认为您可以通过将其包