在Analytics Query中使用多个分区键将数据存储在多个azure存储表中

时间:2016-05-26 10:03:22

标签: azure-table-storage azure-eventhub azure-stream-analytics

我有一个场景,我将两个事件数据发送到具有不同分区键/分区ID的事件中心。

现在在我的流分析中,我创建了两个带有相同连接字符串的输入别名(比如machine1input和machine2input)和两个不同的输出别名,但是这里每个输出别名指向单独的表存储。

现在我的事件数据是这样的。

{
  "MachineName": "M1",
  "Date": "2016-05-26T13:35:30.1557995+05:30"
}
{
  "MachineName": "M2",
  "Date": "2016-05-26T13:35:30.1557995+05:30"
}

在这里我发送MachineName-M1来分隔Partition 1和MachineName-M2来分隔Partition 2。

现在我有两个azure存储表说Machine1RecordMachine2Record。 现在我想在流分析查询窗口中编写查询,以便机器M1记录应该存储在Machine1Record表中,而机器M2记录应该作为数据自动存储在Machine2Record表中。

我尝试了很多查询来实现这一目标。

SELECT * INTO machine1output From machine1input PARTITION BY PartitionId where PartitionId = "1"
SELECT * INTO machine2output From machine2input PARTITION BY PartitionId where PartitionId = "2"
SELECT * INTO machine1output From machine1input where MachineName = "M1"
SELECT * INTO machine2output From machine2input where MachineName = "M2"

但他们都没有工作。请在此帮助。感谢。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您可以使用单个事件中心,作为流分析的两个独立输入。

您可以将事件中心的单个输入用于流分析作业。 然后,您可以按如下方式从输入流创建两个输出。

SELECT * 
INTO machine1output
FROM BothMachines
PARTITION BY MachineName 
WHERE MachineName = "M1"

SELECT * 
INTO machine2output
FROM BothMachines
PARTITION BY MachineName 
WHERE MachineName = "M2"

答案 1 :(得分:0)

嗨我解决了这个问题,我在这里做的唯一错误就是在where子句中用双引号传递M1和M2。我只是删除了双引号并使用了这样的单引号 -

SELECT * INTO machine1output From machine1input where  MachineName = 'M1'
SELECT * INTO machine2output From machine1input where  MachineName = 'M2'

现在它完美运作..