在谷歌趋势中,有可能将数据导出为CSV。获得的CSV具有以下结构:
DECLARE @Now AS DATE = GETDATE()
;WITH LastTwelveMonth AS (
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@Now)-1), @Now),101) AS Date_Value
UNION ALL
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(MONTH, -1, Date_Value))-1), @Now),101) AS Date_Value
FROM LastTwelveMonth
), ValuesForMonth AS (
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(lastupdatetimestamp)-1), lastupdatetimestamp),101) AS DateForData, SUM(DataToCount) OVER (PARTITION BY MONTH(lastupdatetimestamp), YEAR(lastupdatetimestamp)) AS DataCounted
FROM FILES
)
SELECT ISNULL(Files.DataCounted, 0), LastTwelveMonth.Date_Value
FROM LastTwelveMonth
LEFT JOIN ValuesForMonth ON ValuesForMonth.DateForData = LastTwelveMonth.Date_Value
我知道有Week,subject 1, subject 2
2004-01-04 - 2004-01-10,13,6
2004-01-11 - 2004-01-17,9,9
2004-01-18 - 2004-01-24,11,4
,但它只包含一个日期。我想在时域中获得主题1和2的阶梯图,并计算它们在两个给定日期之间的范围内的相关性。
我的问题是:数据结构如何用于表示时间范围?
答案 0 :(得分:1)
谷歌趋势称时间变量“周”需要
StringTake [“2004-01-04 - 2004-01-10”,10]
获取范围的第一天,然后使用
DateList [{“2004-01-04”,{“年”,“月”,“日”}}]
创建日期列表和
DateString [{2004,1,4,0,0,0},{“Week”}]
表示一年中的日历周的时间。所以,功能
RangeToWeek [timerangestring_]:= DateString [DateList [{ StringTake [timerangestring,10], {“年”,“月”,“日”}}],{“周”}]
列出了01列表中的第一个日期,因为从04.01.2004到10.01.2004的时间跨度对应于该年的第一个callendar周。