SQL 到带有子查询的 DAX
SQL to DAX with subquery
如何将以下 SQL 查询翻译成 DAX:
WITH SensorTimes As (
SELECT sensorID, MAX(timestamp) "LastReading"
FROM sensorTable
GROUP BY sensorID
)
SELECT s.sensorID,s.timestamp,s.sensorField1,s.sensorField2
FROM sensorTable s
INNER JOIN SensorTimes t on s.sensorID = t.sensorID and s.timestamp = t.LastReading
上下文
我需要检索每个传感器收集的最新值,因此:
我得到每个传感器的最新时间戳
我使用之前计算的时间戳加入我的 sensorTable
以下是我的处理方法。
创建一个日历 DateTable(您可以使用 CALENDAR
或 CALENDARAUTO
)来桥接您的两个表。
在时间戳列上关联表,如下所示:
您可以在 DateTable 上创建一个切片器来过滤您的日期范围。
在“行”字段中使用 SensorID
创建一个矩阵。
创建一个 LastReading
度量并将其放入值字段。
LastReading = MAX(SensorTable[TimeStamp])
- 创建任何需要的
SensorField
措施。例如,
Field1 =
VAR LastReading = [LastReading]
RETURN CALCULATE(MAX(SensorTable[SensorField1]),
SensorTimes[TimeStamp] = LastReading)
注意:您可能需要创建与 TimeStamp
相关的日期列以正确桥接表格。 (改为在 DateStamp
上创建关系。)
DateStamp = DATEVALUE(SensorTable[TimeStamp])
如何将以下 SQL 查询翻译成 DAX:
WITH SensorTimes As (
SELECT sensorID, MAX(timestamp) "LastReading"
FROM sensorTable
GROUP BY sensorID
)
SELECT s.sensorID,s.timestamp,s.sensorField1,s.sensorField2
FROM sensorTable s
INNER JOIN SensorTimes t on s.sensorID = t.sensorID and s.timestamp = t.LastReading
上下文 我需要检索每个传感器收集的最新值,因此:
我得到每个传感器的最新时间戳
我使用之前计算的时间戳加入我的 sensorTable
以下是我的处理方法。
创建一个日历 DateTable(您可以使用
CALENDAR
或CALENDARAUTO
)来桥接您的两个表。在时间戳列上关联表,如下所示:
您可以在 DateTable 上创建一个切片器来过滤您的日期范围。
在“行”字段中使用
SensorID
创建一个矩阵。创建一个
LastReading
度量并将其放入值字段。
LastReading = MAX(SensorTable[TimeStamp])
- 创建任何需要的
SensorField
措施。例如,
Field1 =
VAR LastReading = [LastReading]
RETURN CALCULATE(MAX(SensorTable[SensorField1]),
SensorTimes[TimeStamp] = LastReading)
注意:您可能需要创建与 TimeStamp
相关的日期列以正确桥接表格。 (改为在 DateStamp
上创建关系。)
DateStamp = DATEVALUE(SensorTable[TimeStamp])