2016-09-10 2 views
0

enter image description here이 SQL 쿼리를 tableau로 변환하는 방법은 무엇입니까?

각 계정의 활동 시간을 보여주는 SQL 쿼리가 있습니다. 데이터베이스는 Windows Server 2008의 Microsoft SQL Server입니다. @time 대신 Parameters.Date1Parameters.Date2 매개 변수를 사용하여 tableau로이 쿼리를 번역 해 주시기 바랍니다.

쿼리의 결과 :

USER,Date,Total time 

USER1,2016-09-22,07:00:00.0000000 
USER2,2016-09-22,08:00:00.0000000  
USER3,2016-09-22,05:00:00.0000000  

SQL 쿼리 : 쿼리 구축

DECLARE @time datetime 
set @time = '08.09.2016' 

SELECT 
    [User], 
    CAST(DATEADD(SECOND, sum(datediff(DAY, @time, [Start])), @time) AS date) 'Date', 
    CAST(DATEADD(SECOND, sum(datediff(SECOND, '00:00:00',[Period])), '00:00:00') AS time) 'Total time' 
FROM 
    [User].[dbo].[UserAction] 
WHERE 
    [Start] >= @time+'00:00:00' and [Start] <= @time+'23:59:59' 
GROUP BY 
    [USER] 

입력 데이터 :

USER, Start,End,Period 

USER1,2016-09-22 09:00:00.000,2016-09-22 12:00:00.000,03:00:00 
USER1,2016-09-22 12:00:00.000,2016-09-22 13:00:00.000,01:00:00 
USER1,2016-09-22,13:00:00.000,2016-09-22 16:00:00.000,03:00:00 
USER2,2016-09-22,09:00:00.000,2016-09-22 13:00:00.000,04:00:00 
USER2,2016-09-22,13:00:00.000,2016-09-22 17:00:00.000,04:00:00 
USER3,2016-09-22,09:00:00.000,2016-09-22 10:00:00.000,01:00:00 
USER3,2016-09-22,10:00:00.000,2016-09-22 12:00:00.000,02:00:00 
USER3,2016-09-22,12:00:00.000,2016-09-22 14:00:00.000,02:00:00 
+1

어떤 노력을 하시겠습니까? 지금까지 뭐 해봤 어? –

+0

하나의 옵션은 SQL Server에서 사용자 정의 테이블 값 함수를 만들고이를 Tableau에서 사용하여 데이터를 검색하는 것입니다. –

+0

계산 된 필드'[Start] = = [Parameter.Date1]과 [Start] Prisoner

답변

0

을 나는 충분히 상상 스택 오버 플로우가 없습니다 아직 대답이 아니라는 점을 지적했지만, 고든 리노프 (Gordon Linoff)는 동의한다.

sql의 테이블 값 함수는 Tableau 데이터 소스에서 직접 사용할 수 있으며 테이블과 마찬가지로 처리됩니다.

나는 아래의 테스트, 그러나 여기에 해당하는 함수가 어떻게 보이는지하지 않았다

CREATE FUNCTION dbo.MyFuntion (@time datetime) 
RETURNS TABLE 
AS 
RETURN 
(
SELECT 
    [User] 
    ,cast(DATEADD(SECOND, sum(datediff(DAY, @time,[Start])),@time) as date)'Date' 
    ,cast(DATEADD(SECOND, sum(datediff(SECOND, '00:00:00',[Period])),'00:00:00') as time)'Total time' 
FROM 
    [User].[dbo].[UserAction] 
WHERE 
    [Start] >= @time+'00:00:00' and [Start] <= @time+'23:59:59' 
GROUP BY [USER] 
); 

극적 장면 9 (10 시도하지 않은) 사용자 정의 SQL을 억제하는 것 (그것은 사람을 경고 통합 문서를 여는) 및 저장 프로 시저 (함수에서 동일한 SQL에 비해 느림)가 있습니다.

다른 방법으로는 순수 dbo.UserAction 테이블을 데이터 소스에 추가하고 두 번째 두 열의 계산 필드를 만들면 Tableau Documentation 일 수 있습니다. 그것은 날짜를 조작하는 데 필요한 모든 기능을 가지고있는 것 같습니다. 그러나 그것을 제한 할 수있는 매개 변수와 관련된 몇 가지 미친 제한이있을 수 있습니다. 솔직히 내 머리 꼭대기를 기억할 수는 없습니다.

+0

죄송합니다. 전체 텍스트를 복사하십시오. 다시보십시오. – Serg

0

사용자 지정 SQL이 필요하지 않습니다. 단순하게 유지하십시오. Tableau를 UserAction 테이블에 직접 연결하십시오.

다음 중 하나를 사용할 수 있습니다. 필터 선반에 일 (시작)을 넣고 그 날로 잘린 연속 날짜인지 확인하십시오. 필터를 표시하고 한 번에 하나의 값만 선택할 수 있도록 필터를 설정합니다. 슬라이더 UI를 선택합니다.

또는 행으로, 하나 개의 선반에 day(Start) = day(Date1)

넣어 사용자와 같은 매개 변수를 참조하는 필터 선반에 넣어 계산 필드를 작성하고, 열과 같은 다른 등의 합계 (기간). Tableau가 기간 필드 데이터 유형을 해석하는 데 문제가없는 한 그렇게해야합니다. 그렇다면 데이터 유형을 Tableau의 Number로 변경하여 기간을 숫자로 자동 변환하는지 확인하십시오. 그렇지 않으면 변환을 위해 계산 된 필드를 작성해야 할 수 있습니다.

관련 문제