2016-09-07 56 views
0

是否有推出的数据了一种方法,看起来像这样:卷目录多达父

enter image description here

我所寻找的是这样的:

Y:\ DATA \ FS02-V \ Aetna \ ETL |数据,开发文件

因此,作为第一行的子节点的第二和第三行应该汇总到父节点,并且父节点应该显示包含的所有文件类型。我在SQL Server的工作,这是产生源表中的代码:

 SELECT 
     [MCL].[Category Description] As Category 
     , [SF].[Directory] as Directory 
     , CONVERT(BIGINT, [SF].[Length]) AS FileSize 
     , (SELECT MAX([Id]) FROM [dbo].[split](RIGHT([SF].[Directory],LEN([SF].[Directory])-1),'\')) AS [LevelsFromRoot] 
    FROM [dbo].[FS02V_SourceFiles] [SF] 
    INNER JOIN [dbo].[Extensions] [E] 
     ON [SF].[Extension] = [E].[Extension] 
    INNER JOIN [dbo].[MasterCategoryLookup] [MCL] 
     ON [MCL].CategoryID = [E].Category 
    ORDER BY [SF].[Directory] 

表DEF:

CREATE TABLE [dbo].[FS02V_SourceFiles](
    [Length] [float] NULL, 
    [Directory] [nvarchar](255) NULL, 
    [Extension] [nvarchar](255) NULL, 
    [Type] [nvarchar](max) NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 


CREATE TABLE [dbo].[Extensions](
    [Extension] [nvarchar](255) NULL, 
    [Type] [nvarchar](max) NULL, 
    [Category] [int] NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 

拆分功能:

ALTER FUNCTION [dbo].[Split] 
(
    @RowData nvarchar(max), 
    @SplitOn nvarchar(5) 
) 
RETURNS @RtnValue table 
(
    Id int identity(1,1), 
    Data nvarchar(max) 
) 
AS 
BEGIN 
    Declare @Cnt int 
    Set @Cnt = 1 

    While (Charindex(@SplitOn,@RowData)>0) 
    Begin 
     Insert Into @RtnValue (data) 
     Select 
      Data = ltrim(rtrim(Substring(@RowData,1,Charindex(@SplitOn,@RowData)-1))) 

     Set @RowData = Substring(@RowData,Charindex(@SplitOn,@RowData)+1,len(@RowData)) 
     Set @Cnt = @Cnt + 1 
    End 

    Insert Into @RtnValue (data) 
    Select Data = ltrim(rtrim(@RowData)) 

    Return 
END 

的路径(目录)存储为nvarchar,它应该是驱动器卷起来的父。我会假设路径需要被拆分,我的函数已经在做类似的工作来获得路径级别。我认为使用我的原始数据在SQL中会更容易,但是在一天结束时,我将在图表中对这些数据进行可视化处理,因此如果有人知道在将其输入到画面之前是否更容易使用sql,或者只是使用画面与我的源数据我也会尝试。

回答

0

解决这个很简单:

使用abolve SQL到各自的文件编制目录,并将它们组,然后使用的Tableau和计算领域把它卷起来。