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