Ошибка в Google Data Studio при использовании MySQL в качестве источника данных - PullRequest
0 голосов
/ 04 января 2019

Я сталкиваюсь со следующей проблемой с MySQL в сочетании с Data Studio и, откровенно говоря, совершенно растерялся:

SELECT 
user.name,
user.second_name,
school.name,
SUM(booked_lessons.duration),
SUM(total_lessons.duration),
SUM(theory_lessons.duration)
FROM
lesson
    LEFT JOIN
user ON lesson.instructor_id = user.id
    LEFT JOIN
school ON lesson.school_id = school.id
    LEFT JOIN
(SELECT 
    lesson.id, lesson.duration
FROM
    lesson
WHERE
    lesson.status = 'active'
        AND entity = 'driving'
        AND lesson.user_id IS NOT NULL) AS booked_lessons ON booked_lessons.id = lesson.id
    LEFT JOIN
(SELECT 
    lesson.id, lesson.duration
FROM
    lesson
WHERE
    lesson.status = 'active'
        AND entity = ('driving' OR 'theory' OR 'exam')) AS total_lessons ON total_lessons.id = lesson.id
    LEFT JOIN
(SELECT 
    lesson.id, lesson.duration
FROM
    lesson
WHERE
    lesson.status = 'active'
        AND entity = 'theory') AS theory_lessons ON theory_lessons.id = lesson.id
WHERE
lesson.startDate >= '2018-01-31 00:00:00'
    AND lesson.startDate <= '2019-01-06 23:59:59'
GROUP BY lesson.instructor_id;`

Когда я включаю импорт кода в качестве источника данных MySQL в Google Data Studio, кажется, все работает нормальновначале.Тем не менее, когда я хочу проанализировать данные в диаграммах, я получаю следующее сообщение об ошибке: Ошибка 1

Еще более запутанным является следующее:

при использовании этогокод:

`SELECT 
user.name 'Vorname',
user.second_name 'Nachname',
lesson.instructor_id 'FL ID',
school.name 'Standort',
SUM(offered_lessons.duration) 'noch buchbare Praxisstunden',
SUM(booked_lessons.duration) 'gebuchte Praxisstunden',
SUM(total_week_lessons.duration) 'angebotene Praxis gesamt',
SUM(theory_lessons.duration) 'Theorieunterricht',
SUM(exam_lessons.duration) 'Prüfungen',
SUM(total_lessons.duration) 'angebotene Stunden gesamt',
SUM(activity_lessons.duration) 'Sonstige Tätigkeiten',
SUM(canceled_lessons.duration) 'abgesagt von 123 <48',
SUM(canceled_48_lessons.duration) 'abgesagt von 123 >48',
SUM(canceled_student_lessons.duration) 'abgesagt von Schueler <48',
SUM(canceled_48_student_lessons.duration) 'abgesagt von Schueler >48',
SUM(canceled_instructor_lessons.duration) 'abgesagt von FL <48',
SUM(canceled_48_instructor_lessons.duration) 'abgesagt von FL >48'
FROM
lesson
    LEFT JOIN
user ON lesson.instructor_id = user.id
    LEFT JOIN
school ON lesson.school_id = school.id
    LEFT JOIN
(SELECT 
    lesson.id, lesson.duration
FROM
    lesson
WHERE
    lesson.status = 'active'
        AND entity = 'driving'
        AND lesson.user_id IS NULL) AS offered_lessons ON offered_lessons.id = lesson.id
    LEFT JOIN
(SELECT 
    lesson.id, lesson.duration
FROM
    lesson
WHERE
    lesson.status = 'active'
        AND entity = 'driving'
        AND lesson.user_id IS NOT NULL) AS booked_lessons ON booked_lessons.id = lesson.id
    LEFT JOIN
(SELECT 
    lesson.id, lesson.duration
FROM
    lesson
WHERE
    lesson.status = 'active'
        AND entity = 'driving') AS total_week_lessons ON total_week_lessons.id = lesson.id
    LEFT JOIN
(SELECT 
    lesson.id, lesson.duration
FROM
    lesson
WHERE
    lesson.status = 'active'
        AND entity = ('driving' OR 'theory' OR 'exam')) AS total_lessons ON total_lessons.id = lesson.id
    LEFT JOIN
(SELECT 
    lesson.id, lesson.duration
FROM
    lesson
WHERE
    lesson.status = 'active'
        AND entity = 'theory') AS theory_lessons ON theory_lessons.id = lesson.id
    LEFT JOIN
(SELECT 
    lesson.id, lesson.duration
FROM
    lesson
WHERE
    lesson.status = 'active'
        AND entity = 'exam') AS exam_lessons ON exam_lessons.id = lesson.id
    LEFT JOIN
(SELECT 
    lesson.id, lesson.duration
FROM
    lesson
WHERE
    lesson.status = 'active'
        AND entity = 'activity') AS activity_lessons ON activity_lessons.id = lesson.id
    LEFT JOIN
(SELECT 
    lesson.id,
        lesson.duration,
        TIMESTAMPDIFF(HOUR, lesson.cancelled_at, lesson.startDate)
FROM
    lesson
WHERE
    lesson.status = 'canceled'
        AND entity = 'driving'
        AND TIMESTAMPDIFF(HOUR, lesson.cancelled_at, lesson.startDate) < 48
        AND user_Id != lesson.cancelled_by_id) AS canceled_lessons ON canceled_lessons.id = lesson.id
    LEFT JOIN
(SELECT 
    lesson.id,
        lesson.duration,
        TIMESTAMPDIFF(HOUR, lesson.cancelled_at, lesson.startDate)
FROM
    lesson
WHERE
    lesson.status = 'canceled'
        AND entity = 'driving'
        AND TIMESTAMPDIFF(HOUR, lesson.cancelled_at, lesson.startDate) >= 48
        AND user_Id != lesson.cancelled_by_id) AS canceled_48_lessons ON canceled_48_lessons.id = lesson.id
    LEFT JOIN
(SELECT 
    lesson.id,
        lesson.duration,
        TIMESTAMPDIFF(HOUR, lesson.cancelled_at, lesson.startDate)
FROM
    lesson
WHERE
    lesson.status = 'canceled'
        AND entity = 'driving'
        AND TIMESTAMPDIFF(HOUR, lesson.cancelled_at, lesson.startDate) < 48
        AND user_Id = lesson.cancelled_by_id) AS canceled_student_lessons ON canceled_student_lessons.id = lesson.id
    LEFT JOIN
(SELECT 
    lesson.id,
        lesson.duration,
        TIMESTAMPDIFF(HOUR, lesson.cancelled_at, lesson.startDate)
FROM
    lesson
WHERE
    lesson.status = 'canceled'
        AND entity = 'driving'
        AND TIMESTAMPDIFF(HOUR, lesson.cancelled_at, lesson.startDate) >= 48
        AND user_Id = lesson.cancelled_by_id) AS canceled_48_student_lessons ON canceled_48_student_lessons.id = lesson.id
    LEFT JOIN
(SELECT 
    lesson.id,
        lesson.duration,
        TIMESTAMPDIFF(HOUR, lesson.cancelled_at, lesson.startDate)
FROM
    lesson
WHERE
    lesson.status = 'canceled'
        AND entity = 'driving'
        AND TIMESTAMPDIFF(HOUR, lesson.cancelled_at, lesson.startDate) < 48
        AND instructor_Id = lesson.cancelled_by_id) AS canceled_instructor_lessons ON canceled_instructor_lessons.id = lesson.id
    LEFT JOIN
(SELECT 
    lesson.id,
        lesson.duration,
        TIMESTAMPDIFF(HOUR, lesson.cancelled_at, lesson.startDate)
FROM
    lesson
WHERE
    lesson.status = 'canceled'
        AND entity = 'driving'
        AND TIMESTAMPDIFF(HOUR, lesson.cancelled_at, lesson.startDate) >= 48
        AND Instructor_Id = lesson.cancelled_by_id) AS canceled_48_instructor_lessons ON canceled_48_instructor_lessons.id = lesson.id
WHERE
lesson.startDate >= '2018-01-31 00:00:00'
    AND lesson.startDate <= '2019-01-06 23:59:59'
GROUP BY lesson.instructor_id;

`Код практически идентичен.Но теперь я получаю это сообщение об ошибке:

Ошибка 2

Может кто-нибудь помочь мне здесь?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Нельзя ставить точку с запятой (;) в конце запроса, поскольку Datastudio добавляет код в запрос при генерации данных.
Была та же проблема, удалил точку с запятой и теперь отчет работает.

0 голосов
/ 09 января 2019
;
) AS t0 GROUP BY Vorname ORDER BY qt_bdgy5cbbub DESC'

У вас есть точка с запятой в конце подзапроса, перед

") AS t0"? 
...