2026幎ç ããŒã¿ã¢ããªã¹ãã®ããã®dbtå ¥éïŒã¢ããªã³ã°ããã¹ãã颿¥å¯Ÿç
dbtã®ãããžã§ã¯ãæ§é ããããªã¢ã©ã€ãŒãŒã·ã§ã³æŠç¥ãããŒã¿å質ãã¹ããJinjaãã¯ãããããŠ2026å¹Žã®æè¡é¢æ¥ã§ããåããã質åãç¶²çŸ çã«è§£èª¬ããŸãã

2026幎çŸåšãdbtïŒdata build toolïŒã¯ããŒã¿ã¢ããªã¹ãã«ãšã£ãŠå¿ é ã®ã¹ãã«ãšãªã£ãŠããŸããããŒã¿ãŠã§ã¢ããŠã¹å ã§ã®SQL倿ã管çããããŒã¿å質ãä¿èšŒããåæã¯ãŒã¯ãããŒãæšæºåããããŒã«ãšããŠãdbtã¯çŸä»£ã®ããŒã¿ããŒã ã«ãããŠäžå¿çãªåœ¹å²ãæãããŠããŸããdbt Core v2.0ã®ã¢ã«ãã¡çãç»å Žããv1.12ãå®å®çãšããŠåºãæ¡çšãããäžãããŒã¿ã¢ããªã¹ãã¯åŸæ¥ã®ã¢ãããã¯ãªSQLã¯ãšãªããããã¹ãå¯èœã§ããŒãžã§ã³ç®¡çãããããŒã¿ã¢ããªã³ã°ãžãšç§»è¡ããŠããŸããæ¬èšäºã§ã¯ãdbtãããžã§ã¯ãã®æ§é ããããªã¢ã©ã€ãŒãŒã·ã§ã³æŠç¥ãããŒã¿å質ãã¹ãããããŠ2026å¹Žã®æè¡é¢æ¥ã§ããåããã質åã«ã€ããŠè©³ãã解説ããŸãã
dbtã¯ãELTãã€ãã©ã€ã³ã«ããããTïŒTransformïŒãã®éšåãæ åœããŸããããŒã¿ã¯ãã§ã«ãŠã§ã¢ããŠã¹ïŒSnowflakeãBigQueryãRedshiftãªã©ïŒã«æœåºã»ããŒããããŠãããdbtã¯SQLã䜿çšããŠãããã®çããŒã¿ãåæå¯èœãªããŒãã«ããã¥ãŒã«å€æããŸããdbtã®æå€§ã®åŒ·ã¿ã¯ããœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ã®ãã¹ããã©ã¯ãã£ã¹ïŒããŒãžã§ã³ç®¡çããã¹ããããã¥ã¡ã³ãåãã¢ãžã¥ãŒã«æ§ïŒãããŒã¿å€æã«é©çšã§ããç¹ã«ãããŸãã
dbtãããžã§ã¯ãã®æ§é ïŒã¹ããŒãžã³ã°å±€ããããŒãå±€ãŸã§
dbtãããžã§ã¯ãã¯éåžžã3ã€ã®äž»èŠãªå±€ã§æ§æãããŸãã**ã¹ããŒãžã³ã°å±€ïŒstagingïŒ**ã§ã¯çããŒã¿ãã¯ãªãŒãã³ã°ãã**äžéå±€ïŒintermediateïŒ**ã§ã¯ããžãã¹ããžãã¯ãé©çšãã**ããŒãå±€ïŒmartsïŒ**ã§ã¯æçµçãªåæçšããŒãã«ãäœæããŸãããã®éå±€æ§é ã«ãããããŒã¿å€æã®åã¹ããããæç¢ºã«ãªããä¿å®æ§ãå€§å¹ ã«åäžããŸãã
ã¹ããŒãžã³ã°å±€ã§ã¯ããœãŒã¹ã·ã¹ãã ããã®çããŒã¿ã1察1ã§ã¯ãªãŒãã³ã°ããŸãã以äžã¯Stripeã®æ±ºæžããŒã¿ãã¹ããŒãžã³ã°ããäŸã§ãã
-- models/staging/stripe/stg_stripe__payments.sql
with source as (
select * from {{ source('stripe', 'payments') }}
),
renamed as (
select
id as payment_id,
amount / 100.0 as amount_usd, -- Stripe stores cents
status as payment_status,
created::timestamp as created_at,
customer_id
from source
where status != 'failed' -- Filter invalid records early
)
select * from renamedãã®ã¹ããŒãžã³ã°ã¢ãã«ã§ã¯ãã«ã©ã åãæšæºåããããŒã¿åãçµ±äžããç¡å¹ãªã¬ã³ãŒããæ©æã«é€å€ããŠããŸãã{{ source() }}颿°ã䜿çšããããšã§ãçããŒã¿ãžã®åç
§ãæç€ºçã«ç®¡çã§ããŸãã
ããŒãå±€ã§ã¯ãè€æ°ã®ã¹ããŒãžã³ã°ã¢ãã«ãçµã¿åãããŠãããžãã¹äžã®è³ªåã«çããããã®ããŒãã«ãäœæããŸãã
-- models/marts/finance/fct_monthly_revenue.sql
with payments as (
select * from {{ ref('stg_stripe__payments') }}
),
monthly as (
select
date_trunc('month', created_at) as revenue_month,
count(*) as total_transactions,
sum(amount_usd) as gross_revenue,
sum(case when payment_status = 'refunded' then amount_usd else 0 end) as refunds
from payments
group by 1
)
select
revenue_month,
total_transactions,
gross_revenue,
refunds,
gross_revenue - refunds as net_revenue -- Key business metric
from monthly{{ ref() }}颿°ã䜿çšããããšã§ãã¢ãã«éã®äŸåé¢ä¿ãdbtãèªåçã«è¿œè·¡ããæ£ããé åºã§ã¢ãã«ãæ§ç¯ããŸããããã«ãããããŒã¿ãã€ãã©ã€ã³ã®å®è¡é åºãæåã§ç®¡çããå¿
èŠããªããªããŸãã
ãããªã¢ã©ã€ãŒãŒã·ã§ã³æŠç¥ïŒé©åãªæ¹æ³ã®éžæ
dbtã§ã¯ãã¢ãã«ã4ã€ã®ç°ãªãæ¹æ³ã§ãããªã¢ã©ã€ãºïŒå®äœåïŒã§ããŸããããããã«é©åãªãŠãŒã¹ã±ãŒã¹ããããŸãã
| ãããªã¢ã©ã€ãŒãŒã·ã§ã³ | æ§ç¯æ¹æ³ | é©åãªã±ãŒã¹ | ããã©ãŒãã³ã¹ |
|---|---|---|---|
| view | CREATE VIEW | å°èŠæš¡ãªããŒã¿ã»ãããåžžã«ææ°ãå¿
èŠ | ã¯ãšãªæã«èšç® |
| table | CREATE TABLE | äžèŠæš¡ããŒã¿ãé«éã¯ãšãªãå¿
èŠ | é«éã ãå
šåæ§ç¯ |
| incremental | INSERT/MERGE | å€§èŠæš¡ããŒã¿ãå±¥æŽä¿æ | æ°èŠããŒã¿ã®ã¿åŠç |
| ephemeral | CTE | äžéèšç®ãç©çããŒãã«äžèŠ | äŸåã¢ãã«ã«åã蟌㿠|
å€§èŠæš¡ãªã€ãã³ãããŒã¿ãæ±ãå Žåãincrementalãããªã¢ã©ã€ãŒãŒã·ã§ã³ãæãå¹ççã§ãã
-- models/marts/product/fct_page_views.sql
{{ config(
materialized='incremental',
unique_key='page_view_id',
incremental_strategy='merge'
) }}
with events as (
select
event_id as page_view_id,
user_id,
page_url,
session_id,
event_timestamp
from {{ ref('stg_snowplow__events') }}
where event_type = 'page_view'
{% if is_incremental() %}
-- Only process new events since last run
and event_timestamp > (select max(event_timestamp) from {{ this }})
{% endif %}
)
select * from events{% if is_incremental() %}ãããã¯ã«ãããååå®è¡æã¯å
šããŒã¿ãåŠçãããã®åŸã®å®è¡ã§ã¯æ°ããã€ãã³ãã®ã¿ãåŠçããŸããããã«ãããæ°çŸäžè¡ã®ããŒãã«ã§ãå¹ççã«æŽæ°ã§ããŸãã
ããŒã¿å質ã®ãã¹ãïŒä¿¡é Œæ§ã®ä¿èšŒ
dbtã®æã匷åãªæ©èœã®1ã€ããçµã¿èŸŒã¿ã®ãã¹ãæ©èœã§ããããŒã¿ã¢ããªã¹ãã¯ãããŒã¿ãã€ãã©ã€ã³ãæåŸ éãã«åäœããŠããããšãç¶ç¶çã«æ€èšŒã§ããŸãã
dbtã«ã¯4ã€ã®çµã¿èŸŒã¿ãã¹ãïŒuniqueãnot_nullãaccepted_valuesãrelationshipsïŒããããYAMLãã¡ã€ã«ã§ç°¡åã«å®çŸ©ã§ããŸãã
# models/staging/stripe/_stripe__models.yml
version: 2
models:
- name: stg_stripe__payments
description: "Cleaned payment records from Stripe"
columns:
- name: payment_id
description: "Unique payment identifier"
tests:
- unique
- not_null
- name: payment_status
tests:
- accepted_values:
values: ['succeeded', 'pending', 'refunded']
- name: amount_usd
tests:
- not_null
- dbt_utils.expression_is_true:
expression: ">= 0" # No negative paymentsãããã®ãã¹ãã¯dbt testã³ãã³ãã§å®è¡ãããããŒã¿ã®æŽåæ§ãèªåçã«æ€èšŒããŸãããã¹ãã倱æããå ŽåãããŒã¿ãã€ãã©ã€ã³ã忢ãããããšã§ãäžæµã®åæã«èª€ã£ãããŒã¿ãæµããã®ãé²ããŸãã
ããè€éãªããžãã¹ã«ãŒã«ã«ã¯ãã«ã¹ã¿ã ãã¹ããäœæã§ããŸãã
-- tests/assert_revenue_not_negative.sql
-- This test fails if any month has negative net revenue
select
revenue_month,
net_revenue
from {{ ref('fct_monthly_revenue') }}
where net_revenue < 0 -- Should never happenãã®ãã¹ãã¯ãçŽåçãè² ã«ãªãæãååšããå Žåã«å€±æããŸããããžãã¹ããžãã¯ã®ãšã©ãŒãäžæµããŒã¿ã®åé¡ãæ©æã«æ€åºã§ããŸãã
Data Analyticsã®é¢æ¥å¯Ÿçã¯ã§ããŠããŸããïŒ
ã€ã³ã¿ã©ã¯ãã£ããªã·ãã¥ã¬ãŒã¿ãŒãflashcardsãæè¡ãã¹ãã§ç·Žç¿ããŸãããã
Jinjaãšãã¯ãïŒã³ãŒãã®åå©çšæ§
dbtã¯Jinjaãã³ãã¬ãŒãèšèªã䜿çšããŠãããSQLã³ãŒããåçã«çæã§ããŸããç¹°ãè¿ãããžãã¯ããã¯ããšããŠæœåºããããšã§ãã³ãŒãã®ä¿å®æ§ãåäžããŸãã
äŸãã°ãStripeã¯ã»ã³ãåäœã§éé¡ãä¿åããŠãããããå€ãã®ã¢ãã«ã§åã倿ããžãã¯ãå¿ èŠã«ãªããŸãã
-- macros/cents_to_dollars.sql
{% macro cents_to_dollars(column_name) %}
({{ column_name }} / 100.0)::numeric(12, 2)
{% endmacro %}ãã®ãã¯ãã¯ä»»æã®ã¢ãã«ã§åå©çšã§ããŸãã
-- Usage in any model
select
payment_id,
{{ cents_to_dollars('amount_cents') }} as amount_usd,
{{ cents_to_dollars('tax_cents') }} as tax_usd
from {{ source('stripe', 'payments') }}Jinjaã®æ¡ä»¶åå²ã䜿çšããããšã§ãç°å¢ïŒéçº/æ¬çªïŒã«å¿ããŠç°ãªãããžãã¯ãé©çšããããšãã§ããŸããããã«ãããæ¬çªç°å¢ã§ã¯å®å šãªããŒã¿ã»ãããåŠçããéçºç°å¢ã§ã¯ãµã³ãã«ããŒã¿ã®ã¿ãåŠçãããšãã£ãæé©åãå¯èœã«ãªããŸãã
dbt颿¥è³ªåïŒããŒã¿ã¢ããªã¹ããç¥ã£ãŠããã¹ãããš
2026幎ã®ããŒã¿ã¢ããªã¹ã颿¥ã§ã¯ãdbtã®å®è·µçãªç¥èãé »ç¹ã«è©äŸ¡ãããŸãã以äžã¯ãããåºé¡ããã質åãšãã®åçã§ãã
Q1: {{ ref() }}ãš{{ source() }}ã®éãã¯äœã§ãããããããããã€äœ¿çšããŸããã
{{ source() }}ã¯ãdbtãããžã§ã¯ãå€ã®çããŒã¿ããŒãã«ãåç
§ããéã«äœ¿çšããŸãããããã¯ãŠã§ã¢ããŠã¹ã«çŽæ¥ããŒããããããŒãã«ã§ãéåžžã¯ã¹ããŒãžã³ã°å±€ã§ã®ã¿äœ¿çšããŸããäžæ¹ã{{ ref() }}ã¯ãdbtã§æ§ç¯ãããä»ã®ã¢ãã«ãåç
§ããŸããref()ã䜿çšããããšã§ãdbtã¯ã¢ãã«éã®äŸåé¢ä¿ã°ã©ããæ§ç¯ããæ£ããé åºã§å®è¡ã§ããŸãããŸããç°å¢éïŒdev/prodïŒã§èªåçã«ã¹ããŒããåãæ¿ããæ©èœãæäŸããŸãããã¹ããã©ã¯ãã£ã¹ãšããŠãã¹ããŒãžã³ã°å±€ã§ã¯source()ã䜿çšãããã以éã®å±€ã§ã¯ref()ã®ã¿ã䜿çšããŸãã
Q2: incremental ã¢ãã«ããã€äœ¿çšãã¹ãã§ãããéåžžã®tableãããªã¢ã©ã€ãŒãŒã·ã§ã³ãšæ¯èŒããå©ç¹ã¯äœã§ããã
incrementalã¢ãã«ã¯ãå€§èŠæš¡ãªããŒã¿ã»ããïŒéåžžã¯æ°çŸäžè¡ä»¥äžïŒã§ãå±¥æŽããŒã¿ãä¿æããå¿ èŠãããå Žåã«äœ¿çšããŸããå žåçãªäŸã¯ãã€ãã³ããã°ãã¯ãªãã¯ã¹ããªãŒã ããŒã¿ãIoTã»ã³ãµãŒããŒã¿ãªã©ã§ããéåžžã®tableãããªã¢ã©ã€ãŒãŒã·ã§ã³ã¯æ¯åå šããŒã¿ãåæ§ç¯ããŸãããincrementalã¢ãã«ã¯ååå®è¡ä»¥éã®æ°ããã¬ã³ãŒãã®ã¿ãåŠçããŸããããã«ãããå®è¡æéãšãŠã§ã¢ããŠã¹ã³ã¹ããå€§å¹ ã«åæžã§ããŸãããã ããincrementalã¢ãã«ã¯ããžãã¯ãè€éã«ãªããããå°èŠæš¡ãªããŒãã«ïŒ1æ¥ã§åæ§ç¯ã§ããïŒã«ã¯tableãããªã¢ã©ã€ãŒãŒã·ã§ã³ã䜿çšããæ¹ãä¿å®æ§ãé«ããªããŸãã
Q3: SCD Type 2ïŒç·©ããã«å€åãããã£ã¡ã³ã·ã§ã³ ã¿ã€ã2ïŒãdbtã§ã©ã®ããã«å®è£ ããŸããã
SCD Type 2ã¯ããã£ã¡ã³ã·ã§ã³ããŒãã«ã®å±¥æŽå€æŽã远跡ããææ³ã§ããdbtã§ã¯ãdbt_utilsããã±ãŒãžã®snapshotæ©èœã䜿çšããŠå®è£
ããŸããã¹ãããã·ã§ããã¯ããœãŒã¹ããŒãã«ã®å€æŽãæ€åºããvalid_fromãšvalid_toã®ã¿ã€ã ã¹ã¿ã³ããèªåçã«ç®¡çããŸããäŸãã°ã顧客ã®äœæå€æŽã远跡ããå Žåãdbt snapshotã³ãã³ããå®è¡ãããã³ã«ã倿Žãããé¡§å®¢ã®æ°ããã¬ã³ãŒããäœæãããå€ãã¬ã³ãŒãã«ã¯çµäºæ¥ãèšå®ãããŸããããã«ãããç¹å®æç¹ã§ã®é¡§å®¢æ
å ±ãæ£ç¢ºã«åçŸã§ããŸããã¹ãããã·ã§ããã¯incrementalã¢ãã«ãšã¯ç°ãªããmodels/ã§ã¯ãªãsnapshots/ãã£ã¬ã¯ããªã«é
眮ããŸãã
Q4: stagingãintermediateãmartsã®åå±€ã®ç®çã説æããŠãã ããã
stagingå±€ã¯ãçããŒã¿ã1察1ã§ã¯ãªãŒãã³ã°ããæšæºåããŸããã«ã©ã åã®å€æŽãããŒã¿åã®çµ±äžãç¡å¹ã¬ã³ãŒãã®é€å€ãè¡ããŸãããããžãã¹ããžãã¯ã¯å«ã¿ãŸãããåã¹ããŒãžã³ã°ã¢ãã«ã¯1ã€ã®ãœãŒã¹ããŒãã«ã«å¯Ÿå¿ããŸããintermediateå±€ã¯ãè€æ°ã®ã¹ããŒãžã³ã°ã¢ãã«ãçµåããåå©çšå¯èœãªããžãã¹ããžãã¯ãé©çšããŸãããã®å±€ã¯ãªãã·ã§ã³ã§ãããè€éãªå€æãåå²ããããšã§ããŒãå±€ãã·ã³ãã«ã«ä¿ãŠãŸããmartså±€ã¯ãç¹å®ã®ããžãã¹éšéïŒfinanceãmarketingãproductïŒåãã®æçµçãªåæçšããŒãã«ãæäŸããŸãããããã¯ãã¡ã¯ãããŒãã«ããã£ã¡ã³ã·ã§ã³ããŒãã«ãšããŠèšèšãããBIããŒã«ããçŽæ¥ã¯ãšãªãããŸãããã®éå±€åã«ãããåå±€ãæç¢ºãªè²¬ä»»ãæã¡ã倿Žã®åœ±é¿ç¯å²ãéå®ãããŸãã
Q5: ã«ã¹ã¿ã ãã¹ããšã¹ããŒããã¹ãã®éãã¯äœã§ãããããããããã€äœ¿çšããŸããã
ã¹ããŒããã¹ãã¯ãYAMLãã¡ã€ã«ã§å®çŸ©ãããç°¡æœãªãã¹ãã§ãåäžã«ã©ã ãŸãã¯ã¢ãã«ã¬ãã«ã®æ€èšŒã«äœ¿çšããŸããçµã¿èŸŒã¿ãã¹ãïŒuniqueãnot_nullãaccepted_valuesãrelationshipsïŒãdbt_utilsããã±ãŒãžã®ãã¹ãã該åœããŸããèšå®ãç°¡åã§ãããã¥ã¡ã³ããšäžç·ã«ç®¡çã§ããå©ç¹ããããŸããäžæ¹ãã«ã¹ã¿ã ãã¹ãã¯ãtests/ãã£ã¬ã¯ããªã«SQLãã¡ã€ã«ãšããŠäœæãããè€éãªããžãã¹ã«ãŒã«ã®æ€èšŒã«äœ¿çšããŸããäŸãã°ããææ¬¡åçãè² ã«ãªããªããã顧客ã®åå賌å
¥æ¥ãç»é²æ¥ããåã«ãªããªãããæéã¢ã¯ãã£ããŠãŒã¶ãŒæ°ãåææ¯ã§90%ä»¥äžæžå°ããªãããšãã£ãè€æ°ã«ã©ã ãããŒãã«ã«ãŸãããæ€èšŒãå¿
èŠãªå Žåã«æå¹ã§ããäžè¬çã«ãåçŽãªæ€èšŒã«ã¯ã¹ããŒããã¹ããè€éãªããžãã¹ããžãã¯ã«ã¯ã«ã¹ã¿ã ãã¹ãã䜿çšããŸãã
æ¬çªç°å¢ã§ã®dbtãã¹ããã©ã¯ãã£ã¹
dbtãæ¬çªç°å¢ã§éçšããéã¯ãããŒã¿ã®é®®åºŠç£èŠãããã¥ã¡ã³ãçæãCI/CDãã€ãã©ã€ã³ã®çµ±åãéèŠã§ãã
ããŒã¿ã®é®®åºŠãç£èŠããã«ã¯ããœãŒã¹å®çŸ©ã«freshnessãã§ãã¯ã远å ããŸãã
# models/staging/stripe/_stripe__sources.yml
version: 2
sources:
- name: stripe
database: raw
schema: stripe
freshness:
warn_after: {count: 12, period: hour}
error_after: {count: 24, period: hour}
loaded_at_field: _fivetran_synced
tables:
- name: payments
- name: customersdbt source freshnessã³ãã³ãã宿çã«å®è¡ããããšã§ãäžæµã®ETLãã€ãã©ã€ã³ã®åé¡ãæ©æã«æ€åºã§ããŸããããŒã¿ã12æéä»¥äžæŽæ°ãããŠããªãå Žåã¯èŠåã24æé以äžã®å Žåã¯ãšã©ãŒãšããŠæ±ããŸãã
ãŸããdbtãããžã§ã¯ããããŒã¿ãšã³ãžãã¢ãªã³ã°ã®ä»ã®ããŒã«ãšçµ±åããããšã§ãå æ¬çãªããŒã¿ãã©ãããã©ãŒã ãæ§ç¯ã§ããŸããããŒã¿åæã®å®åã§ã¯ãdbtã§æ§ç¯ããã¢ãã«ãåºã«ãBIããŒã«ã§ããã·ã¥ããŒããäœæããããæ©æ¢°åŠç¿ã¢ãã«ã®ç¹åŸŽéãšããŠå©çšãããããŸãã
SQLãŠã£ã³ããŠé¢æ°ãšCTEã®ç¥èã¯ãdbtã¢ãã«ãå¹ççã«èšèšããäžã§äžå¯æ¬ ã§ãããŸããããŒã¿ã¢ããªã¹ã颿¥åãã®é«åºŠãªSQLã®ã¹ãã«ã¯ãè€éãªããžãã¹ããžãã¯ãdbtã§å®è£ ããéã«åœ¹ç«ã¡ãŸãã
æ¬çªç°å¢ã§ã¯ãdbtãããžã§ã¯ããGitã§ããŒãžã§ã³ç®¡çãããã«ãªã¯ãšã¹ãããšã«dbt testãå®è¡ããCI/CDãã€ãã©ã€ã³ãæ§ç¯ããããšãæšå¥šãããŸããdbt Cloudã䜿çšãããšãã¹ã±ãžã¥ãŒã«å®è¡ããžã§ãç£èŠãç³»èã°ã©ãã®å¯èŠåãç°¡åã«å®çŸã§ããŸãããªã³ãã¬ãã¹ç°å¢ã§ã¯ãAirflowãPrefectãDagsterãªã©ã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ããŒã«ãšdbtãçµ±åããŸãã
ä»ããç·Žç¿ãå§ããŸãããïŒ
颿¥ã·ãã¥ã¬ãŒã¿ãŒãšæè¡ãã¹ãã§ç¥èããã¹ãããŸãããã
ãŸãšãïŒdbtã§ããŒã¿åæã次ã®ã¬ãã«ãž
dbtã¯ãããŒã¿ã¢ããªã¹ãããœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ã®ãã¹ããã©ã¯ãã£ã¹ãæ¡çšããä¿¡é Œæ§ã®é«ãããŒã¿ãã€ãã©ã€ã³ãæ§ç¯ããããã®åŒ·åãªããŒã«ã§ãã2026幎ã®çŸåšãdbtã®ã¹ãã«ã¯ããŒã¿ã¢ããªã¹ãã®æ±äººã«ãããŠæšæºçãªèŠä»¶ãšãªã£ãŠããŸãã
æ¬èšäºã§åŠãã äž»èŠãªãã€ã³ãïŒ
- éå±€æ§é : staging/intermediate/martsã®3å±€ã§ãããžã§ã¯ããæŽçããåå±€ã«æç¢ºãªè²¬ä»»ãæããã
- ãããªã¢ã©ã€ãŒãŒã·ã§ã³æŠç¥: ããŒã¿ãµã€ãºãšã¯ãšãªãã¿ãŒã³ã«å¿ããŠãviewãtableãincrementalãephemeralãé©åã«éžæãã
- ããŒã¿å質ãã¹ã: ã¹ããŒããã¹ããšã«ã¹ã¿ã ãã¹ããçµã¿åãããããŒã¿ã®æŽåæ§ãç¶ç¶çã«æ€èšŒãã
- Jinjaãšãã¯ã: ç¹°ãè¿ãããžãã¯ãåå©çšå¯èœãªãã¯ããšããŠæœåºããã³ãŒãã®ä¿å®æ§ãåäžããã
- æ¬çªéçš: 鮮床ç£èŠãããã¥ã¡ã³ãçæãCI/CDçµ±åã«ãããä¿¡é Œæ§ã®é«ãããŒã¿ãã©ãããã©ãŒã ãæ§ç¯ãã
dbtã®å®è·µçãªã¹ãã«ãç¿åŸããããšã§ãããŒã¿ã¢ããªã¹ãã¯ã¢ãããã¯ãªSQLã¯ãšãªããè±åŽããã¹ã±ãŒã©ãã«ã§ä¿å®å¯èœãªããŒã¿ã¢ããªã³ã°ãå®çŸã§ããŸãã颿¥å¯ŸçãšããŠããdbtã®æŠå¿µãšãã¹ããã©ã¯ãã£ã¹ãæ·±ãçè§£ããããšãã2026幎ã®ããŒã¿ã¢ããªã¹ãè·ã«ãããŠéèŠãªå·®å¥åèŠå ãšãªããŸãã
ä»ããç·Žç¿ãå§ããŸãããïŒ
颿¥ã·ãã¥ã¬ãŒã¿ãŒãšæè¡ãã¹ãã§ç¥èããã¹ãããŸãããã
ã¿ã°
å ±æ
é¢é£èšäº

ããŒã¿ã¢ããªã¹ãã®ããã®SQLïŒãŠã£ã³ããŠé¢æ°ãCTEãé«åºŠãªã¯ãšãªææ³
SQLã®ãŠã£ã³ããŠé¢æ°ãCTEïŒå ±éããŒãã«åŒïŒãé«åºŠãªåæã¯ãšãªãã³ãŒãäŸä»ãã§è§£èª¬ãããŒã¿ã¢ããªã¹ã颿¥å¯Ÿçãšå®åã«çŽçµããå¿ é ãã¯ããã¯ã

2026幎ç ããŒã¿ã¢ããªãã£ã¯ã¹é¢æ¥è³ªåããã25
2026幎ã®ããŒã¿ã¢ããªãã£ã¯ã¹é¢æ¥å¯Ÿçã¬ã€ããSQLãPythonãPower BIãçµ±èšãè¡å颿¥ã®é »åºè³ªå25åãã³ãŒãäŸä»ãã§åŸ¹åºè§£èª¬ããŸãã

Pandas 3.0ïŒ2026幎çïŒïŒæ°APIãç Žå£ç倿Žã颿¥å¯Ÿçã®å®å šã¬ã€ã
Pandas 3.0ã®Copy-on-WriteãPyArrowæååããã¯ãšã³ããpd.col()åŒãã«ããŒãªã©ã®æ°æ©èœã培åºè§£èª¬ãããŒã¿åæãšã³ãžãã¢ã®é¢æ¥ã§åããããã€ã³ããç¶²çŸ ã