BigQuery,连接工作表在连接到它的脚本运行时变为空白

问题描述 投票:0回答:1

我有一个查询和来自连接到它的两个不同工作表的几个脚本。几个小时后,连接的工作表刷新,脚本运行并使用该连接的工作表中的数据更新工作表。然而,每次到达第三个“功能”时,连接的工作表都会变成空白。我不明白,问题出在哪里,查询还是脚本?...有人告诉我“不稳定的查询”可能会导致此问题,但我找不到它的问题所在。你有什么想法吗?

WITH base_data AS (
  SELECT
    SalesPerson.CountryName,    
    SalesPerson.FullName, 
    Campaign.TypeLevel3, 
    Opportunity.Id AS OpportunityId,
    Opportunity.Code AS OpportunityCode,
    DeliveredOrder.Name AS OrderName,
    DeliveredOrder.Id AS OrderID,
    DeliveredOrder.LineItemId, 
    DeliveredOrder.LineItemName,
    Opportunity.NonStandardProducts, 
    Opportunity.PrimaryKPI, 
    BookedOrder.StartTime, 
    BookedOrder.EndTime, 
    BookedOrder.LineItemStartTime, 
    BookedOrder.LineItemEndTime, 
    BookedOrder.RateTypeCode, 
    BookedOrder.NetEurRate, 
    BookedOrder.FulFilmentItemStatus, 
    DeliveredImpressions,
    DeliveredClicks,
    DeliveredNetEurRevenue,
    DeliveredOrder.DeliveryIndicatorPct,
    BookedOrder.IsOverbookedYn, 
    BookedOrder.AdServer, 
    DeliveredOrder.LineItemPriority,
    DeliveredOrder.DeliveryRateType,
    DeliveredOrder.ImpressionsGoal, 
    Product.Subcategory, 
    DeliveredOrder.FrequencyCaps,
    TargetCountry.Name AS TargetCountryName,
    DeliveredOrder.LineItemStatus,
    DeliveryDate
  FROM `XXX_BookedDeliveredV2_*`
  WHERE 
    _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
    AND SalesPerson.SalesTeamRegion = 'EMEA'
    AND SalesPersonSalesOffice.IsReseller = FALSE
    AND SalesPersonSalesOffice.SubRegionName != 'EMEA Partner Sales' 
    AND Campaign.TypeLevel3 != 'Labels'
    AND BookedOrder.AdServer IN ('DFP', 'Megaphone', 'Megaphone (MTM)')
    AND BookedOrder.FulFilmentItemStatus IN ('Inactive', 'Paused', 'Ready', 'Completed', 'Delivering')
    AND (DATE(BookedOrder.LineItemEndTime) >= DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
         OR BookedOrder.LineItemEndTime >= CURRENT_TIMESTAMP())
),

filtered_data AS (
  SELECT
    CountryName,    
    FullName, 
    TypeLevel3, 
    OpportunityId,
    OpportunityCode,
    OrderName,
    OrderID,
    LineItemId, 
    LineItemName,
    NonStandardProducts, 
    PrimaryKPI, 
    StartTime, 
    EndTime, 
    LineItemStartTime, 
    LineItemEndTime, 
    RateTypeCode, 
    NetEurRate, 
    FulFilmentItemStatus, 
    SUM(DeliveredImpressions) AS DeliveredImpressions, 
    SUM(DeliveredClicks) AS DeliveredClicks,
    SUM(DeliveredNetEurRevenue) AS DeliveredNetRevenue,
    AVG(DeliveryIndicatorPct) AS DeliveryIndicatorPct,
    IsOverbookedYn, 
    AdServer, 
    LineItemPriority,
    DeliveryRateType,
    ImpressionsGoal, 
    Subcategory, 
    STRING_AGG(DISTINCT ARRAY_TO_STRING(FrequencyCaps, ', '), ', ') AS FrequencyCaps,
    TargetCountryName,
    LineItemStatus,
    MIN(IF(DeliveredImpressions > 0, DeliveryDate, NULL)) AS first_delivery_date
  FROM base_data
  GROUP BY
    CountryName, FullName, TypeLevel3, OpportunityId, OpportunityCode, OrderName, OrderID, 
    LineItemId, LineItemName, NonStandardProducts, PrimaryKPI, StartTime, EndTime, 
    LineItemStartTime, LineItemEndTime, RateTypeCode, NetEurRate, FulFilmentItemStatus, 
    IsOverbookedYn, AdServer, LineItemPriority, DeliveryRateType, ImpressionsGoal, 
    Subcategory, TargetCountryName, LineItemStatus
)

SELECT
  fd.*,
  Reach.ReachLifetime,
  IFNULL(insights.events_started, 0) AS events_started,
  IFNULL(insights.events_ended, 0) AS events_ended,
  IFNULL(insights.events_ended / NULLIF(insights.events_started, 0), 0) AS CR
FROM filtered_data fd
LEFT JOIN `XXX_AdsReachFrequencyV2` AS Reach
  ON fd.LineItemId = Reach.DeliveredOrder.LineItemId
LEFT JOIN (
  SELECT
    line_item_id,
    SUM(events_started) AS events_started,
    SUM(events_ended) AS events_ended
  FROM `XXX_active_media_quartiles_*`
  WHERE _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
  GROUP BY line_item_id
) AS insights
  ON fd.LineItemId = CAST(insights.line_item_id AS STRING)
google-apps-script google-bigquery
1个回答
0
投票

如果您可以在 BigQuery UI 中运行此查询,但连接的工作表无法处理该查询 - 这可能是 Apps 脚本限制或类似的情况。 要检查这一点 - 您可以尝试其他工具,例如 OWOXCoupler 或其他任何工具来将 BigQuery 数据查询到表格中。

© www.soinside.com 2019 - 2024. All rights reserved.