SELECT
DATE_TRUNC(trip_start_timestamp, month) as month,
company,
payment_type,
COUNT(distinct unique_key) as trip_count,
SUM(trip_seconds) / 60 as total_trip_min,
AVG(trip_seconds) / 60 as average_trip_min,
MAX(trip_seconds) / 60 as max_trip_min,
MIN(trip_seconds) / 60 as min_trip_min,
SUM(trip_miles) as total_trip_miles,
AVG(trip_miles) as average_trip_miles,
MAX(trip_miles) as max_trip_miles,
MIN(trip_miles) as min_trip_miles,
SUM(fare) as total_fare,
AVG(fare) as average_fare,
MAX(fare) as max_fare,
MIN(fare) as min_fare
FROM
`bigquery-public-data.chicago_taxi_trips.taxi_trips`
WHERE trip_start_timestamp >= '2017-01-01' AND trip_start_timestamp < '2018-01-01' -- 2017年のデータ
--外れ値除外
AND trip_seconds != 0 AND fare != 0 AND trip_miles != 0
AND trip_seconds < 21600
AND CASE {Company} WHEN '' THEN TRUE ELSE company = {Company} END
AND CASE {PaymentType} WHEN '' THEN TRUE ELSE payment_type = {PaymentType} END
GROUP BY DATE_TRUNC(trip_start_timestamp, month), company, payment_type
ORDER BY month
SELECT
TO_JSON_STRING(STRUCT(
average_fare,average_trip_miles,average_trip_min,company,max_fare,max_trip_miles,max_trip_min,min_fare,min_trip_miles,min_trip_min,month,payment_type,total_fare,total_trip_miles,total_trip_min,trip_count
)) as input_text
FROM
月毎利用状況サマリー
SELECT
CONCAT('[', STRING_AGG(input_text, ','), ']') AS all_input_texts
FROM
JSON形式_利用状況サマリー
SELECT
JSON_VALUE(ml_generate_text_result.candidates[0].content.parts[0].text) as output,
FROM ML.GENERATE_TEXT(
MODEL `codatum-example.example.vertex_ai`,
(
SELECT
CONCAT(
'以下のデータはCompany別、Payment_Type別の月次のタクシーの乗車データのサマリーです。',
'サマリーの支払い方法別、月別の傾向をサマライズして、Markdown形式のレポートにしてください。',
'総乗車回数や最多乗車月などのデータの概要を説明した後、特徴的な項目について複数項目をセクションを分けて説明して下さい。'
'Markdown全体を囲う必要はありません。',
'markdownの色々な要素を使うようにしてください。',
'生成したサマリーで完結するようにしてください。サマリーを追加で編集することはありません。ただし追加の分析提案は可能です。',
'サマリー内ではコードの実行ができないため、コードは埋め込まないでください。'
'対象のタクシー乗車データの支払い方法は', CASE WHEN {PaymentType} = '' THEN '全て' ELSE {PaymentType} END,'で、',
'対象企業は', CASE WHEN {Company} = '' THEN '全社' ELSE {Company} END, 'です。インプットデータ:',
all_input_texts
) as prompt,
*,
FROM All_JSON形式_利用状況サマリー
),
STRUCT(
0.3 AS temperature,
1000 AS max_output_tokens)
)