代码之家  ›  专栏  ›  技术社区  ›  mhooper

基于分钟间隔创建表并将表链接到原始表

  •  0
  • mhooper  · 技术社区  · 1 年前

    我已成功将表加载到Power BI中。此表有52608行,索引中有一个名为“事务日期”的值(称为“originalDataSet”的表),表示30分钟的间隔( 格式为2001-03-14 13:30:55(yyyy-mm-dd hh:nn:ss) )为此,我构建了数据集。这是三年的数据。

    我想构建一个Dim_calendar表,它反映了这个表,并创建了不同的属性来快速过滤数据,即季度、财政年度等。我相信我已经做到了,但在尝试过滤数据时,我只得到了前6个月的数据,并为其余的日期数据创建了一个空白期。

    我已经从'originalDataSet'[TransactionDate]一对一创建了一个关系,其中'Dim_calendar'[Value]的交叉过滤方向设置为Both。

    我的代码在下面,但我看不出有什么可怕的错误——有什么建议吗?

    Dim_Calendar = 
    VAR MinDate = MIN ( 'originalDataSet'[TransactionDate] ) // you can change this to the end date of the data
    VAR MaxDate = MAX (  'originalDataSet'[TransactionDate] )+30/24/60// you can change this to the last date of the data
    VAR minuteIntervals = 30 // you can change this to what ever interval you want - you could change this to 1440 to be daily.
    RETURN
    ADDCOLUMNS (
        GENERATESERIES(MinDate,MaxDate, TIME(0,minuteIntervals,0)),
        "Year", YEAR ([Value]),
        "QtrNo",QUARTER([Value]),
        "Quarter",FORMAT([Value], "\QQ"),
        "MonthNo", MONTH ([Value]),
        "Month", FORMAT ( [Value], "MMM" ),
        "Period", FORMAT ( [Value], "MMM" ) & "-" & YEAR ( [Value] ),
        "Interval", (MINUTE([value])+hour([Value])*60)/minuteIntervals+1,
        "PeriodSort", FORMAT ( [Value], "yyyyMM" ),
        "FiscalYear", IF(MONTH ( [Value] ) >= 7, YEAR ( [Value] ) +1, YEAR ( [Value] )))```
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   Sam Nseir    1 年前

    我怀疑你的问题是,你的秒数没有排成一行,这段关系就会就此结束。我建议您通过Power Query转换您的 Transaction Date 将秒数归零。例如:

    DateTime.From( DateTime.ToText([Transaction Date], "yyyy-MM-dd hh:mm") )
    

    我强烈建议你把你的 交易日期 到日期列和时间列。然后有一个日期表和一个单独的时间表,并使用这两个维度表与事实表相关联。这将大大减小数据模型的大小。