SIM_SESSION_EVENTS
SIM session lifecycle events such as creation and deletion.
Public Contract
- Rows are limited to the current SORACOM Query request context.
- Rows are limited to the time range selected for the SORACOM Query request.
- The request time range is applied to
EVENT_TIME.
Data Freshness
Updated multiple times per day.
Columns
| Column | Type | Description |
|---|---|---|
| APN | TEXT | Access Point Name used by the session. |
| CREATED_TIME | TIMESTAMP_NTZ | Record creation time. |
| EVENT_TIME | TIMESTAMP_NTZ | When the event occurred. |
| DNS0 | TEXT | Primary DNS server. |
| DNS1 | TEXT | Secondary DNS server. |
| EVENT | TEXT | Event type. |
| HPLMN | TEXT | Home PLMN. |
| ICCID | TEXT | SIM card identifier. |
| IMEI | TEXT | Device IMEI. |
| IMSI | TEXT | IMSI used by the session. |
| LAST_MODIFIED_TIME | TIMESTAMP_NTZ | Last modification time. |
| CELL | OBJECT | Cell tower attributes reported with the event. |
| MSISDN | TEXT | Phone number associated with the SIM when available. |
| OPERATOR_ID | TEXT | Operator identifier associated with the row. |
| PLACEMENT | TEXT | Placement information. |
| PRIMARY_IMSI | TEXT | Primary IMSI for multi-IMSI SIMs. |
| SESSION_ID | TEXT | Session identifier. |
| SIM_ID | TEXT | SIM identifier. |
| SPEED_CLASS | TEXT | Connection speed class. |
| SUBSCRIPTION | TEXT | Subscription plan code. |
| TIME | NUMBER | Event time as a Unix timestamp in milliseconds. |
| UE_IP_ADDRESS | TEXT | User equipment IP address. |
| VPLMN | TEXT | Visited PLMN. |
JSON / VARIANT Fields
CELL contains cell information reported with a session event. Common fields include:
| Field | Type | Description |
|---|---|---|
mcc |
number | Mobile Country Code; join with NETWORKS and CELL_TOWERS. |
mnc |
number | Mobile Network Code; join with NETWORKS and CELL_TOWERS. |
eci |
number | E-UTRAN Cell Identifier when available. |
lac |
number | Location Area Code when available. |
rac |
number | Routing Area Code when available. |
radioType |
string | Radio technology. |
tac |
number | Tracking Area Code when available. |
Use CELL:mcc with NETWORKS.MCC to retrieve country information. Use CELL:mcc and CELL:mnc together when network operator or cell tower context is required.
Common Queries
Recent session event counts by SIM:
SELECT
SIM_ID,
COUNT(*) AS events,
COUNT_IF(EVENT = 'Created') AS created_events,
COUNT_IF(EVENT = 'Modified') AS modified_events,
COUNT_IF(EVENT = 'Deleted') AS deleted_events
FROM SIM_SESSION_EVENTS
GROUP BY SIM_ID
ORDER BY events DESC
LIMIT 100;
When users ask for SIM information by country, join NETWORKS to retrieve MCC and MNC data by country name. Use NETWORKS.ORGNAME when users ask for network operator names. A SIM can have multiple sessions in a requested period, so use DISTINCT SIM_ID for SIM activity counts.
SIMs with activity in a country during the request time range:
SELECT DISTINCT
se.SIM_ID,
se.CELL:mcc::STRING AS mcc,
se.CELL:mnc::STRING AS mnc
FROM SIM_SESSION_EVENTS se
WHERE se.CELL:mcc::STRING IN (
SELECT MCC
FROM NETWORKS
WHERE COUNTRYNAME = 'Japan'
);
Latest country observed for each SIM from recent events. The mcc_country CTE deduplicates country rows per MCC to avoid join fan-out:
WITH recent_events AS (
SELECT
SIM_ID,
IMSI,
EVENT,
EVENT_TIME,
CELL:mcc::STRING AS mcc,
ROW_NUMBER() OVER (
PARTITION BY SIM_ID
ORDER BY EVENT_TIME DESC
) AS rn
FROM SIM_SESSION_EVENTS
WHERE EVENT_TIME >= DATEADD(hour, -168, CURRENT_TIMESTAMP())
),
latest AS (
SELECT
SIM_ID,
IMSI,
EVENT AS most_recent_event,
EVENT_TIME AS most_recent_event_time,
mcc
FROM recent_events
WHERE rn = 1
),
mcc_country AS (
SELECT
MCC,
ANY_VALUE(COUNTRYNAME) AS country
FROM NETWORKS
GROUP BY MCC
)
SELECT
l.SIM_ID,
l.IMSI,
t.VALUE AS display_name,
l.most_recent_event,
l.most_recent_event_time,
mc.country
FROM latest l
LEFT JOIN mcc_country mc
ON mc.MCC = l.mcc
LEFT JOIN TAGS t
ON l.IMSI = t.RESOURCE_ID
AND t.RESOURCE_TYPE = 'subscriber'
AND t.NAME = 'name'
ORDER BY l.most_recent_event_time DESC;
A SIM may be online without a recent session event. For "currently online or recently active in a country" questions, combine recent SIM_SESSION_EVENTS rows with currently online SIM_SNAPSHOTS rows:
WITH mccs AS (
SELECT MCC
FROM NETWORKS
WHERE COUNTRYNAME = 'Japan'
),
combined_online_sims AS (
SELECT SIM_ID
FROM SIM_SESSION_EVENTS se
WHERE se.EVENT_TIME >= DATEADD(day, -7, CURRENT_DATE())
AND se.CELL:mcc::STRING IN (SELECT MCC FROM mccs)
UNION
SELECT SIM_ID
FROM SIM_SNAPSHOTS ss
WHERE ss.SESSION_STATUS:online = 1
AND ss.SESSION_STATUS:cell:mcc::STRING IN (SELECT MCC FROM mccs)
)
SELECT COUNT(DISTINCT SIM_ID) AS sim_count
FROM combined_online_sims;
Break down recent or currently online SIMs by PLMN:
WITH mccs AS (
SELECT MCC
FROM NETWORKS
WHERE COUNTRYNAME = 'Japan'
),
combined_online_sims AS (
SELECT
SIM_ID,
CELL:mcc::STRING AS mcc,
CELL:mnc::STRING AS mnc
FROM SIM_SESSION_EVENTS se
WHERE se.EVENT_TIME >= DATEADD(day, -7, CURRENT_DATE())
AND CELL:mcc::STRING IN (SELECT MCC FROM mccs)
UNION
SELECT
SIM_ID,
SESSION_STATUS:cell:mcc::STRING AS mcc,
SESSION_STATUS:cell:mnc::STRING AS mnc
FROM SIM_SNAPSHOTS ss
WHERE ss.SESSION_STATUS:online = 1
AND ss.SESSION_STATUS:cell:mcc::STRING IN (SELECT MCC FROM mccs)
)
SELECT
COUNT(DISTINCT SIM_ID) AS sim_count,
CONCAT(mcc, mnc) AS plmn
FROM combined_online_sims
GROUP BY plmn
ORDER BY sim_count DESC;
Filter by network operator name using NETWORKS.ORGNAME:
WITH mccs AS (
SELECT MCC
FROM NETWORKS
WHERE COUNTRYNAME = 'Japan'
AND LOWER(ORGNAME) LIKE '%kddi%'
),
combined_online_sims AS (
SELECT
SIM_ID,
CELL:mcc::STRING AS mcc,
CELL:mnc::STRING AS mnc
FROM SIM_SESSION_EVENTS se
WHERE se.EVENT_TIME >= DATEADD(day, -7, CURRENT_DATE())
AND CELL:mcc::STRING IN (SELECT MCC FROM mccs)
UNION
SELECT
SIM_ID,
SESSION_STATUS:cell:mcc::STRING AS mcc,
SESSION_STATUS:cell:mnc::STRING AS mnc
FROM SIM_SNAPSHOTS ss
WHERE ss.SESSION_STATUS:online = 1
AND ss.SESSION_STATUS:cell:mcc::STRING IN (SELECT MCC FROM mccs)
)
SELECT
COUNT(DISTINCT SIM_ID) AS sim_count,
CONCAT(mcc, mnc) AS plmn
FROM combined_online_sims
GROUP BY plmn
ORDER BY sim_count DESC;