Mysql 当会计年度发生变化时,更新最近两个会计周的表格

Mysql 当会计年度发生变化时,更新最近两个会计周的表格,mysql,visualization,tableau-api,Mysql,Visualization,Tableau Api,我有一张表格,我需要找到我在前一周和前一周收到的订单数量。我可以通过两个简单的计算做到这一点: 获取最后两周:(在筛选中使用1作为选择) 如果[f_Year]=[maxyear]和[f_week]=[maxweek]-2和[maxweek]>2,则1其他0结束 订单总数:(在“标记”窗格中使用) COUNTD(如果[f_week]>=[maxweek]-2和[f_week]2,[f_Year]=[maxyear]和[f_week]=[maxweek]-2, IIF([maxweek]=2,([f

我有一张表格,我需要找到我在前一周和前一周收到的订单数量。我可以通过两个简单的计算做到这一点:

  • 获取最后两周:(在筛选中使用1作为选择)

    如果[f_Year]=[maxyear]和[f_week]<[maxweek]和[f_week]>=[maxweek]-2和[maxweek]>2,则1其他0结束

  • 订单总数:(在“标记”窗格中使用)

    COUNTD(如果[f_week]>=[maxweek]-2和[f_week]
  • maxyear=所有年度值的最大值(即当前会计年度)

    maxweek=所有周值的最大值(即当前会计周)

    f_年=财政年度,f_周=财政周。

    财政年度从2月到2月。我从sql数据库获取这些数据

    问题是,当年份从2015年变为2016年时,我将无法检索2015年第51周和第52周的订单详细信息。这是因为 上述计算在两种情况下不起作用。首先,当当前会计周=1时;其次,当当前会计周=2时

    我还尝试对计算进行硬编码(在过滤器窗格中使用):

    IIF([maxweek]>2,[f_Year]=[maxyear]和[f_week]<[maxweek]和[f_week]>=[maxweek]-2,
    IIF([maxweek]=2,([f_Year]=[maxyear]或[f_Year]=[maxyear]=1)和([f_Year]=52或[f_Year]=1),
    [f_年]=([maxyear]-1)和[f_周]=51或[f_周]=52)
    
    根据上述计算,当maxweek=2时,其返回2015年和2016年的第一个财政周。我只需要从2016年开始的第一个财政周


    如何修改我的上述计算,以便即使会计年度发生变化,该表仍保留去年会计周的值。

    您必须使用if ELSE条款处理此问题。如果当前周=1或2,则财政年=当前年1,财政周=52或51(硬编码)。这必须作为硬代码基础,因为财政周是非线性的,因为它在下一个周期从52变为1。你不能指望线性数学能解决这个问题。我需要把这个硬编码部分作为单独的计算吗?如果我在Get Last Weeks calculation字段中包含此硬编码部分,则Tableau将抛出错误,因为它期望在“then”之后有一个布尔值。如果没有数据/计算,则很难进行验证。若你们可以分享任何公共链接,那个么我也许可以展示。我用硬编码的逻辑修改了我的问题。若并没有任何示例,这将是很困难的。从公式的观点来看,你似乎是正确的,但我无法证实你的正确性。
    IIF([maxweek] > 2, [f_Year] = [maxyear] AND [f_week] < [maxweek] AND [f_week]    >= [maxweek] -2 ,
    IIF([maxweek] = 2, ([f_Year] = [maxyear] OR  [f_Year] = [maxyear]-1) AND   ([f_week] = 52 or [f_week] = 1),
    [f_Year] = ([maxyear] - 1) AND [f_week] = 51 OR [f_week] = 52))