@@ -558,6 +558,32 @@ const peak_tps = new BQScalarFunction(
558558 `
559559) ;
560560
561+ const coin_price = new BQScalarFunction (
562+ 'coin_price' ,
563+ time_window_args ,
564+ new BQStruct ( [
565+ { name : 'minPrice' , type : BIGNUMERIC } ,
566+ { name : 'maxPrice' , type : BIGNUMERIC } ,
567+ { name : 'avgPrice' , type : BIGNUMERIC } ,
568+ ] ) ,
569+ `
570+ (SELECT AS
571+ STRUCT
572+ MIN(\`$$FUNCTIONS_DATASET$$.daml_record_numeric\`(c.create_arguments, [2])),
573+ MAX(\`$$FUNCTIONS_DATASET$$.daml_record_numeric\`(c.create_arguments, [2])),
574+ AVG(\`$$FUNCTIONS_DATASET$$.daml_record_numeric\`(c.create_arguments, [2]))
575+ FROM \`$$SCAN_DATASET$$.scan_sv_1_update_history_creates\` c
576+ WHERE template_id_entity_name = 'SummarizingMiningRound'
577+ AND c.template_id_module_name = 'Splice.Round'
578+ AND package_name = 'splice-amulet'
579+ AND \`$$FUNCTIONS_DATASET$$.in_time_window\`(
580+ start_record_time, start_migration_id,
581+ up_to_record_time, up_to_migration_id,
582+ c.record_time, c.migration_id
583+ ))
584+ `
585+ ) ;
586+
561587const all_stats = new BQTableFunction (
562588 'all_stats' ,
563589 as_of_args ,
@@ -577,6 +603,9 @@ const all_stats = new BQTableFunction(
577603 new BQColumn ( 'num_active_validators' , INT64 ) ,
578604 new BQColumn ( 'average_tps' , FLOAT64 ) ,
579605 new BQColumn ( 'peak_tps' , FLOAT64 ) ,
606+ new BQColumn ( 'daily_min_coin_price' , BIGNUMERIC ) ,
607+ new BQColumn ( 'daily_max_coin_price' , BIGNUMERIC ) ,
608+ new BQColumn ( 'daily_avg_coin_price' , BIGNUMERIC ) ,
580609 ] ,
581610 `
582611 SELECT
@@ -619,7 +648,25 @@ const all_stats = new BQTableFunction(
619648 \`$$FUNCTIONS_DATASET$$.num_amulet_holders\`(as_of_record_time, migration_id) as num_amulet_holders,
620649 \`$$FUNCTIONS_DATASET$$.num_active_validators\`(as_of_record_time, migration_id) as num_active_validators,
621650 IFNULL(\`$$FUNCTIONS_DATASET$$.average_tps\`(as_of_record_time, migration_id), 0.0) as average_tps,
622- IFNULL(\`$$FUNCTIONS_DATASET$$.peak_tps\`(as_of_record_time, migration_id), 0.0) as peak_tps
651+ IFNULL(\`$$FUNCTIONS_DATASET$$.peak_tps\`(as_of_record_time, migration_id), 0.0) as peak_tps,
652+ \`$$FUNCTIONS_DATASET$$.coin_price\`(
653+ TIMESTAMP_SUB(as_of_record_time, INTERVAL 24 HOUR),
654+ \`$$FUNCTIONS_DATASET$$.migration_id_at_time\`(TIMESTAMP_SUB(as_of_record_time, INTERVAL 24 HOUR)),
655+ as_of_record_time,
656+ migration_id).minPrice
657+ AS daily_min_coin_price,
658+ \`$$FUNCTIONS_DATASET$$.coin_price\`(
659+ TIMESTAMP_SUB(as_of_record_time, INTERVAL 24 HOUR),
660+ \`$$FUNCTIONS_DATASET$$.migration_id_at_time\`(TIMESTAMP_SUB(as_of_record_time, INTERVAL 24 HOUR)),
661+ as_of_record_time,
662+ migration_id).maxPrice
663+ AS daily_max_coin_price,
664+ \`$$FUNCTIONS_DATASET$$.coin_price\`(
665+ TIMESTAMP_SUB(as_of_record_time, INTERVAL 24 HOUR),
666+ \`$$FUNCTIONS_DATASET$$.migration_id_at_time\`(TIMESTAMP_SUB(as_of_record_time, INTERVAL 24 HOUR)),
667+ as_of_record_time,
668+ migration_id).avgPrice
669+ AS daily_avg_coin_price
623670 `
624671) ;
625672
@@ -672,6 +719,9 @@ const days_with_missing_stats = new BQTableFunction(
672719 AND num_active_validators IS NOT NULL
673720 AND average_tps IS NOT NULL
674721 AND peak_tps IS NOT NULL
722+ AND daily_min_coin_price IS NOT NULL
723+ AND daily_max_coin_price IS NOT NULL
724+ AND daily_avg_coin_price IS NOT NULL
675725 `
676726) ;
677727
@@ -716,6 +766,7 @@ export const allScanFunctions = [
716766 one_day_updates ,
717767 average_tps ,
718768 peak_tps ,
769+ coin_price ,
719770 all_stats ,
720771] ;
721772
0 commit comments