【问题标题】:Problem creating dynamic date parameter in Google Data Studio在 Google Data Studio 中创建动态日期参数时出现问题
【发布时间】:2021-12-22 03:33:29
【问题描述】:

我正在尝试在我的代码中为我的开始日期和结束日期添加日期参数。该代码试图在从日期参数中选择的一段时间内摊销收入。

但是,我收到错误消息“未找到表值函数”。有人知道我为什么会收到此错误吗?

编辑:

所有数据都来自我的 BigQuery 中的表。我碰巧附加了多个表并保存为一个视图,我从中查询它们。

原始表的列如下:

User | fullname | subscription_start_date | subscription_end_date | Amount

我编写了一个代码,通过考虑订阅持续时间和从动态日期输入中选择的期间来摊销金额。

现在的问题是,在写完下面的代码后,我得到了 Table-function not available 的错误。不知道这意味着什么。

CASE
--Sub falls within the selected period
WHEN DATE_DIFF(@DS_END_DATE,'2000-01-01', DAY) >= DATE_DIFF(end_at,'2000-01-01', DAY) AND DATE_DIFF(@DS_START_DATE,'2000-01-01', DAY) <= DATE_DIFF(start_at,'2000-01-01', DAY) THEN CAST(t1.amount AS NUMERIC)
--Selected period falls within the sub period
WHEN DATE_DIFF(@DS_END_DATE,'2000-01-01', DAY) <= DATE_DIFF(end_at,'2000-01-01', DAY) AND DATE_DIFF(@DS_START_DATE,'2000-01-01', DAY) >= DATE_DIFF(start_at,'2000-01-01', DAY) THEN 
(DATE_DIFF(@DS_END_DATE,'2000-01-01', DAY) - DATE_DIFF(@DS_START_DATE,'2000-01-01', DAY))/(DATE_DIFF(end_at,'2000-01-01', DAY) - DATE_DIFF(start_at,'2000-01-01', DAY)) * CAST(t1.amount AS NUMERIC)
-- Subscription starts within but ends outside the selected period
WHEN DATE_DIFF(@DS_END_DATE, '2000-01-01', DAY) <= DATE_DIFF(end_at,'2000-01-01', DAY) AND DATE_DIFF(@DS_START_DATE,'2000-01-01', DAY) <= DATE_DIFF(start_at,'2000-01-01', DAY) THEN 
(DATE_DIFF(@DS_END_DATE, '2000-01-01', DAY) - DATE_DIFF(start_at, '2000-01-01', DAY))/(DATE_DIFF(end_at, '2000-01-01', DAY) - DATE_DIFF(start_at, '2000-01-01', DAY)) * CAST(t1.amount AS NUMERIC)
-- Subscription starts outside of but ends within the selected period
WHEN DATE_DIFF(@DS_END_DATE, '2000-01-01', DAY) >= DATE_DIFF(end_at, '2000-01-01', DAY) AND DATE_DIFF(@DS_START_DATE, '2000-01-01', DAY) >= DATE_DIFF(start_at, '2000-01-01', DAY) THEN 
(DATE_DIFF(end_at, '2000-01-01', DAY) - DATE_DIFF(@DS_START_DATE, '2000-01-01', DAY))/(DATE_DIFF(end_at, '2000-01-01', DAY) - DATE_DIFF(start_at, '2000-01-01', DAY)) * CAST(t1.amount AS NUMERIC)
END AS real_revenue

real_revenue 应该是所选时间段内每次订阅的贡献。

注意:数据洞察日期参数由@DS_START_DATE 和@DS_END_DATE 表示

【问题讨论】:

    标签: google-bigquery google-data-studio query-parameters


    【解决方案1】:

    快速查看此Doc,它似乎暗示您不能在视图中使用查询参数,而@DS_START_DATE、@DS_END_DATE 是查询参数。

    如果您将原始查询(用于构建视图的查询)包含为子查询,则应该可以正常工作。然后,您可以在添加数据源时将自定义查询添加到 datastudio 中,只需将查询复制到该 UI 中,它应该可以使用 Date 参数(如果勾选)

    旁注:我已经稍微简化了您的查询并添加了子查询。

    SELECT *,
    CASE
    --Sub falls within the selected period
    WHEN DATE_DIFF(@DS_END_DATE, end_at, DAY) > 0 AND DATE_DIFF(@DS_START_DATE, start_at, DAY) < 0 THEN CAST(t1.amount as NUMERIC) 
    
    --Selected period falls within the sub period
    WHEN DATE_DIFF(@DS_END_DATE, end_at, DAY) < 0 AND DATE_DIFF(@DS_START_DATE, start_at, DAY) > 0 THEN  
    DATE_DIFF(@DS_END_DATE, @DS_START_DATE, DAY) / DATE_DIFF(end_at, start_at, DAY) * CAST(t1.amount AS NUMERIC)
    
    -- Subscription starts within but ends outside the selected period
    WHEN DATE_DIFF(@DS_END_DATE, end_at, DAY) > 0 AND DATE_DIFF(@DS_START_DATE, start_at, DAY) > 0 THEN 
    DATE_DIFF(@DS_END_DATE, start_at, DAY) / DATE_DIFF(end_at, start_at, DAY) * CAST(t1.amount AS NUMERIC)
    
    -- Subscription starts outside of but ends within the selected period
    WHEN DATE_DIFF(@DS_END_DATE, end_at, DAY) < 0 AND DATE_DIFF(@DS_START_DATE, start_at, DAY) > 0 THEN 
    DATE_DIFF(end_at,@DS_START_DATE, DAY) / DATE_DIFF(end_at, start_at, DAY) * CAST(t1.amount AS NUMERIC)
    
    END AS real_revenue
    
    FROM ( 
      -- YOUR ORIGINAL VIEW CREATION QUERY
    )
    WHERE
     -- any conditions you might want to add.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多